// Copyright 2021 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 * as Long from "long";
import {protobuf as $protobuf} from "google-gax";
/** Namespace google. */
export namespace google {

    /** Namespace ads. */
    namespace ads {

        /** Namespace googleads. */
        namespace googleads {

            /** Namespace v8. */
            namespace v8 {

                /** Namespace common. */
                namespace common {

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

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

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

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

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

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

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

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

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

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

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

                        /** AdTextAsset _text. */
                        public _text?: "text";

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

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

                        /**
                         * Encodes the specified AdTextAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IAdTextAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdTextAsset message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.AdTextAsset;

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

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

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

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

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

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

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

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

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

                        /** AdImageAsset _asset. */
                        public _asset?: "asset";

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

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

                        /**
                         * Encodes the specified AdImageAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IAdImageAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdImageAsset message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.AdImageAsset;

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

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

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

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

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

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

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

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

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

                        /** AdVideoAsset _asset. */
                        public _asset?: "asset";

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

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

                        /**
                         * Encodes the specified AdVideoAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IAdVideoAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdVideoAsset message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.AdVideoAsset;

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

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

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

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

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

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

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

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

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

                        /** AdMediaBundleAsset _asset. */
                        public _asset?: "asset";

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

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

                        /**
                         * Encodes the specified AdMediaBundleAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IAdMediaBundleAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdMediaBundleAsset message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.AdMediaBundleAsset;

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

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

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

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

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

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

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

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

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

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

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

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

                        /** AdAssetPolicySummary approval_status. */
                        public approval_status: (google.ads.googleads.v8.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|keyof typeof google.ads.googleads.v8.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.v8.common.IAdAssetPolicySummary): google.ads.googleads.v8.common.AdAssetPolicySummary;

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

                        /**
                         * Encodes the specified AdAssetPolicySummary message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IAdAssetPolicySummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdAssetPolicySummary message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.AdAssetPolicySummary;

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

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

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

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

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IPolicyViolationKey);

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

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

                        /** PolicyViolationKey _policy_name. */
                        public _policy_name?: "policy_name";

                        /** PolicyViolationKey _violating_text. */
                        public _violating_text?: "violating_text";

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

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

                        /**
                         * Encodes the specified PolicyViolationKey message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IPolicyViolationKey, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyViolationKey message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.PolicyViolationKey;

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

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

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

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

                    /** 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.v8.common.IPolicyViolationKey[]|null);
                    }

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

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

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

                        /** PolicyValidationParameter exempt_policy_violation_keys. */
                        public exempt_policy_violation_keys: google.ads.googleads.v8.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.v8.common.IPolicyValidationParameter): google.ads.googleads.v8.common.PolicyValidationParameter;

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

                        /**
                         * Encodes the specified PolicyValidationParameter message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IPolicyValidationParameter, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyValidationParameter message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.PolicyValidationParameter;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                        /** PolicyTopicEntry _topic. */
                        public _topic?: "topic";

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

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

                        /**
                         * Encodes the specified PolicyTopicEntry message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IPolicyTopicEntry, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyTopicEntry message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.PolicyTopicEntry;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                        /** PolicyTopicEvidence destination_not_working. */
                        public destination_not_working?: (google.ads.googleads.v8.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.v8.common.IPolicyTopicEvidence): google.ads.googleads.v8.common.PolicyTopicEvidence;

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

                        /**
                         * Encodes the specified PolicyTopicEvidence message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IPolicyTopicEvidence, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyTopicEvidence message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.PolicyTopicEvidence;

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

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

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

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

                    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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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.v8.common.PolicyTopicEvidence.ITextList): google.ads.googleads.v8.common.PolicyTopicEvidence.TextList;

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

                            /**
                             * Encodes the specified TextList message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.PolicyTopicEvidence.ITextList, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TextList message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.PolicyTopicEvidence.TextList;

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

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

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

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

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

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

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

                            /**
                             * Constructs a new WebsiteList.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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.v8.common.PolicyTopicEvidence.IWebsiteList): google.ads.googleads.v8.common.PolicyTopicEvidence.WebsiteList;

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

                            /**
                             * Encodes the specified WebsiteList message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.PolicyTopicEvidence.IWebsiteList, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a WebsiteList message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.PolicyTopicEvidence.WebsiteList;

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

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

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

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

                        /** 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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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.v8.common.PolicyTopicEvidence.IDestinationTextList): google.ads.googleads.v8.common.PolicyTopicEvidence.DestinationTextList;

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

                            /**
                             * Encodes the specified DestinationTextList message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.PolicyTopicEvidence.IDestinationTextList, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a DestinationTextList message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.PolicyTopicEvidence.DestinationTextList;

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

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

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

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

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

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

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

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

                            /** DestinationMismatch url_types. */
                            public url_types: google.ads.googleads.v8.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.v8.common.PolicyTopicEvidence.IDestinationMismatch): google.ads.googleads.v8.common.PolicyTopicEvidence.DestinationMismatch;

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

                            /**
                             * Encodes the specified DestinationMismatch message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.PolicyTopicEvidence.IDestinationMismatch, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a DestinationMismatch message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.PolicyTopicEvidence.DestinationMismatch;

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

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

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

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

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

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

                            /** DestinationNotWorking device */
                            device?: (google.ads.googleads.v8.enums.PolicyTopicEvidenceDestinationNotWorkingDeviceEnum.PolicyTopicEvidenceDestinationNotWorkingDevice|keyof typeof google.ads.googleads.v8.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.v8.enums.PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum.PolicyTopicEvidenceDestinationNotWorkingDnsErrorType|keyof typeof google.ads.googleads.v8.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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.common.PolicyTopicEvidence.IDestinationNotWorking);

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

                            /** DestinationNotWorking device. */
                            public device: (google.ads.googleads.v8.enums.PolicyTopicEvidenceDestinationNotWorkingDeviceEnum.PolicyTopicEvidenceDestinationNotWorkingDevice|keyof typeof google.ads.googleads.v8.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.v8.enums.PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum.PolicyTopicEvidenceDestinationNotWorkingDnsErrorType|keyof typeof google.ads.googleads.v8.enums.PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum.PolicyTopicEvidenceDestinationNotWorkingDnsErrorType|null);

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

                            /** DestinationNotWorking _expanded_url. */
                            public _expanded_url?: "expanded_url";

                            /** DestinationNotWorking _last_checked_date_time. */
                            public _last_checked_date_time?: "last_checked_date_time";

                            /** 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.v8.common.PolicyTopicEvidence.IDestinationNotWorking): google.ads.googleads.v8.common.PolicyTopicEvidence.DestinationNotWorking;

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

                            /**
                             * Encodes the specified DestinationNotWorking message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.PolicyTopicEvidence.IDestinationNotWorking, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a DestinationNotWorking message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.PolicyTopicEvidence.DestinationNotWorking;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                        /** PolicyTopicConstraint certificate_domain_mismatch_in_country_list. */
                        public certificate_domain_mismatch_in_country_list?: (google.ads.googleads.v8.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.v8.common.IPolicyTopicConstraint): google.ads.googleads.v8.common.PolicyTopicConstraint;

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

                        /**
                         * Encodes the specified PolicyTopicConstraint message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IPolicyTopicConstraint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyTopicConstraint message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.PolicyTopicConstraint;

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

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

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

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

                    namespace PolicyTopicConstraint {

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

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

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

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

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

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

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

                            /** CountryConstraintList _total_targeted_countries. */
                            public _total_targeted_countries?: "total_targeted_countries";

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

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

                            /**
                             * Encodes the specified CountryConstraintList message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.PolicyTopicConstraint.ICountryConstraintList, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a CountryConstraintList message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.PolicyTopicConstraint.CountryConstraintList;

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

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

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

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

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

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

                            /**
                             * Constructs a new ResellerConstraint.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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.v8.common.PolicyTopicConstraint.IResellerConstraint): google.ads.googleads.v8.common.PolicyTopicConstraint.ResellerConstraint;

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

                            /**
                             * Encodes the specified ResellerConstraint message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.PolicyTopicConstraint.IResellerConstraint, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ResellerConstraint message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.PolicyTopicConstraint.ResellerConstraint;

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

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

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

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

                        /** 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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.common.PolicyTopicConstraint.ICountryConstraint);

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

                            /** CountryConstraint _country_criterion. */
                            public _country_criterion?: "country_criterion";

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

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

                            /**
                             * Encodes the specified CountryConstraint message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.PolicyTopicConstraint.ICountryConstraint, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a CountryConstraint message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.PolicyTopicConstraint.CountryConstraint;

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

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

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

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

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ITextAdInfo);

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

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

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

                        /** TextAdInfo _headline. */
                        public _headline?: "headline";

                        /** TextAdInfo _description1. */
                        public _description1?: "description1";

                        /** TextAdInfo _description2. */
                        public _description2?: "description2";

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

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

                        /**
                         * Encodes the specified TextAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ITextAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TextAdInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.TextAdInfo;

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

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

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

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

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** ExpandedTextAdInfo _headline_part1. */
                        public _headline_part1?: "headline_part1";

                        /** ExpandedTextAdInfo _headline_part2. */
                        public _headline_part2?: "headline_part2";

                        /** ExpandedTextAdInfo _headline_part3. */
                        public _headline_part3?: "headline_part3";

                        /** ExpandedTextAdInfo _description. */
                        public _description?: "description";

                        /** ExpandedTextAdInfo _description2. */
                        public _description2?: "description2";

                        /** ExpandedTextAdInfo _path1. */
                        public _path1?: "path1";

                        /** ExpandedTextAdInfo _path2. */
                        public _path2?: "path2";

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

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

                        /**
                         * Encodes the specified ExpandedTextAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IExpandedTextAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExpandedTextAdInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ExpandedTextAdInfo;

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

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

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

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

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IExpandedDynamicSearchAdInfo);

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

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

                        /** ExpandedDynamicSearchAdInfo _description. */
                        public _description?: "description";

                        /** ExpandedDynamicSearchAdInfo _description2. */
                        public _description2?: "description2";

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

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

                        /**
                         * Encodes the specified ExpandedDynamicSearchAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IExpandedDynamicSearchAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExpandedDynamicSearchAdInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ExpandedDynamicSearchAdInfo;

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

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

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

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

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

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

                        /**
                         * Constructs a new HotelAdInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.IHotelAdInfo): google.ads.googleads.v8.common.HotelAdInfo;

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

                        /**
                         * Encodes the specified HotelAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IHotelAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelAdInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.HotelAdInfo;

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

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

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

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

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

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

                        /**
                         * Constructs a new ShoppingSmartAdInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.IShoppingSmartAdInfo): google.ads.googleads.v8.common.ShoppingSmartAdInfo;

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

                        /**
                         * Encodes the specified ShoppingSmartAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IShoppingSmartAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ShoppingSmartAdInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ShoppingSmartAdInfo;

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

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

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

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

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

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

                        /**
                         * Constructs a new ShoppingProductAdInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.IShoppingProductAdInfo): google.ads.googleads.v8.common.ShoppingProductAdInfo;

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

                        /**
                         * Encodes the specified ShoppingProductAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IShoppingProductAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ShoppingProductAdInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ShoppingProductAdInfo;

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

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

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

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

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

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

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

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

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

                        /** ShoppingComparisonListingAdInfo _headline. */
                        public _headline?: "headline";

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

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

                        /**
                         * Encodes the specified ShoppingComparisonListingAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IShoppingComparisonListingAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ShoppingComparisonListingAdInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ShoppingComparisonListingAdInfo;

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

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

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

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

                    /** Properties of a GmailAdInfo. */
                    interface IGmailAdInfo {

                        /** GmailAdInfo teaser */
                        teaser?: (google.ads.googleads.v8.common.IGmailTeaser|null);

                        /** GmailAdInfo header_image */
                        header_image?: (string|null);

                        /** GmailAdInfo marketing_image */
                        marketing_image?: (string|null);

                        /** GmailAdInfo marketing_image_headline */
                        marketing_image_headline?: (string|null);

                        /** GmailAdInfo marketing_image_description */
                        marketing_image_description?: (string|null);

                        /** GmailAdInfo marketing_image_display_call_to_action */
                        marketing_image_display_call_to_action?: (google.ads.googleads.v8.common.IDisplayCallToAction|null);

                        /** GmailAdInfo product_images */
                        product_images?: (google.ads.googleads.v8.common.IProductImage[]|null);

                        /** GmailAdInfo product_videos */
                        product_videos?: (google.ads.googleads.v8.common.IProductVideo[]|null);
                    }

                    /** Represents a GmailAdInfo. */
                    class GmailAdInfo implements IGmailAdInfo {

                        /**
                         * Constructs a new GmailAdInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IGmailAdInfo);

                        /** GmailAdInfo teaser. */
                        public teaser?: (google.ads.googleads.v8.common.IGmailTeaser|null);

                        /** GmailAdInfo header_image. */
                        public header_image?: (string|null);

                        /** GmailAdInfo marketing_image. */
                        public marketing_image?: (string|null);

                        /** GmailAdInfo marketing_image_headline. */
                        public marketing_image_headline?: (string|null);

                        /** GmailAdInfo marketing_image_description. */
                        public marketing_image_description?: (string|null);

                        /** GmailAdInfo marketing_image_display_call_to_action. */
                        public marketing_image_display_call_to_action?: (google.ads.googleads.v8.common.IDisplayCallToAction|null);

                        /** GmailAdInfo product_images. */
                        public product_images: google.ads.googleads.v8.common.IProductImage[];

                        /** GmailAdInfo product_videos. */
                        public product_videos: google.ads.googleads.v8.common.IProductVideo[];

                        /** GmailAdInfo _header_image. */
                        public _header_image?: "header_image";

                        /** GmailAdInfo _marketing_image. */
                        public _marketing_image?: "marketing_image";

                        /** GmailAdInfo _marketing_image_headline. */
                        public _marketing_image_headline?: "marketing_image_headline";

                        /** GmailAdInfo _marketing_image_description. */
                        public _marketing_image_description?: "marketing_image_description";

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

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

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

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

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

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

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

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

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

                    /** Properties of a GmailTeaser. */
                    interface IGmailTeaser {

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

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

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

                        /** GmailTeaser logo_image */
                        logo_image?: (string|null);
                    }

                    /** Represents a GmailTeaser. */
                    class GmailTeaser implements IGmailTeaser {

                        /**
                         * Constructs a new GmailTeaser.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IGmailTeaser);

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

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

                        /** GmailTeaser business_name. */
                        public business_name?: (string|null);

                        /** GmailTeaser logo_image. */
                        public logo_image?: (string|null);

                        /** GmailTeaser _headline. */
                        public _headline?: "headline";

                        /** GmailTeaser _description. */
                        public _description?: "description";

                        /** GmailTeaser _business_name. */
                        public _business_name?: "business_name";

                        /** GmailTeaser _logo_image. */
                        public _logo_image?: "logo_image";

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

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

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

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

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

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

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

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

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

                    /** Properties of a DisplayCallToAction. */
                    interface IDisplayCallToAction {

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

                        /** DisplayCallToAction text_color */
                        text_color?: (string|null);

                        /** DisplayCallToAction url_collection_id */
                        url_collection_id?: (string|null);
                    }

                    /** Represents a DisplayCallToAction. */
                    class DisplayCallToAction implements IDisplayCallToAction {

                        /**
                         * Constructs a new DisplayCallToAction.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IDisplayCallToAction);

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

                        /** DisplayCallToAction text_color. */
                        public text_color?: (string|null);

                        /** DisplayCallToAction url_collection_id. */
                        public url_collection_id?: (string|null);

                        /** DisplayCallToAction _text. */
                        public _text?: "text";

                        /** DisplayCallToAction _text_color. */
                        public _text_color?: "text_color";

                        /** DisplayCallToAction _url_collection_id. */
                        public _url_collection_id?: "url_collection_id";

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

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

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

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

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

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

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

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

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

                    /** Properties of a ProductImage. */
                    interface IProductImage {

                        /** ProductImage product_image */
                        product_image?: (string|null);

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

                        /** ProductImage display_call_to_action */
                        display_call_to_action?: (google.ads.googleads.v8.common.IDisplayCallToAction|null);
                    }

                    /** Represents a ProductImage. */
                    class ProductImage implements IProductImage {

                        /**
                         * Constructs a new ProductImage.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IProductImage);

                        /** ProductImage product_image. */
                        public product_image?: (string|null);

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

                        /** ProductImage display_call_to_action. */
                        public display_call_to_action?: (google.ads.googleads.v8.common.IDisplayCallToAction|null);

                        /** ProductImage _product_image. */
                        public _product_image?: "product_image";

                        /** ProductImage _description. */
                        public _description?: "description";

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

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

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

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

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

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

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

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

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

                    /** Properties of a ProductVideo. */
                    interface IProductVideo {

                        /** ProductVideo product_video */
                        product_video?: (string|null);
                    }

                    /** Represents a ProductVideo. */
                    class ProductVideo implements IProductVideo {

                        /**
                         * Constructs a new ProductVideo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IProductVideo);

                        /** ProductVideo product_video. */
                        public product_video?: (string|null);

                        /** ProductVideo _product_video. */
                        public _product_video?: "product_video";

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

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

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

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

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

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

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

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

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

                    /** 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.v8.enums.MimeTypeEnum.MimeType|keyof typeof google.ads.googleads.v8.enums.MimeTypeEnum.MimeType|null);

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

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

                        /** ImageAdInfo data */
                        data?: (Uint8Array|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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.MimeTypeEnum.MimeType|keyof typeof google.ads.googleads.v8.enums.MimeTypeEnum.MimeType);

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

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

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

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

                        /** ImageAdInfo _pixel_width. */
                        public _pixel_width?: "pixel_width";

                        /** ImageAdInfo _pixel_height. */
                        public _pixel_height?: "pixel_height";

                        /** ImageAdInfo _image_url. */
                        public _image_url?: "image_url";

                        /** ImageAdInfo _preview_pixel_width. */
                        public _preview_pixel_width?: "preview_pixel_width";

                        /** ImageAdInfo _preview_pixel_height. */
                        public _preview_pixel_height?: "preview_pixel_height";

                        /** ImageAdInfo _preview_image_url. */
                        public _preview_image_url?: "preview_image_url";

                        /** ImageAdInfo _name. */
                        public _name?: "name";

                        /** ImageAdInfo image. */
                        public image?: ("media_file"|"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.v8.common.IImageAdInfo): google.ads.googleads.v8.common.ImageAdInfo;

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

                        /**
                         * Encodes the specified ImageAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IImageAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ImageAdInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ImageAdInfo;

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

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

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

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

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

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

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

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

                        /** VideoBumperInStreamAdInfo companion_banner. */
                        public companion_banner?: (string|null);

                        /** VideoBumperInStreamAdInfo _companion_banner. */
                        public _companion_banner?: "companion_banner";

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

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

                        /**
                         * Encodes the specified VideoBumperInStreamAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IVideoBumperInStreamAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a VideoBumperInStreamAdInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.VideoBumperInStreamAdInfo;

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

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

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

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

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

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

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

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

                        /** VideoNonSkippableInStreamAdInfo companion_banner. */
                        public companion_banner?: (string|null);

                        /** VideoNonSkippableInStreamAdInfo _companion_banner. */
                        public _companion_banner?: "companion_banner";

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

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

                        /**
                         * Encodes the specified VideoNonSkippableInStreamAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IVideoNonSkippableInStreamAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a VideoNonSkippableInStreamAdInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.VideoNonSkippableInStreamAdInfo;

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

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

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

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

                    /** 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?: (string|null);
                    }

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

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

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

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

                        /** VideoTrueViewInStreamAdInfo companion_banner. */
                        public companion_banner?: (string|null);

                        /** VideoTrueViewInStreamAdInfo _action_button_label. */
                        public _action_button_label?: "action_button_label";

                        /** VideoTrueViewInStreamAdInfo _action_headline. */
                        public _action_headline?: "action_headline";

                        /** VideoTrueViewInStreamAdInfo _companion_banner. */
                        public _companion_banner?: "companion_banner";

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

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

                        /**
                         * Encodes the specified VideoTrueViewInStreamAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IVideoTrueViewInStreamAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a VideoTrueViewInStreamAdInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.VideoTrueViewInStreamAdInfo;

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

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

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

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

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IVideoOutstreamAdInfo);

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

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

                        /** VideoOutstreamAdInfo _headline. */
                        public _headline?: "headline";

                        /** VideoOutstreamAdInfo _description. */
                        public _description?: "description";

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

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

                        /**
                         * Encodes the specified VideoOutstreamAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IVideoOutstreamAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a VideoOutstreamAdInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.VideoOutstreamAdInfo;

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

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

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

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

                    /** Properties of a VideoTrueViewDiscoveryAdInfo. */
                    interface IVideoTrueViewDiscoveryAdInfo {

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

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

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

                    /** Represents a VideoTrueViewDiscoveryAdInfo. */
                    class VideoTrueViewDiscoveryAdInfo implements IVideoTrueViewDiscoveryAdInfo {

                        /**
                         * Constructs a new VideoTrueViewDiscoveryAdInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IVideoTrueViewDiscoveryAdInfo);

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

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

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

                        /** VideoTrueViewDiscoveryAdInfo _headline. */
                        public _headline?: "headline";

                        /** VideoTrueViewDiscoveryAdInfo _description1. */
                        public _description1?: "description1";

                        /** VideoTrueViewDiscoveryAdInfo _description2. */
                        public _description2?: "description2";

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

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

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

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

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

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

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

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

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

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

                        /** VideoAdInfo media_file */
                        media_file?: (string|null);

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

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

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

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

                        /** VideoAdInfo discovery */
                        discovery?: (google.ads.googleads.v8.common.IVideoTrueViewDiscoveryAdInfo|null);
                    }

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

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

                        /** VideoAdInfo media_file. */
                        public media_file?: (string|null);

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

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

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

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

                        /** VideoAdInfo discovery. */
                        public discovery?: (google.ads.googleads.v8.common.IVideoTrueViewDiscoveryAdInfo|null);

                        /** VideoAdInfo _media_file. */
                        public _media_file?: "media_file";

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

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

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

                        /**
                         * Encodes the specified VideoAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IVideoAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a VideoAdInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.VideoAdInfo;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                        /**
                         * Encodes the specified VideoResponsiveAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IVideoResponsiveAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a VideoResponsiveAdInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.VideoResponsiveAdInfo;

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

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

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

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

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

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

                        /** ResponsiveSearchAdInfo descriptions */
                        descriptions?: (google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IResponsiveSearchAdInfo);

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

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

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

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

                        /** ResponsiveSearchAdInfo _path1. */
                        public _path1?: "path1";

                        /** ResponsiveSearchAdInfo _path2. */
                        public _path2?: "path2";

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

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

                        /**
                         * Encodes the specified ResponsiveSearchAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IResponsiveSearchAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ResponsiveSearchAdInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ResponsiveSearchAdInfo;

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

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

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

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

                    /** 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.v8.enums.DisplayAdFormatSettingEnum.DisplayAdFormatSetting|keyof typeof google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.DisplayAdFormatSettingEnum.DisplayAdFormatSetting|keyof typeof google.ads.googleads.v8.enums.DisplayAdFormatSettingEnum.DisplayAdFormatSetting);

                        /** LegacyResponsiveDisplayAdInfo price_prefix. */
                        public price_prefix?: (string|null);

                        /** LegacyResponsiveDisplayAdInfo promo_text. */
                        public promo_text?: (string|null);

                        /** LegacyResponsiveDisplayAdInfo _short_headline. */
                        public _short_headline?: "short_headline";

                        /** LegacyResponsiveDisplayAdInfo _long_headline. */
                        public _long_headline?: "long_headline";

                        /** LegacyResponsiveDisplayAdInfo _description. */
                        public _description?: "description";

                        /** LegacyResponsiveDisplayAdInfo _business_name. */
                        public _business_name?: "business_name";

                        /** LegacyResponsiveDisplayAdInfo _allow_flexible_color. */
                        public _allow_flexible_color?: "allow_flexible_color";

                        /** LegacyResponsiveDisplayAdInfo _accent_color. */
                        public _accent_color?: "accent_color";

                        /** LegacyResponsiveDisplayAdInfo _main_color. */
                        public _main_color?: "main_color";

                        /** LegacyResponsiveDisplayAdInfo _call_to_action_text. */
                        public _call_to_action_text?: "call_to_action_text";

                        /** LegacyResponsiveDisplayAdInfo _logo_image. */
                        public _logo_image?: "logo_image";

                        /** LegacyResponsiveDisplayAdInfo _square_logo_image. */
                        public _square_logo_image?: "square_logo_image";

                        /** LegacyResponsiveDisplayAdInfo _marketing_image. */
                        public _marketing_image?: "marketing_image";

                        /** LegacyResponsiveDisplayAdInfo _square_marketing_image. */
                        public _square_marketing_image?: "square_marketing_image";

                        /** LegacyResponsiveDisplayAdInfo _price_prefix. */
                        public _price_prefix?: "price_prefix";

                        /** LegacyResponsiveDisplayAdInfo _promo_text. */
                        public _promo_text?: "promo_text";

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

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

                        /**
                         * Encodes the specified LegacyResponsiveDisplayAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ILegacyResponsiveDisplayAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LegacyResponsiveDisplayAdInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.LegacyResponsiveDisplayAdInfo;

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

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

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

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

                    /** Properties of an AppAdInfo. */
                    interface IAppAdInfo {

                        /** AppAdInfo mandatory_ad_text */
                        mandatory_ad_text?: (google.ads.googleads.v8.common.IAdTextAsset|null);

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

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

                        /** AppAdInfo images */
                        images?: (google.ads.googleads.v8.common.IAdImageAsset[]|null);

                        /** AppAdInfo youtube_videos */
                        youtube_videos?: (google.ads.googleads.v8.common.IAdVideoAsset[]|null);

                        /** AppAdInfo html5_media_bundles */
                        html5_media_bundles?: (google.ads.googleads.v8.common.IAdMediaBundleAsset[]|null);
                    }

                    /** Represents an AppAdInfo. */
                    class AppAdInfo implements IAppAdInfo {

                        /**
                         * Constructs a new AppAdInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IAppAdInfo);

                        /** AppAdInfo mandatory_ad_text. */
                        public mandatory_ad_text?: (google.ads.googleads.v8.common.IAdTextAsset|null);

                        /** AppAdInfo headlines. */
                        public headlines: google.ads.googleads.v8.common.IAdTextAsset[];

                        /** AppAdInfo descriptions. */
                        public descriptions: google.ads.googleads.v8.common.IAdTextAsset[];

                        /** AppAdInfo images. */
                        public images: google.ads.googleads.v8.common.IAdImageAsset[];

                        /** AppAdInfo youtube_videos. */
                        public youtube_videos: google.ads.googleads.v8.common.IAdVideoAsset[];

                        /** AppAdInfo html5_media_bundles. */
                        public html5_media_bundles: google.ads.googleads.v8.common.IAdMediaBundleAsset[];

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

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

                        /**
                         * Encodes the specified AppAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IAppAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AppAdInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.AppAdInfo;

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

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

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

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

                    /** Properties of an AppEngagementAdInfo. */
                    interface IAppEngagementAdInfo {

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

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

                        /** AppEngagementAdInfo images */
                        images?: (google.ads.googleads.v8.common.IAdImageAsset[]|null);

                        /** AppEngagementAdInfo videos */
                        videos?: (google.ads.googleads.v8.common.IAdVideoAsset[]|null);
                    }

                    /** Represents an AppEngagementAdInfo. */
                    class AppEngagementAdInfo implements IAppEngagementAdInfo {

                        /**
                         * Constructs a new AppEngagementAdInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IAppEngagementAdInfo);

                        /** AppEngagementAdInfo headlines. */
                        public headlines: google.ads.googleads.v8.common.IAdTextAsset[];

                        /** AppEngagementAdInfo descriptions. */
                        public descriptions: google.ads.googleads.v8.common.IAdTextAsset[];

                        /** AppEngagementAdInfo images. */
                        public images: google.ads.googleads.v8.common.IAdImageAsset[];

                        /** AppEngagementAdInfo videos. */
                        public videos: google.ads.googleads.v8.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.v8.common.IAppEngagementAdInfo): google.ads.googleads.v8.common.AppEngagementAdInfo;

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

                        /**
                         * Encodes the specified AppEngagementAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IAppEngagementAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AppEngagementAdInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.AppEngagementAdInfo;

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

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

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

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

                    /** Properties of a LegacyAppInstallAdInfo. */
                    interface ILegacyAppInstallAdInfo {

                        /** LegacyAppInstallAdInfo app_id */
                        app_id?: (string|null);

                        /** LegacyAppInstallAdInfo app_store */
                        app_store?: (google.ads.googleads.v8.enums.LegacyAppInstallAdAppStoreEnum.LegacyAppInstallAdAppStore|keyof typeof google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ILegacyAppInstallAdInfo);

                        /** LegacyAppInstallAdInfo app_id. */
                        public app_id?: (string|null);

                        /** LegacyAppInstallAdInfo app_store. */
                        public app_store: (google.ads.googleads.v8.enums.LegacyAppInstallAdAppStoreEnum.LegacyAppInstallAdAppStore|keyof typeof google.ads.googleads.v8.enums.LegacyAppInstallAdAppStoreEnum.LegacyAppInstallAdAppStore);

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

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

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

                        /** LegacyAppInstallAdInfo _app_id. */
                        public _app_id?: "app_id";

                        /** LegacyAppInstallAdInfo _headline. */
                        public _headline?: "headline";

                        /** LegacyAppInstallAdInfo _description1. */
                        public _description1?: "description1";

                        /** LegacyAppInstallAdInfo _description2. */
                        public _description2?: "description2";

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

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

                        /**
                         * Encodes the specified LegacyAppInstallAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ILegacyAppInstallAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LegacyAppInstallAdInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.LegacyAppInstallAdInfo;

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

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

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

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

                    /** Properties of a ResponsiveDisplayAdInfo. */
                    interface IResponsiveDisplayAdInfo {

                        /** ResponsiveDisplayAdInfo marketing_images */
                        marketing_images?: (google.ads.googleads.v8.common.IAdImageAsset[]|null);

                        /** ResponsiveDisplayAdInfo square_marketing_images */
                        square_marketing_images?: (google.ads.googleads.v8.common.IAdImageAsset[]|null);

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

                        /** ResponsiveDisplayAdInfo square_logo_images */
                        square_logo_images?: (google.ads.googleads.v8.common.IAdImageAsset[]|null);

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

                        /** ResponsiveDisplayAdInfo long_headline */
                        long_headline?: (google.ads.googleads.v8.common.IAdTextAsset|null);

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

                        /** ResponsiveDisplayAdInfo youtube_videos */
                        youtube_videos?: (google.ads.googleads.v8.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.v8.enums.DisplayAdFormatSettingEnum.DisplayAdFormatSetting|keyof typeof google.ads.googleads.v8.enums.DisplayAdFormatSettingEnum.DisplayAdFormatSetting|null);

                        /** ResponsiveDisplayAdInfo control_spec */
                        control_spec?: (google.ads.googleads.v8.common.IResponsiveDisplayAdControlSpec|null);
                    }

                    /** Represents a ResponsiveDisplayAdInfo. */
                    class ResponsiveDisplayAdInfo implements IResponsiveDisplayAdInfo {

                        /**
                         * Constructs a new ResponsiveDisplayAdInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IResponsiveDisplayAdInfo);

                        /** ResponsiveDisplayAdInfo marketing_images. */
                        public marketing_images: google.ads.googleads.v8.common.IAdImageAsset[];

                        /** ResponsiveDisplayAdInfo square_marketing_images. */
                        public square_marketing_images: google.ads.googleads.v8.common.IAdImageAsset[];

                        /** ResponsiveDisplayAdInfo logo_images. */
                        public logo_images: google.ads.googleads.v8.common.IAdImageAsset[];

                        /** ResponsiveDisplayAdInfo square_logo_images. */
                        public square_logo_images: google.ads.googleads.v8.common.IAdImageAsset[];

                        /** ResponsiveDisplayAdInfo headlines. */
                        public headlines: google.ads.googleads.v8.common.IAdTextAsset[];

                        /** ResponsiveDisplayAdInfo long_headline. */
                        public long_headline?: (google.ads.googleads.v8.common.IAdTextAsset|null);

                        /** ResponsiveDisplayAdInfo descriptions. */
                        public descriptions: google.ads.googleads.v8.common.IAdTextAsset[];

                        /** ResponsiveDisplayAdInfo youtube_videos. */
                        public youtube_videos: google.ads.googleads.v8.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.v8.enums.DisplayAdFormatSettingEnum.DisplayAdFormatSetting|keyof typeof google.ads.googleads.v8.enums.DisplayAdFormatSettingEnum.DisplayAdFormatSetting);

                        /** ResponsiveDisplayAdInfo control_spec. */
                        public control_spec?: (google.ads.googleads.v8.common.IResponsiveDisplayAdControlSpec|null);

                        /** ResponsiveDisplayAdInfo _business_name. */
                        public _business_name?: "business_name";

                        /** ResponsiveDisplayAdInfo _main_color. */
                        public _main_color?: "main_color";

                        /** ResponsiveDisplayAdInfo _accent_color. */
                        public _accent_color?: "accent_color";

                        /** ResponsiveDisplayAdInfo _allow_flexible_color. */
                        public _allow_flexible_color?: "allow_flexible_color";

                        /** ResponsiveDisplayAdInfo _call_to_action_text. */
                        public _call_to_action_text?: "call_to_action_text";

                        /** ResponsiveDisplayAdInfo _price_prefix. */
                        public _price_prefix?: "price_prefix";

                        /** ResponsiveDisplayAdInfo _promo_text. */
                        public _promo_text?: "promo_text";

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

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

                        /**
                         * Encodes the specified ResponsiveDisplayAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IResponsiveDisplayAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ResponsiveDisplayAdInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ResponsiveDisplayAdInfo;

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

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

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

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

                    /** Properties of a LocalAdInfo. */
                    interface ILocalAdInfo {

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

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

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

                        /** LocalAdInfo marketing_images */
                        marketing_images?: (google.ads.googleads.v8.common.IAdImageAsset[]|null);

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

                        /** LocalAdInfo videos */
                        videos?: (google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ILocalAdInfo);

                        /** LocalAdInfo headlines. */
                        public headlines: google.ads.googleads.v8.common.IAdTextAsset[];

                        /** LocalAdInfo descriptions. */
                        public descriptions: google.ads.googleads.v8.common.IAdTextAsset[];

                        /** LocalAdInfo call_to_actions. */
                        public call_to_actions: google.ads.googleads.v8.common.IAdTextAsset[];

                        /** LocalAdInfo marketing_images. */
                        public marketing_images: google.ads.googleads.v8.common.IAdImageAsset[];

                        /** LocalAdInfo logo_images. */
                        public logo_images: google.ads.googleads.v8.common.IAdImageAsset[];

                        /** LocalAdInfo videos. */
                        public videos: google.ads.googleads.v8.common.IAdVideoAsset[];

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

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

                        /** LocalAdInfo _path1. */
                        public _path1?: "path1";

                        /** LocalAdInfo _path2. */
                        public _path2?: "path2";

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

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

                        /**
                         * Encodes the specified LocalAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ILocalAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalAdInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.LocalAdInfo;

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

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

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

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

                    /** Properties of a DisplayUploadAdInfo. */
                    interface IDisplayUploadAdInfo {

                        /** DisplayUploadAdInfo display_upload_product_type */
                        display_upload_product_type?: (google.ads.googleads.v8.enums.DisplayUploadProductTypeEnum.DisplayUploadProductType|keyof typeof google.ads.googleads.v8.enums.DisplayUploadProductTypeEnum.DisplayUploadProductType|null);

                        /** DisplayUploadAdInfo media_bundle */
                        media_bundle?: (google.ads.googleads.v8.common.IAdMediaBundleAsset|null);
                    }

                    /** Represents a DisplayUploadAdInfo. */
                    class DisplayUploadAdInfo implements IDisplayUploadAdInfo {

                        /**
                         * Constructs a new DisplayUploadAdInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IDisplayUploadAdInfo);

                        /** DisplayUploadAdInfo display_upload_product_type. */
                        public display_upload_product_type: (google.ads.googleads.v8.enums.DisplayUploadProductTypeEnum.DisplayUploadProductType|keyof typeof google.ads.googleads.v8.enums.DisplayUploadProductTypeEnum.DisplayUploadProductType);

                        /** DisplayUploadAdInfo media_bundle. */
                        public media_bundle?: (google.ads.googleads.v8.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.v8.common.IDisplayUploadAdInfo): google.ads.googleads.v8.common.DisplayUploadAdInfo;

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

                        /**
                         * Encodes the specified DisplayUploadAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IDisplayUploadAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DisplayUploadAdInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.DisplayUploadAdInfo;

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

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

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

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

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.IResponsiveDisplayAdControlSpec): google.ads.googleads.v8.common.ResponsiveDisplayAdControlSpec;

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

                        /**
                         * Encodes the specified ResponsiveDisplayAdControlSpec message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IResponsiveDisplayAdControlSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ResponsiveDisplayAdControlSpec message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ResponsiveDisplayAdControlSpec;

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

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

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

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

                    /** Properties of a SmartCampaignAdInfo. */
                    interface ISmartCampaignAdInfo {

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

                        /** SmartCampaignAdInfo descriptions */
                        descriptions?: (google.ads.googleads.v8.common.IAdTextAsset[]|null);
                    }

                    /** Represents a SmartCampaignAdInfo. */
                    class SmartCampaignAdInfo implements ISmartCampaignAdInfo {

                        /**
                         * Constructs a new SmartCampaignAdInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ISmartCampaignAdInfo);

                        /** SmartCampaignAdInfo headlines. */
                        public headlines: google.ads.googleads.v8.common.IAdTextAsset[];

                        /** SmartCampaignAdInfo descriptions. */
                        public descriptions: google.ads.googleads.v8.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.v8.common.ISmartCampaignAdInfo): google.ads.googleads.v8.common.SmartCampaignAdInfo;

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

                        /**
                         * Encodes the specified SmartCampaignAdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ISmartCampaignAdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SmartCampaignAdInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.SmartCampaignAdInfo;

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

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

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

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

                    /** Properties of a CallAdInfo. */
                    interface ICallAdInfo {

                        /** CallAdInfo country_code */
                        country_code?: (string|null);

                        /** CallAdInfo phone_number */
                        phone_number?: (string|null);

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

                        /** CallAdInfo headline1 */
                        headline1?: (string|null);

                        /** CallAdInfo headline2 */
                        headline2?: (string|null);

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

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

                        /** CallAdInfo call_tracked */
                        call_tracked?: (boolean|null);

                        /** CallAdInfo disable_call_conversion */
                        disable_call_conversion?: (boolean|null);

                        /** CallAdInfo phone_number_verification_url */
                        phone_number_verification_url?: (string|null);

                        /** CallAdInfo conversion_action */
                        conversion_action?: (string|null);

                        /** CallAdInfo conversion_reporting_state */
                        conversion_reporting_state?: (google.ads.googleads.v8.enums.CallConversionReportingStateEnum.CallConversionReportingState|keyof typeof google.ads.googleads.v8.enums.CallConversionReportingStateEnum.CallConversionReportingState|null);

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

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

                    /** Represents a CallAdInfo. */
                    class CallAdInfo implements ICallAdInfo {

                        /**
                         * Constructs a new CallAdInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ICallAdInfo);

                        /** CallAdInfo country_code. */
                        public country_code: string;

                        /** CallAdInfo phone_number. */
                        public phone_number: string;

                        /** CallAdInfo business_name. */
                        public business_name: string;

                        /** CallAdInfo headline1. */
                        public headline1: string;

                        /** CallAdInfo headline2. */
                        public headline2: string;

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

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

                        /** CallAdInfo call_tracked. */
                        public call_tracked: boolean;

                        /** CallAdInfo disable_call_conversion. */
                        public disable_call_conversion: boolean;

                        /** CallAdInfo phone_number_verification_url. */
                        public phone_number_verification_url: string;

                        /** CallAdInfo conversion_action. */
                        public conversion_action: string;

                        /** CallAdInfo conversion_reporting_state. */
                        public conversion_reporting_state: (google.ads.googleads.v8.enums.CallConversionReportingStateEnum.CallConversionReportingState|keyof typeof google.ads.googleads.v8.enums.CallConversionReportingStateEnum.CallConversionReportingState);

                        /** CallAdInfo path1. */
                        public path1: string;

                        /** CallAdInfo path2. */
                        public path2: string;

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

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

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

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

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

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

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

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

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

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IYoutubeVideoAsset);

                        /** YoutubeVideoAsset youtube_video_id. */
                        public youtube_video_id?: (string|null);

                        /** YoutubeVideoAsset youtube_video_title. */
                        public youtube_video_title: string;

                        /** YoutubeVideoAsset _youtube_video_id. */
                        public _youtube_video_id?: "youtube_video_id";

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

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

                        /**
                         * Encodes the specified YoutubeVideoAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IYoutubeVideoAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a YoutubeVideoAsset message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.YoutubeVideoAsset;

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

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

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

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

                    /** Properties of a MediaBundleAsset. */
                    interface IMediaBundleAsset {

                        /** MediaBundleAsset data */
                        data?: (Uint8Array|string|null);
                    }

                    /** Represents a MediaBundleAsset. */
                    class MediaBundleAsset implements IMediaBundleAsset {

                        /**
                         * Constructs a new MediaBundleAsset.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IMediaBundleAsset);

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

                        /** MediaBundleAsset _data. */
                        public _data?: "data";

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

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

                        /**
                         * Encodes the specified MediaBundleAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IMediaBundleAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MediaBundleAsset message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.MediaBundleAsset;

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

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

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

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

                    /** Properties of an ImageAsset. */
                    interface IImageAsset {

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

                        /** ImageAsset file_size */
                        file_size?: (number|null);

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

                        /** ImageAsset full_size */
                        full_size?: (google.ads.googleads.v8.common.IImageDimension|null);
                    }

                    /** Represents an ImageAsset. */
                    class ImageAsset implements IImageAsset {

                        /**
                         * Constructs a new ImageAsset.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IImageAsset);

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

                        /** ImageAsset file_size. */
                        public file_size?: (number|null);

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

                        /** ImageAsset full_size. */
                        public full_size?: (google.ads.googleads.v8.common.IImageDimension|null);

                        /** ImageAsset _data. */
                        public _data?: "data";

                        /** ImageAsset _file_size. */
                        public _file_size?: "file_size";

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

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

                        /**
                         * Encodes the specified ImageAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IImageAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ImageAsset message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ImageAsset;

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

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

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

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

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IImageDimension);

                        /** ImageDimension height_pixels. */
                        public height_pixels?: (number|null);

                        /** ImageDimension width_pixels. */
                        public width_pixels?: (number|null);

                        /** ImageDimension url. */
                        public url?: (string|null);

                        /** ImageDimension _height_pixels. */
                        public _height_pixels?: "height_pixels";

                        /** ImageDimension _width_pixels. */
                        public _width_pixels?: "width_pixels";

                        /** ImageDimension _url. */
                        public _url?: "url";

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

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

                        /**
                         * Encodes the specified ImageDimension message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IImageDimension, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ImageDimension message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ImageDimension;

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

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

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

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

                    /** Properties of a TextAsset. */
                    interface ITextAsset {

                        /** TextAsset text */
                        text?: (string|null);
                    }

                    /** Represents a TextAsset. */
                    class TextAsset implements ITextAsset {

                        /**
                         * Constructs a new TextAsset.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ITextAsset);

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

                        /** TextAsset _text. */
                        public _text?: "text";

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

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

                        /**
                         * Encodes the specified TextAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ITextAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TextAsset message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.TextAsset;

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

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

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

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

                    /** 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.v8.enums.LeadFormCallToActionTypeEnum.LeadFormCallToActionType|keyof typeof google.ads.googleads.v8.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.v8.common.ILeadFormField[]|null);

                        /** LeadFormAsset delivery_methods */
                        delivery_methods?: (google.ads.googleads.v8.common.ILeadFormDeliveryMethod[]|null);

                        /** LeadFormAsset post_submit_call_to_action_type */
                        post_submit_call_to_action_type?: (google.ads.googleads.v8.enums.LeadFormPostSubmitCallToActionTypeEnum.LeadFormPostSubmitCallToActionType|keyof typeof google.ads.googleads.v8.enums.LeadFormPostSubmitCallToActionTypeEnum.LeadFormPostSubmitCallToActionType|null);

                        /** LeadFormAsset background_image_asset */
                        background_image_asset?: (string|null);

                        /** LeadFormAsset desired_intent */
                        desired_intent?: (google.ads.googleads.v8.enums.LeadFormDesiredIntentEnum.LeadFormDesiredIntent|keyof typeof google.ads.googleads.v8.enums.LeadFormDesiredIntentEnum.LeadFormDesiredIntent|null);

                        /** LeadFormAsset custom_disclosure */
                        custom_disclosure?: (string|null);
                    }

                    /** Represents a LeadFormAsset. */
                    class LeadFormAsset implements ILeadFormAsset {

                        /**
                         * Constructs a new LeadFormAsset.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ILeadFormAsset);

                        /** LeadFormAsset business_name. */
                        public business_name: string;

                        /** LeadFormAsset call_to_action_type. */
                        public call_to_action_type: (google.ads.googleads.v8.enums.LeadFormCallToActionTypeEnum.LeadFormCallToActionType|keyof typeof google.ads.googleads.v8.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.v8.common.ILeadFormField[];

                        /** LeadFormAsset delivery_methods. */
                        public delivery_methods: google.ads.googleads.v8.common.ILeadFormDeliveryMethod[];

                        /** LeadFormAsset post_submit_call_to_action_type. */
                        public post_submit_call_to_action_type: (google.ads.googleads.v8.enums.LeadFormPostSubmitCallToActionTypeEnum.LeadFormPostSubmitCallToActionType|keyof typeof google.ads.googleads.v8.enums.LeadFormPostSubmitCallToActionTypeEnum.LeadFormPostSubmitCallToActionType);

                        /** LeadFormAsset background_image_asset. */
                        public background_image_asset?: (string|null);

                        /** LeadFormAsset desired_intent. */
                        public desired_intent: (google.ads.googleads.v8.enums.LeadFormDesiredIntentEnum.LeadFormDesiredIntent|keyof typeof google.ads.googleads.v8.enums.LeadFormDesiredIntentEnum.LeadFormDesiredIntent);

                        /** LeadFormAsset custom_disclosure. */
                        public custom_disclosure?: (string|null);

                        /** LeadFormAsset _post_submit_headline. */
                        public _post_submit_headline?: "post_submit_headline";

                        /** LeadFormAsset _post_submit_description. */
                        public _post_submit_description?: "post_submit_description";

                        /** LeadFormAsset _background_image_asset. */
                        public _background_image_asset?: "background_image_asset";

                        /** LeadFormAsset _custom_disclosure. */
                        public _custom_disclosure?: "custom_disclosure";

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

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

                        /**
                         * Encodes the specified LeadFormAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ILeadFormAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LeadFormAsset message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.LeadFormAsset;

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

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

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

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

                    /** Properties of a LeadFormField. */
                    interface ILeadFormField {

                        /** LeadFormField input_type */
                        input_type?: (google.ads.googleads.v8.enums.LeadFormFieldUserInputTypeEnum.LeadFormFieldUserInputType|keyof typeof google.ads.googleads.v8.enums.LeadFormFieldUserInputTypeEnum.LeadFormFieldUserInputType|null);

                        /** LeadFormField single_choice_answers */
                        single_choice_answers?: (google.ads.googleads.v8.common.ILeadFormSingleChoiceAnswers|null);
                    }

                    /** Represents a LeadFormField. */
                    class LeadFormField implements ILeadFormField {

                        /**
                         * Constructs a new LeadFormField.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ILeadFormField);

                        /** LeadFormField input_type. */
                        public input_type: (google.ads.googleads.v8.enums.LeadFormFieldUserInputTypeEnum.LeadFormFieldUserInputType|keyof typeof google.ads.googleads.v8.enums.LeadFormFieldUserInputTypeEnum.LeadFormFieldUserInputType);

                        /** LeadFormField single_choice_answers. */
                        public single_choice_answers?: (google.ads.googleads.v8.common.ILeadFormSingleChoiceAnswers|null);

                        /** LeadFormField answers. */
                        public answers?: "single_choice_answers";

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

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

                        /**
                         * Encodes the specified LeadFormField message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ILeadFormField, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LeadFormField message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.LeadFormField;

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

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

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

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

                    /** Properties of a LeadFormSingleChoiceAnswers. */
                    interface ILeadFormSingleChoiceAnswers {

                        /** LeadFormSingleChoiceAnswers answers */
                        answers?: (string[]|null);
                    }

                    /** Represents a LeadFormSingleChoiceAnswers. */
                    class LeadFormSingleChoiceAnswers implements ILeadFormSingleChoiceAnswers {

                        /**
                         * Constructs a new LeadFormSingleChoiceAnswers.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.ILeadFormSingleChoiceAnswers): google.ads.googleads.v8.common.LeadFormSingleChoiceAnswers;

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

                        /**
                         * Encodes the specified LeadFormSingleChoiceAnswers message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ILeadFormSingleChoiceAnswers, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LeadFormSingleChoiceAnswers message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.LeadFormSingleChoiceAnswers;

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

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

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

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

                    /** Properties of a LeadFormDeliveryMethod. */
                    interface ILeadFormDeliveryMethod {

                        /** LeadFormDeliveryMethod webhook */
                        webhook?: (google.ads.googleads.v8.common.IWebhookDelivery|null);
                    }

                    /** Represents a LeadFormDeliveryMethod. */
                    class LeadFormDeliveryMethod implements ILeadFormDeliveryMethod {

                        /**
                         * Constructs a new LeadFormDeliveryMethod.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ILeadFormDeliveryMethod);

                        /** LeadFormDeliveryMethod webhook. */
                        public webhook?: (google.ads.googleads.v8.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.v8.common.ILeadFormDeliveryMethod): google.ads.googleads.v8.common.LeadFormDeliveryMethod;

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

                        /**
                         * Encodes the specified LeadFormDeliveryMethod message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ILeadFormDeliveryMethod, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LeadFormDeliveryMethod message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.LeadFormDeliveryMethod;

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

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

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

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

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** WebhookDelivery _advertiser_webhook_url. */
                        public _advertiser_webhook_url?: "advertiser_webhook_url";

                        /** WebhookDelivery _google_secret. */
                        public _google_secret?: "google_secret";

                        /** WebhookDelivery _payload_schema_version. */
                        public _payload_schema_version?: "payload_schema_version";

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

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

                        /**
                         * Encodes the specified WebhookDelivery message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IWebhookDelivery, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a WebhookDelivery message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.WebhookDelivery;

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

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

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

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

                    /** Properties of a BookOnGoogleAsset. */
                    interface IBookOnGoogleAsset {
                    }

                    /** Represents a BookOnGoogleAsset. */
                    class BookOnGoogleAsset implements IBookOnGoogleAsset {

                        /**
                         * Constructs a new BookOnGoogleAsset.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.IBookOnGoogleAsset): google.ads.googleads.v8.common.BookOnGoogleAsset;

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

                        /**
                         * Encodes the specified BookOnGoogleAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IBookOnGoogleAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BookOnGoogleAsset message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.BookOnGoogleAsset;

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

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

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

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

                    /** Properties of a PromotionAsset. */
                    interface IPromotionAsset {

                        /** PromotionAsset promotion_target */
                        promotion_target?: (string|null);

                        /** PromotionAsset discount_modifier */
                        discount_modifier?: (google.ads.googleads.v8.enums.PromotionExtensionDiscountModifierEnum.PromotionExtensionDiscountModifier|keyof typeof google.ads.googleads.v8.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.v8.enums.PromotionExtensionOccasionEnum.PromotionExtensionOccasion|keyof typeof google.ads.googleads.v8.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.v8.common.IAdScheduleInfo[]|null);

                        /** PromotionAsset percent_off */
                        percent_off?: (number|null);

                        /** PromotionAsset money_amount_off */
                        money_amount_off?: (google.ads.googleads.v8.common.IMoney|null);

                        /** PromotionAsset promotion_code */
                        promotion_code?: (string|null);

                        /** PromotionAsset orders_over_amount */
                        orders_over_amount?: (google.ads.googleads.v8.common.IMoney|null);
                    }

                    /** Represents a PromotionAsset. */
                    class PromotionAsset implements IPromotionAsset {

                        /**
                         * Constructs a new PromotionAsset.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IPromotionAsset);

                        /** PromotionAsset promotion_target. */
                        public promotion_target: string;

                        /** PromotionAsset discount_modifier. */
                        public discount_modifier: (google.ads.googleads.v8.enums.PromotionExtensionDiscountModifierEnum.PromotionExtensionDiscountModifier|keyof typeof google.ads.googleads.v8.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.v8.enums.PromotionExtensionOccasionEnum.PromotionExtensionOccasion|keyof typeof google.ads.googleads.v8.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.v8.common.IAdScheduleInfo[];

                        /** PromotionAsset percent_off. */
                        public percent_off?: (number|null);

                        /** PromotionAsset money_amount_off. */
                        public money_amount_off?: (google.ads.googleads.v8.common.IMoney|null);

                        /** PromotionAsset promotion_code. */
                        public promotion_code?: (string|null);

                        /** PromotionAsset orders_over_amount. */
                        public orders_over_amount?: (google.ads.googleads.v8.common.IMoney|null);

                        /** PromotionAsset discount_type. */
                        public discount_type?: ("percent_off"|"money_amount_off");

                        /** PromotionAsset promotion_trigger. */
                        public promotion_trigger?: ("promotion_code"|"orders_over_amount");

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

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

                        /**
                         * Encodes the specified PromotionAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IPromotionAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PromotionAsset message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.PromotionAsset;

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

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

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

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

                    /** 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.v8.common.IAdScheduleInfo[]|null);
                    }

                    /** Represents a CalloutAsset. */
                    class CalloutAsset implements ICalloutAsset {

                        /**
                         * Constructs a new CalloutAsset.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.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.v8.common.ICalloutAsset): google.ads.googleads.v8.common.CalloutAsset;

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

                        /**
                         * Encodes the specified CalloutAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ICalloutAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CalloutAsset message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.CalloutAsset;

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

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

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

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

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.IStructuredSnippetAsset): google.ads.googleads.v8.common.StructuredSnippetAsset;

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

                        /**
                         * Encodes the specified StructuredSnippetAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IStructuredSnippetAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a StructuredSnippetAsset message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.StructuredSnippetAsset;

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

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

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

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

                    /** 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.v8.common.IAdScheduleInfo[]|null);
                    }

                    /** Represents a SitelinkAsset. */
                    class SitelinkAsset implements ISitelinkAsset {

                        /**
                         * Constructs a new SitelinkAsset.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.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.v8.common.ISitelinkAsset): google.ads.googleads.v8.common.SitelinkAsset;

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

                        /**
                         * Encodes the specified SitelinkAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ISitelinkAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SitelinkAsset message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.SitelinkAsset;

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

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

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

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

                    /** Properties of a KeywordInfo. */
                    interface IKeywordInfo {

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

                        /** KeywordInfo match_type */
                        match_type?: (google.ads.googleads.v8.enums.KeywordMatchTypeEnum.KeywordMatchType|keyof typeof google.ads.googleads.v8.enums.KeywordMatchTypeEnum.KeywordMatchType|null);
                    }

                    /** Represents a KeywordInfo. */
                    class KeywordInfo implements IKeywordInfo {

                        /**
                         * Constructs a new KeywordInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IKeywordInfo);

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

                        /** KeywordInfo match_type. */
                        public match_type: (google.ads.googleads.v8.enums.KeywordMatchTypeEnum.KeywordMatchType|keyof typeof google.ads.googleads.v8.enums.KeywordMatchTypeEnum.KeywordMatchType);

                        /** KeywordInfo _text. */
                        public _text?: "text";

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

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

                        /**
                         * Encodes the specified KeywordInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IKeywordInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.KeywordInfo;

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

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

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

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

                    /** Properties of a PlacementInfo. */
                    interface IPlacementInfo {

                        /** PlacementInfo url */
                        url?: (string|null);
                    }

                    /** Represents a PlacementInfo. */
                    class PlacementInfo implements IPlacementInfo {

                        /**
                         * Constructs a new PlacementInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IPlacementInfo);

                        /** PlacementInfo url. */
                        public url?: (string|null);

                        /** PlacementInfo _url. */
                        public _url?: "url";

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

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

                        /**
                         * Encodes the specified PlacementInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IPlacementInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PlacementInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.PlacementInfo;

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

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

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

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

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IMobileAppCategoryInfo);

                        /** MobileAppCategoryInfo mobile_app_category_constant. */
                        public mobile_app_category_constant?: (string|null);

                        /** MobileAppCategoryInfo _mobile_app_category_constant. */
                        public _mobile_app_category_constant?: "mobile_app_category_constant";

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

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

                        /**
                         * Encodes the specified MobileAppCategoryInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IMobileAppCategoryInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MobileAppCategoryInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.MobileAppCategoryInfo;

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

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

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

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

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IMobileApplicationInfo);

                        /** MobileApplicationInfo app_id. */
                        public app_id?: (string|null);

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

                        /** MobileApplicationInfo _app_id. */
                        public _app_id?: "app_id";

                        /** MobileApplicationInfo _name. */
                        public _name?: "name";

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

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

                        /**
                         * Encodes the specified MobileApplicationInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IMobileApplicationInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MobileApplicationInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.MobileApplicationInfo;

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

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

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

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

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ILocationInfo);

                        /** LocationInfo geo_target_constant. */
                        public geo_target_constant?: (string|null);

                        /** LocationInfo _geo_target_constant. */
                        public _geo_target_constant?: "geo_target_constant";

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

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

                        /**
                         * Encodes the specified LocationInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ILocationInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocationInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.LocationInfo;

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

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

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

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

                    /** Properties of a DeviceInfo. */
                    interface IDeviceInfo {

                        /** DeviceInfo type */
                        type?: (google.ads.googleads.v8.enums.DeviceEnum.Device|keyof typeof google.ads.googleads.v8.enums.DeviceEnum.Device|null);
                    }

                    /** Represents a DeviceInfo. */
                    class DeviceInfo implements IDeviceInfo {

                        /**
                         * Constructs a new DeviceInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IDeviceInfo);

                        /** DeviceInfo type. */
                        public type: (google.ads.googleads.v8.enums.DeviceEnum.Device|keyof typeof google.ads.googleads.v8.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.v8.common.IDeviceInfo): google.ads.googleads.v8.common.DeviceInfo;

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

                        /**
                         * Encodes the specified DeviceInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IDeviceInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DeviceInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.DeviceInfo;

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

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

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

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

                    /** Properties of a PreferredContentInfo. */
                    interface IPreferredContentInfo {

                        /** PreferredContentInfo type */
                        type?: (google.ads.googleads.v8.enums.PreferredContentTypeEnum.PreferredContentType|keyof typeof google.ads.googleads.v8.enums.PreferredContentTypeEnum.PreferredContentType|null);
                    }

                    /** Represents a PreferredContentInfo. */
                    class PreferredContentInfo implements IPreferredContentInfo {

                        /**
                         * Constructs a new PreferredContentInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IPreferredContentInfo);

                        /** PreferredContentInfo type. */
                        public type: (google.ads.googleads.v8.enums.PreferredContentTypeEnum.PreferredContentType|keyof typeof google.ads.googleads.v8.enums.PreferredContentTypeEnum.PreferredContentType);

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

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

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

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

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

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

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

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

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

                    /** Properties of a ListingGroupInfo. */
                    interface IListingGroupInfo {

                        /** ListingGroupInfo type */
                        type?: (google.ads.googleads.v8.enums.ListingGroupTypeEnum.ListingGroupType|keyof typeof google.ads.googleads.v8.enums.ListingGroupTypeEnum.ListingGroupType|null);

                        /** ListingGroupInfo case_value */
                        case_value?: (google.ads.googleads.v8.common.IListingDimensionInfo|null);

                        /** ListingGroupInfo parent_ad_group_criterion */
                        parent_ad_group_criterion?: (string|null);
                    }

                    /** Represents a ListingGroupInfo. */
                    class ListingGroupInfo implements IListingGroupInfo {

                        /**
                         * Constructs a new ListingGroupInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IListingGroupInfo);

                        /** ListingGroupInfo type. */
                        public type: (google.ads.googleads.v8.enums.ListingGroupTypeEnum.ListingGroupType|keyof typeof google.ads.googleads.v8.enums.ListingGroupTypeEnum.ListingGroupType);

                        /** ListingGroupInfo case_value. */
                        public case_value?: (google.ads.googleads.v8.common.IListingDimensionInfo|null);

                        /** ListingGroupInfo parent_ad_group_criterion. */
                        public parent_ad_group_criterion?: (string|null);

                        /** ListingGroupInfo _parent_ad_group_criterion. */
                        public _parent_ad_group_criterion?: "parent_ad_group_criterion";

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

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

                        /**
                         * Encodes the specified ListingGroupInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IListingGroupInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListingGroupInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ListingGroupInfo;

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

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

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

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

                    /** Properties of a ListingScopeInfo. */
                    interface IListingScopeInfo {

                        /** ListingScopeInfo dimensions */
                        dimensions?: (google.ads.googleads.v8.common.IListingDimensionInfo[]|null);
                    }

                    /** Represents a ListingScopeInfo. */
                    class ListingScopeInfo implements IListingScopeInfo {

                        /**
                         * Constructs a new ListingScopeInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IListingScopeInfo);

                        /** ListingScopeInfo dimensions. */
                        public dimensions: google.ads.googleads.v8.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.v8.common.IListingScopeInfo): google.ads.googleads.v8.common.ListingScopeInfo;

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

                        /**
                         * Encodes the specified ListingScopeInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IListingScopeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListingScopeInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ListingScopeInfo;

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

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

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

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

                    /** Properties of a ListingDimensionInfo. */
                    interface IListingDimensionInfo {

                        /** ListingDimensionInfo hotel_id */
                        hotel_id?: (google.ads.googleads.v8.common.IHotelIdInfo|null);

                        /** ListingDimensionInfo hotel_class */
                        hotel_class?: (google.ads.googleads.v8.common.IHotelClassInfo|null);

                        /** ListingDimensionInfo hotel_country_region */
                        hotel_country_region?: (google.ads.googleads.v8.common.IHotelCountryRegionInfo|null);

                        /** ListingDimensionInfo hotel_state */
                        hotel_state?: (google.ads.googleads.v8.common.IHotelStateInfo|null);

                        /** ListingDimensionInfo hotel_city */
                        hotel_city?: (google.ads.googleads.v8.common.IHotelCityInfo|null);

                        /** ListingDimensionInfo product_bidding_category */
                        product_bidding_category?: (google.ads.googleads.v8.common.IProductBiddingCategoryInfo|null);

                        /** ListingDimensionInfo product_brand */
                        product_brand?: (google.ads.googleads.v8.common.IProductBrandInfo|null);

                        /** ListingDimensionInfo product_channel */
                        product_channel?: (google.ads.googleads.v8.common.IProductChannelInfo|null);

                        /** ListingDimensionInfo product_channel_exclusivity */
                        product_channel_exclusivity?: (google.ads.googleads.v8.common.IProductChannelExclusivityInfo|null);

                        /** ListingDimensionInfo product_condition */
                        product_condition?: (google.ads.googleads.v8.common.IProductConditionInfo|null);

                        /** ListingDimensionInfo product_custom_attribute */
                        product_custom_attribute?: (google.ads.googleads.v8.common.IProductCustomAttributeInfo|null);

                        /** ListingDimensionInfo product_item_id */
                        product_item_id?: (google.ads.googleads.v8.common.IProductItemIdInfo|null);

                        /** ListingDimensionInfo product_type */
                        product_type?: (google.ads.googleads.v8.common.IProductTypeInfo|null);

                        /** ListingDimensionInfo unknown_listing_dimension */
                        unknown_listing_dimension?: (google.ads.googleads.v8.common.IUnknownListingDimensionInfo|null);
                    }

                    /** Represents a ListingDimensionInfo. */
                    class ListingDimensionInfo implements IListingDimensionInfo {

                        /**
                         * Constructs a new ListingDimensionInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IListingDimensionInfo);

                        /** ListingDimensionInfo hotel_id. */
                        public hotel_id?: (google.ads.googleads.v8.common.IHotelIdInfo|null);

                        /** ListingDimensionInfo hotel_class. */
                        public hotel_class?: (google.ads.googleads.v8.common.IHotelClassInfo|null);

                        /** ListingDimensionInfo hotel_country_region. */
                        public hotel_country_region?: (google.ads.googleads.v8.common.IHotelCountryRegionInfo|null);

                        /** ListingDimensionInfo hotel_state. */
                        public hotel_state?: (google.ads.googleads.v8.common.IHotelStateInfo|null);

                        /** ListingDimensionInfo hotel_city. */
                        public hotel_city?: (google.ads.googleads.v8.common.IHotelCityInfo|null);

                        /** ListingDimensionInfo product_bidding_category. */
                        public product_bidding_category?: (google.ads.googleads.v8.common.IProductBiddingCategoryInfo|null);

                        /** ListingDimensionInfo product_brand. */
                        public product_brand?: (google.ads.googleads.v8.common.IProductBrandInfo|null);

                        /** ListingDimensionInfo product_channel. */
                        public product_channel?: (google.ads.googleads.v8.common.IProductChannelInfo|null);

                        /** ListingDimensionInfo product_channel_exclusivity. */
                        public product_channel_exclusivity?: (google.ads.googleads.v8.common.IProductChannelExclusivityInfo|null);

                        /** ListingDimensionInfo product_condition. */
                        public product_condition?: (google.ads.googleads.v8.common.IProductConditionInfo|null);

                        /** ListingDimensionInfo product_custom_attribute. */
                        public product_custom_attribute?: (google.ads.googleads.v8.common.IProductCustomAttributeInfo|null);

                        /** ListingDimensionInfo product_item_id. */
                        public product_item_id?: (google.ads.googleads.v8.common.IProductItemIdInfo|null);

                        /** ListingDimensionInfo product_type. */
                        public product_type?: (google.ads.googleads.v8.common.IProductTypeInfo|null);

                        /** ListingDimensionInfo unknown_listing_dimension. */
                        public unknown_listing_dimension?: (google.ads.googleads.v8.common.IUnknownListingDimensionInfo|null);

                        /** ListingDimensionInfo dimension. */
                        public dimension?: ("hotel_id"|"hotel_class"|"hotel_country_region"|"hotel_state"|"hotel_city"|"product_bidding_category"|"product_brand"|"product_channel"|"product_channel_exclusivity"|"product_condition"|"product_custom_attribute"|"product_item_id"|"product_type"|"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.v8.common.IListingDimensionInfo): google.ads.googleads.v8.common.ListingDimensionInfo;

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

                        /**
                         * Encodes the specified ListingDimensionInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IListingDimensionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListingDimensionInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ListingDimensionInfo;

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

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

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

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

                    /** Properties of a HotelIdInfo. */
                    interface IHotelIdInfo {

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

                    /** Represents a HotelIdInfo. */
                    class HotelIdInfo implements IHotelIdInfo {

                        /**
                         * Constructs a new HotelIdInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IHotelIdInfo);

                        /** HotelIdInfo value. */
                        public value?: (string|null);

                        /** HotelIdInfo _value. */
                        public _value?: "value";

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

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

                        /**
                         * Encodes the specified HotelIdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IHotelIdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelIdInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.HotelIdInfo;

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

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

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

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

                    /** Properties of a HotelClassInfo. */
                    interface IHotelClassInfo {

                        /** HotelClassInfo value */
                        value?: (number|null);
                    }

                    /** Represents a HotelClassInfo. */
                    class HotelClassInfo implements IHotelClassInfo {

                        /**
                         * Constructs a new HotelClassInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IHotelClassInfo);

                        /** HotelClassInfo value. */
                        public value?: (number|null);

                        /** HotelClassInfo _value. */
                        public _value?: "value";

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

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

                        /**
                         * Encodes the specified HotelClassInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IHotelClassInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelClassInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.HotelClassInfo;

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

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

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

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

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IHotelCountryRegionInfo);

                        /** HotelCountryRegionInfo country_region_criterion. */
                        public country_region_criterion?: (string|null);

                        /** HotelCountryRegionInfo _country_region_criterion. */
                        public _country_region_criterion?: "country_region_criterion";

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

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

                        /**
                         * Encodes the specified HotelCountryRegionInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IHotelCountryRegionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelCountryRegionInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.HotelCountryRegionInfo;

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

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

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

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

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IHotelStateInfo);

                        /** HotelStateInfo state_criterion. */
                        public state_criterion?: (string|null);

                        /** HotelStateInfo _state_criterion. */
                        public _state_criterion?: "state_criterion";

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

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

                        /**
                         * Encodes the specified HotelStateInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IHotelStateInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelStateInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.HotelStateInfo;

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

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

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

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

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IHotelCityInfo);

                        /** HotelCityInfo city_criterion. */
                        public city_criterion?: (string|null);

                        /** HotelCityInfo _city_criterion. */
                        public _city_criterion?: "city_criterion";

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

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

                        /**
                         * Encodes the specified HotelCityInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IHotelCityInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelCityInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.HotelCityInfo;

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

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

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

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

                    /** Properties of a ProductBiddingCategoryInfo. */
                    interface IProductBiddingCategoryInfo {

                        /** ProductBiddingCategoryInfo id */
                        id?: (number|null);

                        /** ProductBiddingCategoryInfo country_code */
                        country_code?: (string|null);

                        /** ProductBiddingCategoryInfo level */
                        level?: (google.ads.googleads.v8.enums.ProductBiddingCategoryLevelEnum.ProductBiddingCategoryLevel|keyof typeof google.ads.googleads.v8.enums.ProductBiddingCategoryLevelEnum.ProductBiddingCategoryLevel|null);
                    }

                    /** Represents a ProductBiddingCategoryInfo. */
                    class ProductBiddingCategoryInfo implements IProductBiddingCategoryInfo {

                        /**
                         * Constructs a new ProductBiddingCategoryInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IProductBiddingCategoryInfo);

                        /** ProductBiddingCategoryInfo id. */
                        public id?: (number|null);

                        /** ProductBiddingCategoryInfo country_code. */
                        public country_code?: (string|null);

                        /** ProductBiddingCategoryInfo level. */
                        public level: (google.ads.googleads.v8.enums.ProductBiddingCategoryLevelEnum.ProductBiddingCategoryLevel|keyof typeof google.ads.googleads.v8.enums.ProductBiddingCategoryLevelEnum.ProductBiddingCategoryLevel);

                        /** ProductBiddingCategoryInfo _id. */
                        public _id?: "id";

                        /** ProductBiddingCategoryInfo _country_code. */
                        public _country_code?: "country_code";

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

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

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

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

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

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

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

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

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

                    /** Properties of a ProductBrandInfo. */
                    interface IProductBrandInfo {

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

                    /** Represents a ProductBrandInfo. */
                    class ProductBrandInfo implements IProductBrandInfo {

                        /**
                         * Constructs a new ProductBrandInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IProductBrandInfo);

                        /** ProductBrandInfo value. */
                        public value?: (string|null);

                        /** ProductBrandInfo _value. */
                        public _value?: "value";

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

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

                        /**
                         * Encodes the specified ProductBrandInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IProductBrandInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductBrandInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ProductBrandInfo;

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

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

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

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

                    /** Properties of a ProductChannelInfo. */
                    interface IProductChannelInfo {

                        /** ProductChannelInfo channel */
                        channel?: (google.ads.googleads.v8.enums.ProductChannelEnum.ProductChannel|keyof typeof google.ads.googleads.v8.enums.ProductChannelEnum.ProductChannel|null);
                    }

                    /** Represents a ProductChannelInfo. */
                    class ProductChannelInfo implements IProductChannelInfo {

                        /**
                         * Constructs a new ProductChannelInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IProductChannelInfo);

                        /** ProductChannelInfo channel. */
                        public channel: (google.ads.googleads.v8.enums.ProductChannelEnum.ProductChannel|keyof typeof google.ads.googleads.v8.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.v8.common.IProductChannelInfo): google.ads.googleads.v8.common.ProductChannelInfo;

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

                        /**
                         * Encodes the specified ProductChannelInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IProductChannelInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductChannelInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ProductChannelInfo;

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

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

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

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

                    /** Properties of a ProductChannelExclusivityInfo. */
                    interface IProductChannelExclusivityInfo {

                        /** ProductChannelExclusivityInfo channel_exclusivity */
                        channel_exclusivity?: (google.ads.googleads.v8.enums.ProductChannelExclusivityEnum.ProductChannelExclusivity|keyof typeof google.ads.googleads.v8.enums.ProductChannelExclusivityEnum.ProductChannelExclusivity|null);
                    }

                    /** Represents a ProductChannelExclusivityInfo. */
                    class ProductChannelExclusivityInfo implements IProductChannelExclusivityInfo {

                        /**
                         * Constructs a new ProductChannelExclusivityInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IProductChannelExclusivityInfo);

                        /** ProductChannelExclusivityInfo channel_exclusivity. */
                        public channel_exclusivity: (google.ads.googleads.v8.enums.ProductChannelExclusivityEnum.ProductChannelExclusivity|keyof typeof google.ads.googleads.v8.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.v8.common.IProductChannelExclusivityInfo): google.ads.googleads.v8.common.ProductChannelExclusivityInfo;

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

                        /**
                         * Encodes the specified ProductChannelExclusivityInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IProductChannelExclusivityInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductChannelExclusivityInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ProductChannelExclusivityInfo;

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

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

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

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

                    /** Properties of a ProductConditionInfo. */
                    interface IProductConditionInfo {

                        /** ProductConditionInfo condition */
                        condition?: (google.ads.googleads.v8.enums.ProductConditionEnum.ProductCondition|keyof typeof google.ads.googleads.v8.enums.ProductConditionEnum.ProductCondition|null);
                    }

                    /** Represents a ProductConditionInfo. */
                    class ProductConditionInfo implements IProductConditionInfo {

                        /**
                         * Constructs a new ProductConditionInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IProductConditionInfo);

                        /** ProductConditionInfo condition. */
                        public condition: (google.ads.googleads.v8.enums.ProductConditionEnum.ProductCondition|keyof typeof google.ads.googleads.v8.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.v8.common.IProductConditionInfo): google.ads.googleads.v8.common.ProductConditionInfo;

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

                        /**
                         * Encodes the specified ProductConditionInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IProductConditionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductConditionInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ProductConditionInfo;

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

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

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

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

                    /** Properties of a ProductCustomAttributeInfo. */
                    interface IProductCustomAttributeInfo {

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

                        /** ProductCustomAttributeInfo index */
                        index?: (google.ads.googleads.v8.enums.ProductCustomAttributeIndexEnum.ProductCustomAttributeIndex|keyof typeof google.ads.googleads.v8.enums.ProductCustomAttributeIndexEnum.ProductCustomAttributeIndex|null);
                    }

                    /** Represents a ProductCustomAttributeInfo. */
                    class ProductCustomAttributeInfo implements IProductCustomAttributeInfo {

                        /**
                         * Constructs a new ProductCustomAttributeInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IProductCustomAttributeInfo);

                        /** ProductCustomAttributeInfo value. */
                        public value?: (string|null);

                        /** ProductCustomAttributeInfo index. */
                        public index: (google.ads.googleads.v8.enums.ProductCustomAttributeIndexEnum.ProductCustomAttributeIndex|keyof typeof google.ads.googleads.v8.enums.ProductCustomAttributeIndexEnum.ProductCustomAttributeIndex);

                        /** ProductCustomAttributeInfo _value. */
                        public _value?: "value";

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

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

                        /**
                         * Encodes the specified ProductCustomAttributeInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IProductCustomAttributeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductCustomAttributeInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ProductCustomAttributeInfo;

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

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

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

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

                    /** Properties of a ProductItemIdInfo. */
                    interface IProductItemIdInfo {

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

                    /** Represents a ProductItemIdInfo. */
                    class ProductItemIdInfo implements IProductItemIdInfo {

                        /**
                         * Constructs a new ProductItemIdInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IProductItemIdInfo);

                        /** ProductItemIdInfo value. */
                        public value?: (string|null);

                        /** ProductItemIdInfo _value. */
                        public _value?: "value";

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

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

                        /**
                         * Encodes the specified ProductItemIdInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IProductItemIdInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductItemIdInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ProductItemIdInfo;

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

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

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

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

                    /** Properties of a ProductTypeInfo. */
                    interface IProductTypeInfo {

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

                        /** ProductTypeInfo level */
                        level?: (google.ads.googleads.v8.enums.ProductTypeLevelEnum.ProductTypeLevel|keyof typeof google.ads.googleads.v8.enums.ProductTypeLevelEnum.ProductTypeLevel|null);
                    }

                    /** Represents a ProductTypeInfo. */
                    class ProductTypeInfo implements IProductTypeInfo {

                        /**
                         * Constructs a new ProductTypeInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IProductTypeInfo);

                        /** ProductTypeInfo value. */
                        public value?: (string|null);

                        /** ProductTypeInfo level. */
                        public level: (google.ads.googleads.v8.enums.ProductTypeLevelEnum.ProductTypeLevel|keyof typeof google.ads.googleads.v8.enums.ProductTypeLevelEnum.ProductTypeLevel);

                        /** ProductTypeInfo _value. */
                        public _value?: "value";

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

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

                        /**
                         * Encodes the specified ProductTypeInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IProductTypeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductTypeInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ProductTypeInfo;

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

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

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

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

                    /** Properties of an UnknownListingDimensionInfo. */
                    interface IUnknownListingDimensionInfo {
                    }

                    /** Represents an UnknownListingDimensionInfo. */
                    class UnknownListingDimensionInfo implements IUnknownListingDimensionInfo {

                        /**
                         * Constructs a new UnknownListingDimensionInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.IUnknownListingDimensionInfo): google.ads.googleads.v8.common.UnknownListingDimensionInfo;

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

                        /**
                         * Encodes the specified UnknownListingDimensionInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IUnknownListingDimensionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UnknownListingDimensionInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.UnknownListingDimensionInfo;

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

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

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

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

                    /** Properties of a HotelDateSelectionTypeInfo. */
                    interface IHotelDateSelectionTypeInfo {

                        /** HotelDateSelectionTypeInfo type */
                        type?: (google.ads.googleads.v8.enums.HotelDateSelectionTypeEnum.HotelDateSelectionType|keyof typeof google.ads.googleads.v8.enums.HotelDateSelectionTypeEnum.HotelDateSelectionType|null);
                    }

                    /** Represents a HotelDateSelectionTypeInfo. */
                    class HotelDateSelectionTypeInfo implements IHotelDateSelectionTypeInfo {

                        /**
                         * Constructs a new HotelDateSelectionTypeInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IHotelDateSelectionTypeInfo);

                        /** HotelDateSelectionTypeInfo type. */
                        public type: (google.ads.googleads.v8.enums.HotelDateSelectionTypeEnum.HotelDateSelectionType|keyof typeof google.ads.googleads.v8.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.v8.common.IHotelDateSelectionTypeInfo): google.ads.googleads.v8.common.HotelDateSelectionTypeInfo;

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

                        /**
                         * Encodes the specified HotelDateSelectionTypeInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IHotelDateSelectionTypeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelDateSelectionTypeInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.HotelDateSelectionTypeInfo;

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

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

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

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

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IHotelAdvanceBookingWindowInfo);

                        /** HotelAdvanceBookingWindowInfo min_days. */
                        public min_days?: (number|null);

                        /** HotelAdvanceBookingWindowInfo max_days. */
                        public max_days?: (number|null);

                        /** HotelAdvanceBookingWindowInfo _min_days. */
                        public _min_days?: "min_days";

                        /** HotelAdvanceBookingWindowInfo _max_days. */
                        public _max_days?: "max_days";

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

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

                        /**
                         * Encodes the specified HotelAdvanceBookingWindowInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IHotelAdvanceBookingWindowInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelAdvanceBookingWindowInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.HotelAdvanceBookingWindowInfo;

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

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

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

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

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IHotelLengthOfStayInfo);

                        /** HotelLengthOfStayInfo min_nights. */
                        public min_nights?: (number|null);

                        /** HotelLengthOfStayInfo max_nights. */
                        public max_nights?: (number|null);

                        /** HotelLengthOfStayInfo _min_nights. */
                        public _min_nights?: "min_nights";

                        /** HotelLengthOfStayInfo _max_nights. */
                        public _max_nights?: "max_nights";

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

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

                        /**
                         * Encodes the specified HotelLengthOfStayInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IHotelLengthOfStayInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelLengthOfStayInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.HotelLengthOfStayInfo;

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

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

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

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

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.IHotelCheckInDateRangeInfo): google.ads.googleads.v8.common.HotelCheckInDateRangeInfo;

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

                        /**
                         * Encodes the specified HotelCheckInDateRangeInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IHotelCheckInDateRangeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelCheckInDateRangeInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.HotelCheckInDateRangeInfo;

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

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

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

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

                    /** Properties of a HotelCheckInDayInfo. */
                    interface IHotelCheckInDayInfo {

                        /** HotelCheckInDayInfo day_of_week */
                        day_of_week?: (google.ads.googleads.v8.enums.DayOfWeekEnum.DayOfWeek|keyof typeof google.ads.googleads.v8.enums.DayOfWeekEnum.DayOfWeek|null);
                    }

                    /** Represents a HotelCheckInDayInfo. */
                    class HotelCheckInDayInfo implements IHotelCheckInDayInfo {

                        /**
                         * Constructs a new HotelCheckInDayInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IHotelCheckInDayInfo);

                        /** HotelCheckInDayInfo day_of_week. */
                        public day_of_week: (google.ads.googleads.v8.enums.DayOfWeekEnum.DayOfWeek|keyof typeof google.ads.googleads.v8.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.v8.common.IHotelCheckInDayInfo): google.ads.googleads.v8.common.HotelCheckInDayInfo;

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

                        /**
                         * Encodes the specified HotelCheckInDayInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IHotelCheckInDayInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelCheckInDayInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.HotelCheckInDayInfo;

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

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

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

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

                    /** Properties of an InteractionTypeInfo. */
                    interface IInteractionTypeInfo {

                        /** InteractionTypeInfo type */
                        type?: (google.ads.googleads.v8.enums.InteractionTypeEnum.InteractionType|keyof typeof google.ads.googleads.v8.enums.InteractionTypeEnum.InteractionType|null);
                    }

                    /** Represents an InteractionTypeInfo. */
                    class InteractionTypeInfo implements IInteractionTypeInfo {

                        /**
                         * Constructs a new InteractionTypeInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IInteractionTypeInfo);

                        /** InteractionTypeInfo type. */
                        public type: (google.ads.googleads.v8.enums.InteractionTypeEnum.InteractionType|keyof typeof google.ads.googleads.v8.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.v8.common.IInteractionTypeInfo): google.ads.googleads.v8.common.InteractionTypeInfo;

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

                        /**
                         * Encodes the specified InteractionTypeInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IInteractionTypeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an InteractionTypeInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.InteractionTypeInfo;

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

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

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

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

                    /** Properties of an AdScheduleInfo. */
                    interface IAdScheduleInfo {

                        /** AdScheduleInfo start_minute */
                        start_minute?: (google.ads.googleads.v8.enums.MinuteOfHourEnum.MinuteOfHour|keyof typeof google.ads.googleads.v8.enums.MinuteOfHourEnum.MinuteOfHour|null);

                        /** AdScheduleInfo end_minute */
                        end_minute?: (google.ads.googleads.v8.enums.MinuteOfHourEnum.MinuteOfHour|keyof typeof google.ads.googleads.v8.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.v8.enums.DayOfWeekEnum.DayOfWeek|keyof typeof google.ads.googleads.v8.enums.DayOfWeekEnum.DayOfWeek|null);
                    }

                    /** Represents an AdScheduleInfo. */
                    class AdScheduleInfo implements IAdScheduleInfo {

                        /**
                         * Constructs a new AdScheduleInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IAdScheduleInfo);

                        /** AdScheduleInfo start_minute. */
                        public start_minute: (google.ads.googleads.v8.enums.MinuteOfHourEnum.MinuteOfHour|keyof typeof google.ads.googleads.v8.enums.MinuteOfHourEnum.MinuteOfHour);

                        /** AdScheduleInfo end_minute. */
                        public end_minute: (google.ads.googleads.v8.enums.MinuteOfHourEnum.MinuteOfHour|keyof typeof google.ads.googleads.v8.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.v8.enums.DayOfWeekEnum.DayOfWeek|keyof typeof google.ads.googleads.v8.enums.DayOfWeekEnum.DayOfWeek);

                        /** AdScheduleInfo _start_hour. */
                        public _start_hour?: "start_hour";

                        /** AdScheduleInfo _end_hour. */
                        public _end_hour?: "end_hour";

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

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

                        /**
                         * Encodes the specified AdScheduleInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IAdScheduleInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdScheduleInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.AdScheduleInfo;

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

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

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

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

                    /** Properties of an AgeRangeInfo. */
                    interface IAgeRangeInfo {

                        /** AgeRangeInfo type */
                        type?: (google.ads.googleads.v8.enums.AgeRangeTypeEnum.AgeRangeType|keyof typeof google.ads.googleads.v8.enums.AgeRangeTypeEnum.AgeRangeType|null);
                    }

                    /** Represents an AgeRangeInfo. */
                    class AgeRangeInfo implements IAgeRangeInfo {

                        /**
                         * Constructs a new AgeRangeInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IAgeRangeInfo);

                        /** AgeRangeInfo type. */
                        public type: (google.ads.googleads.v8.enums.AgeRangeTypeEnum.AgeRangeType|keyof typeof google.ads.googleads.v8.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.v8.common.IAgeRangeInfo): google.ads.googleads.v8.common.AgeRangeInfo;

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

                        /**
                         * Encodes the specified AgeRangeInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IAgeRangeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AgeRangeInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.AgeRangeInfo;

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

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

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

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

                    /** Properties of a GenderInfo. */
                    interface IGenderInfo {

                        /** GenderInfo type */
                        type?: (google.ads.googleads.v8.enums.GenderTypeEnum.GenderType|keyof typeof google.ads.googleads.v8.enums.GenderTypeEnum.GenderType|null);
                    }

                    /** Represents a GenderInfo. */
                    class GenderInfo implements IGenderInfo {

                        /**
                         * Constructs a new GenderInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IGenderInfo);

                        /** GenderInfo type. */
                        public type: (google.ads.googleads.v8.enums.GenderTypeEnum.GenderType|keyof typeof google.ads.googleads.v8.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.v8.common.IGenderInfo): google.ads.googleads.v8.common.GenderInfo;

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

                        /**
                         * Encodes the specified GenderInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IGenderInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenderInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.GenderInfo;

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

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

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

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

                    /** Properties of an IncomeRangeInfo. */
                    interface IIncomeRangeInfo {

                        /** IncomeRangeInfo type */
                        type?: (google.ads.googleads.v8.enums.IncomeRangeTypeEnum.IncomeRangeType|keyof typeof google.ads.googleads.v8.enums.IncomeRangeTypeEnum.IncomeRangeType|null);
                    }

                    /** Represents an IncomeRangeInfo. */
                    class IncomeRangeInfo implements IIncomeRangeInfo {

                        /**
                         * Constructs a new IncomeRangeInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IIncomeRangeInfo);

                        /** IncomeRangeInfo type. */
                        public type: (google.ads.googleads.v8.enums.IncomeRangeTypeEnum.IncomeRangeType|keyof typeof google.ads.googleads.v8.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.v8.common.IIncomeRangeInfo): google.ads.googleads.v8.common.IncomeRangeInfo;

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

                        /**
                         * Encodes the specified IncomeRangeInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IIncomeRangeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an IncomeRangeInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.IncomeRangeInfo;

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

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

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

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

                    /** Properties of a ParentalStatusInfo. */
                    interface IParentalStatusInfo {

                        /** ParentalStatusInfo type */
                        type?: (google.ads.googleads.v8.enums.ParentalStatusTypeEnum.ParentalStatusType|keyof typeof google.ads.googleads.v8.enums.ParentalStatusTypeEnum.ParentalStatusType|null);
                    }

                    /** Represents a ParentalStatusInfo. */
                    class ParentalStatusInfo implements IParentalStatusInfo {

                        /**
                         * Constructs a new ParentalStatusInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IParentalStatusInfo);

                        /** ParentalStatusInfo type. */
                        public type: (google.ads.googleads.v8.enums.ParentalStatusTypeEnum.ParentalStatusType|keyof typeof google.ads.googleads.v8.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.v8.common.IParentalStatusInfo): google.ads.googleads.v8.common.ParentalStatusInfo;

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

                        /**
                         * Encodes the specified ParentalStatusInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IParentalStatusInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ParentalStatusInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ParentalStatusInfo;

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

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

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

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

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IYouTubeVideoInfo);

                        /** YouTubeVideoInfo video_id. */
                        public video_id?: (string|null);

                        /** YouTubeVideoInfo _video_id. */
                        public _video_id?: "video_id";

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

                        /**
                         * Encodes the specified YouTubeVideoInfo message. Does not implicitly {@link google.ads.googleads.v8.common.YouTubeVideoInfo.verify|verify} messages.
                         * @param m YouTubeVideoInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IYouTubeVideoInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified YouTubeVideoInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IYouTubeVideoInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a YouTubeVideoInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.YouTubeVideoInfo;

                        /**
                         * Verifies a YouTubeVideoInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a YouTubeVideoInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns YouTubeVideoInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.YouTubeVideoInfo;

                        /**
                         * Creates a plain object from a YouTubeVideoInfo message. Also converts values to other types if specified.
                         * @param m YouTubeVideoInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.YouTubeVideoInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this YouTubeVideoInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IYouTubeChannelInfo);

                        /** YouTubeChannelInfo channel_id. */
                        public channel_id?: (string|null);

                        /** YouTubeChannelInfo _channel_id. */
                        public _channel_id?: "channel_id";

                        /**
                         * Creates a new YouTubeChannelInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns YouTubeChannelInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IYouTubeChannelInfo): google.ads.googleads.v8.common.YouTubeChannelInfo;

                        /**
                         * Encodes the specified YouTubeChannelInfo message. Does not implicitly {@link google.ads.googleads.v8.common.YouTubeChannelInfo.verify|verify} messages.
                         * @param m YouTubeChannelInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IYouTubeChannelInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified YouTubeChannelInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IYouTubeChannelInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a YouTubeChannelInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.YouTubeChannelInfo;

                        /**
                         * Verifies a YouTubeChannelInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a YouTubeChannelInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns YouTubeChannelInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.YouTubeChannelInfo;

                        /**
                         * Creates a plain object from a YouTubeChannelInfo message. Also converts values to other types if specified.
                         * @param m YouTubeChannelInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.YouTubeChannelInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this YouTubeChannelInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IUserListInfo);

                        /** UserListInfo user_list. */
                        public user_list?: (string|null);

                        /** UserListInfo _user_list. */
                        public _user_list?: "user_list";

                        /**
                         * Creates a new UserListInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IUserListInfo): google.ads.googleads.v8.common.UserListInfo;

                        /**
                         * Encodes the specified UserListInfo message. Does not implicitly {@link google.ads.googleads.v8.common.UserListInfo.verify|verify} messages.
                         * @param m UserListInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IUserListInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IUserListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.UserListInfo;

                        /**
                         * Verifies a UserListInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserListInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.UserListInfo;

                        /**
                         * Creates a plain object from a UserListInfo message. Also converts values to other types if specified.
                         * @param m UserListInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.UserListInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ProximityInfo. */
                    interface IProximityInfo {

                        /** ProximityInfo geo_point */
                        geo_point?: (google.ads.googleads.v8.common.IGeoPointInfo|null);

                        /** ProximityInfo radius */
                        radius?: (number|null);

                        /** ProximityInfo radius_units */
                        radius_units?: (google.ads.googleads.v8.enums.ProximityRadiusUnitsEnum.ProximityRadiusUnits|keyof typeof google.ads.googleads.v8.enums.ProximityRadiusUnitsEnum.ProximityRadiusUnits|null);

                        /** ProximityInfo address */
                        address?: (google.ads.googleads.v8.common.IAddressInfo|null);
                    }

                    /** Represents a ProximityInfo. */
                    class ProximityInfo implements IProximityInfo {

                        /**
                         * Constructs a new ProximityInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IProximityInfo);

                        /** ProximityInfo geo_point. */
                        public geo_point?: (google.ads.googleads.v8.common.IGeoPointInfo|null);

                        /** ProximityInfo radius. */
                        public radius?: (number|null);

                        /** ProximityInfo radius_units. */
                        public radius_units: (google.ads.googleads.v8.enums.ProximityRadiusUnitsEnum.ProximityRadiusUnits|keyof typeof google.ads.googleads.v8.enums.ProximityRadiusUnitsEnum.ProximityRadiusUnits);

                        /** ProximityInfo address. */
                        public address?: (google.ads.googleads.v8.common.IAddressInfo|null);

                        /** ProximityInfo _radius. */
                        public _radius?: "radius";

                        /**
                         * Creates a new ProximityInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProximityInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IProximityInfo): google.ads.googleads.v8.common.ProximityInfo;

                        /**
                         * Encodes the specified ProximityInfo message. Does not implicitly {@link google.ads.googleads.v8.common.ProximityInfo.verify|verify} messages.
                         * @param m ProximityInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IProximityInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProximityInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IProximityInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProximityInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ProximityInfo;

                        /**
                         * Verifies a ProximityInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProximityInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ProximityInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.ProximityInfo;

                        /**
                         * Creates a plain object from a ProximityInfo message. Also converts values to other types if specified.
                         * @param m ProximityInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.ProximityInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProximityInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** GeoPointInfo _longitude_in_micro_degrees. */
                        public _longitude_in_micro_degrees?: "longitude_in_micro_degrees";

                        /** GeoPointInfo _latitude_in_micro_degrees. */
                        public _latitude_in_micro_degrees?: "latitude_in_micro_degrees";

                        /**
                         * Creates a new GeoPointInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GeoPointInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IGeoPointInfo): google.ads.googleads.v8.common.GeoPointInfo;

                        /**
                         * Encodes the specified GeoPointInfo message. Does not implicitly {@link google.ads.googleads.v8.common.GeoPointInfo.verify|verify} messages.
                         * @param m GeoPointInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IGeoPointInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GeoPointInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IGeoPointInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GeoPointInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.GeoPointInfo;

                        /**
                         * Verifies a GeoPointInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GeoPointInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GeoPointInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.GeoPointInfo;

                        /**
                         * Creates a plain object from a GeoPointInfo message. Also converts values to other types if specified.
                         * @param m GeoPointInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.GeoPointInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GeoPointInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** AddressInfo _postal_code. */
                        public _postal_code?: "postal_code";

                        /** AddressInfo _province_code. */
                        public _province_code?: "province_code";

                        /** AddressInfo _country_code. */
                        public _country_code?: "country_code";

                        /** AddressInfo _province_name. */
                        public _province_name?: "province_name";

                        /** AddressInfo _street_address. */
                        public _street_address?: "street_address";

                        /** AddressInfo _street_address2. */
                        public _street_address2?: "street_address2";

                        /** AddressInfo _city_name. */
                        public _city_name?: "city_name";

                        /**
                         * Creates a new AddressInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AddressInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IAddressInfo): google.ads.googleads.v8.common.AddressInfo;

                        /**
                         * Encodes the specified AddressInfo message. Does not implicitly {@link google.ads.googleads.v8.common.AddressInfo.verify|verify} messages.
                         * @param m AddressInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IAddressInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AddressInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IAddressInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AddressInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.AddressInfo;

                        /**
                         * Verifies an AddressInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AddressInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AddressInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.AddressInfo;

                        /**
                         * Creates a plain object from an AddressInfo message. Also converts values to other types if specified.
                         * @param m AddressInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.AddressInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AddressInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ITopicInfo);

                        /** TopicInfo topic_constant. */
                        public topic_constant?: (string|null);

                        /** TopicInfo path. */
                        public path: string[];

                        /** TopicInfo _topic_constant. */
                        public _topic_constant?: "topic_constant";

                        /**
                         * Creates a new TopicInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TopicInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ITopicInfo): google.ads.googleads.v8.common.TopicInfo;

                        /**
                         * Encodes the specified TopicInfo message. Does not implicitly {@link google.ads.googleads.v8.common.TopicInfo.verify|verify} messages.
                         * @param m TopicInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ITopicInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TopicInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ITopicInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TopicInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.TopicInfo;

                        /**
                         * Verifies a TopicInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TopicInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TopicInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.TopicInfo;

                        /**
                         * Creates a plain object from a TopicInfo message. Also converts values to other types if specified.
                         * @param m TopicInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.TopicInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TopicInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ILanguageInfo);

                        /** LanguageInfo language_constant. */
                        public language_constant?: (string|null);

                        /** LanguageInfo _language_constant. */
                        public _language_constant?: "language_constant";

                        /**
                         * Creates a new LanguageInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LanguageInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ILanguageInfo): google.ads.googleads.v8.common.LanguageInfo;

                        /**
                         * Encodes the specified LanguageInfo message. Does not implicitly {@link google.ads.googleads.v8.common.LanguageInfo.verify|verify} messages.
                         * @param m LanguageInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ILanguageInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LanguageInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ILanguageInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LanguageInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.LanguageInfo;

                        /**
                         * Verifies a LanguageInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LanguageInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns LanguageInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.LanguageInfo;

                        /**
                         * Creates a plain object from a LanguageInfo message. Also converts values to other types if specified.
                         * @param m LanguageInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.LanguageInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LanguageInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IIpBlockInfo);

                        /** IpBlockInfo ip_address. */
                        public ip_address?: (string|null);

                        /** IpBlockInfo _ip_address. */
                        public _ip_address?: "ip_address";

                        /**
                         * Creates a new IpBlockInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns IpBlockInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IIpBlockInfo): google.ads.googleads.v8.common.IpBlockInfo;

                        /**
                         * Encodes the specified IpBlockInfo message. Does not implicitly {@link google.ads.googleads.v8.common.IpBlockInfo.verify|verify} messages.
                         * @param m IpBlockInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IIpBlockInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified IpBlockInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IIpBlockInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an IpBlockInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.IpBlockInfo;

                        /**
                         * Verifies an IpBlockInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an IpBlockInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns IpBlockInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.IpBlockInfo;

                        /**
                         * Creates a plain object from an IpBlockInfo message. Also converts values to other types if specified.
                         * @param m IpBlockInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.IpBlockInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this IpBlockInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ContentLabelInfo. */
                    interface IContentLabelInfo {

                        /** ContentLabelInfo type */
                        type?: (google.ads.googleads.v8.enums.ContentLabelTypeEnum.ContentLabelType|keyof typeof google.ads.googleads.v8.enums.ContentLabelTypeEnum.ContentLabelType|null);
                    }

                    /** Represents a ContentLabelInfo. */
                    class ContentLabelInfo implements IContentLabelInfo {

                        /**
                         * Constructs a new ContentLabelInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IContentLabelInfo);

                        /** ContentLabelInfo type. */
                        public type: (google.ads.googleads.v8.enums.ContentLabelTypeEnum.ContentLabelType|keyof typeof google.ads.googleads.v8.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.v8.common.IContentLabelInfo): google.ads.googleads.v8.common.ContentLabelInfo;

                        /**
                         * Encodes the specified ContentLabelInfo message. Does not implicitly {@link google.ads.googleads.v8.common.ContentLabelInfo.verify|verify} messages.
                         * @param m ContentLabelInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IContentLabelInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ContentLabelInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IContentLabelInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ContentLabelInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ContentLabelInfo;

                        /**
                         * Verifies a ContentLabelInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ContentLabelInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ContentLabelInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.ContentLabelInfo;

                        /**
                         * Creates a plain object from a ContentLabelInfo message. Also converts values to other types if specified.
                         * @param m ContentLabelInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.ContentLabelInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ContentLabelInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ICarrierInfo);

                        /** CarrierInfo carrier_constant. */
                        public carrier_constant?: (string|null);

                        /** CarrierInfo _carrier_constant. */
                        public _carrier_constant?: "carrier_constant";

                        /**
                         * Creates a new CarrierInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CarrierInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ICarrierInfo): google.ads.googleads.v8.common.CarrierInfo;

                        /**
                         * Encodes the specified CarrierInfo message. Does not implicitly {@link google.ads.googleads.v8.common.CarrierInfo.verify|verify} messages.
                         * @param m CarrierInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ICarrierInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CarrierInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ICarrierInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CarrierInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.CarrierInfo;

                        /**
                         * Verifies a CarrierInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CarrierInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CarrierInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.CarrierInfo;

                        /**
                         * Creates a plain object from a CarrierInfo message. Also converts values to other types if specified.
                         * @param m CarrierInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.CarrierInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CarrierInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IUserInterestInfo);

                        /** UserInterestInfo user_interest_category. */
                        public user_interest_category?: (string|null);

                        /** UserInterestInfo _user_interest_category. */
                        public _user_interest_category?: "user_interest_category";

                        /**
                         * Creates a new UserInterestInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserInterestInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IUserInterestInfo): google.ads.googleads.v8.common.UserInterestInfo;

                        /**
                         * Encodes the specified UserInterestInfo message. Does not implicitly {@link google.ads.googleads.v8.common.UserInterestInfo.verify|verify} messages.
                         * @param m UserInterestInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IUserInterestInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserInterestInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IUserInterestInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserInterestInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.UserInterestInfo;

                        /**
                         * Verifies a UserInterestInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserInterestInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserInterestInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.UserInterestInfo;

                        /**
                         * Creates a plain object from a UserInterestInfo message. Also converts values to other types if specified.
                         * @param m UserInterestInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.UserInterestInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserInterestInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a WebpageInfo. */
                    interface IWebpageInfo {

                        /** WebpageInfo criterion_name */
                        criterion_name?: (string|null);

                        /** WebpageInfo conditions */
                        conditions?: (google.ads.googleads.v8.common.IWebpageConditionInfo[]|null);

                        /** WebpageInfo coverage_percentage */
                        coverage_percentage?: (number|null);

                        /** WebpageInfo sample */
                        sample?: (google.ads.googleads.v8.common.IWebpageSampleInfo|null);
                    }

                    /** Represents a WebpageInfo. */
                    class WebpageInfo implements IWebpageInfo {

                        /**
                         * Constructs a new WebpageInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IWebpageInfo);

                        /** WebpageInfo criterion_name. */
                        public criterion_name?: (string|null);

                        /** WebpageInfo conditions. */
                        public conditions: google.ads.googleads.v8.common.IWebpageConditionInfo[];

                        /** WebpageInfo coverage_percentage. */
                        public coverage_percentage: number;

                        /** WebpageInfo sample. */
                        public sample?: (google.ads.googleads.v8.common.IWebpageSampleInfo|null);

                        /** WebpageInfo _criterion_name. */
                        public _criterion_name?: "criterion_name";

                        /**
                         * Creates a new WebpageInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns WebpageInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IWebpageInfo): google.ads.googleads.v8.common.WebpageInfo;

                        /**
                         * Encodes the specified WebpageInfo message. Does not implicitly {@link google.ads.googleads.v8.common.WebpageInfo.verify|verify} messages.
                         * @param m WebpageInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IWebpageInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified WebpageInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IWebpageInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a WebpageInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.WebpageInfo;

                        /**
                         * Verifies a WebpageInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a WebpageInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns WebpageInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.WebpageInfo;

                        /**
                         * Creates a plain object from a WebpageInfo message. Also converts values to other types if specified.
                         * @param m WebpageInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.WebpageInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this WebpageInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a WebpageConditionInfo. */
                    interface IWebpageConditionInfo {

                        /** WebpageConditionInfo operand */
                        operand?: (google.ads.googleads.v8.enums.WebpageConditionOperandEnum.WebpageConditionOperand|keyof typeof google.ads.googleads.v8.enums.WebpageConditionOperandEnum.WebpageConditionOperand|null);

                        /** WebpageConditionInfo operator */
                        operator?: (google.ads.googleads.v8.enums.WebpageConditionOperatorEnum.WebpageConditionOperator|keyof typeof google.ads.googleads.v8.enums.WebpageConditionOperatorEnum.WebpageConditionOperator|null);

                        /** WebpageConditionInfo argument */
                        argument?: (string|null);
                    }

                    /** Represents a WebpageConditionInfo. */
                    class WebpageConditionInfo implements IWebpageConditionInfo {

                        /**
                         * Constructs a new WebpageConditionInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IWebpageConditionInfo);

                        /** WebpageConditionInfo operand. */
                        public operand: (google.ads.googleads.v8.enums.WebpageConditionOperandEnum.WebpageConditionOperand|keyof typeof google.ads.googleads.v8.enums.WebpageConditionOperandEnum.WebpageConditionOperand);

                        /** WebpageConditionInfo operator. */
                        public operator: (google.ads.googleads.v8.enums.WebpageConditionOperatorEnum.WebpageConditionOperator|keyof typeof google.ads.googleads.v8.enums.WebpageConditionOperatorEnum.WebpageConditionOperator);

                        /** WebpageConditionInfo argument. */
                        public argument?: (string|null);

                        /** WebpageConditionInfo _argument. */
                        public _argument?: "argument";

                        /**
                         * Creates a new WebpageConditionInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns WebpageConditionInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IWebpageConditionInfo): google.ads.googleads.v8.common.WebpageConditionInfo;

                        /**
                         * Encodes the specified WebpageConditionInfo message. Does not implicitly {@link google.ads.googleads.v8.common.WebpageConditionInfo.verify|verify} messages.
                         * @param m WebpageConditionInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IWebpageConditionInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified WebpageConditionInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IWebpageConditionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a WebpageConditionInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.WebpageConditionInfo;

                        /**
                         * Verifies a WebpageConditionInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a WebpageConditionInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns WebpageConditionInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.WebpageConditionInfo;

                        /**
                         * Creates a plain object from a WebpageConditionInfo message. Also converts values to other types if specified.
                         * @param m WebpageConditionInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.WebpageConditionInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this WebpageConditionInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.IWebpageSampleInfo): google.ads.googleads.v8.common.WebpageSampleInfo;

                        /**
                         * Encodes the specified WebpageSampleInfo message. Does not implicitly {@link google.ads.googleads.v8.common.WebpageSampleInfo.verify|verify} messages.
                         * @param m WebpageSampleInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IWebpageSampleInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified WebpageSampleInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IWebpageSampleInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a WebpageSampleInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.WebpageSampleInfo;

                        /**
                         * Verifies a WebpageSampleInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a WebpageSampleInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns WebpageSampleInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.WebpageSampleInfo;

                        /**
                         * Creates a plain object from a WebpageSampleInfo message. Also converts values to other types if specified.
                         * @param m WebpageSampleInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.WebpageSampleInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this WebpageSampleInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IOperatingSystemVersionInfo);

                        /** OperatingSystemVersionInfo operating_system_version_constant. */
                        public operating_system_version_constant?: (string|null);

                        /** OperatingSystemVersionInfo _operating_system_version_constant. */
                        public _operating_system_version_constant?: "operating_system_version_constant";

                        /**
                         * Creates a new OperatingSystemVersionInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OperatingSystemVersionInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IOperatingSystemVersionInfo): google.ads.googleads.v8.common.OperatingSystemVersionInfo;

                        /**
                         * Encodes the specified OperatingSystemVersionInfo message. Does not implicitly {@link google.ads.googleads.v8.common.OperatingSystemVersionInfo.verify|verify} messages.
                         * @param m OperatingSystemVersionInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IOperatingSystemVersionInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OperatingSystemVersionInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IOperatingSystemVersionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OperatingSystemVersionInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.OperatingSystemVersionInfo;

                        /**
                         * Verifies an OperatingSystemVersionInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an OperatingSystemVersionInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns OperatingSystemVersionInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.OperatingSystemVersionInfo;

                        /**
                         * Creates a plain object from an OperatingSystemVersionInfo message. Also converts values to other types if specified.
                         * @param m OperatingSystemVersionInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.OperatingSystemVersionInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OperatingSystemVersionInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an AppPaymentModelInfo. */
                    interface IAppPaymentModelInfo {

                        /** AppPaymentModelInfo type */
                        type?: (google.ads.googleads.v8.enums.AppPaymentModelTypeEnum.AppPaymentModelType|keyof typeof google.ads.googleads.v8.enums.AppPaymentModelTypeEnum.AppPaymentModelType|null);
                    }

                    /** Represents an AppPaymentModelInfo. */
                    class AppPaymentModelInfo implements IAppPaymentModelInfo {

                        /**
                         * Constructs a new AppPaymentModelInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IAppPaymentModelInfo);

                        /** AppPaymentModelInfo type. */
                        public type: (google.ads.googleads.v8.enums.AppPaymentModelTypeEnum.AppPaymentModelType|keyof typeof google.ads.googleads.v8.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.v8.common.IAppPaymentModelInfo): google.ads.googleads.v8.common.AppPaymentModelInfo;

                        /**
                         * Encodes the specified AppPaymentModelInfo message. Does not implicitly {@link google.ads.googleads.v8.common.AppPaymentModelInfo.verify|verify} messages.
                         * @param m AppPaymentModelInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IAppPaymentModelInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AppPaymentModelInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IAppPaymentModelInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AppPaymentModelInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.AppPaymentModelInfo;

                        /**
                         * Verifies an AppPaymentModelInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AppPaymentModelInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AppPaymentModelInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.AppPaymentModelInfo;

                        /**
                         * Creates a plain object from an AppPaymentModelInfo message. Also converts values to other types if specified.
                         * @param m AppPaymentModelInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.AppPaymentModelInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AppPaymentModelInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IMobileDeviceInfo);

                        /** MobileDeviceInfo mobile_device_constant. */
                        public mobile_device_constant?: (string|null);

                        /** MobileDeviceInfo _mobile_device_constant. */
                        public _mobile_device_constant?: "mobile_device_constant";

                        /**
                         * Creates a new MobileDeviceInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MobileDeviceInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IMobileDeviceInfo): google.ads.googleads.v8.common.MobileDeviceInfo;

                        /**
                         * Encodes the specified MobileDeviceInfo message. Does not implicitly {@link google.ads.googleads.v8.common.MobileDeviceInfo.verify|verify} messages.
                         * @param m MobileDeviceInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IMobileDeviceInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MobileDeviceInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IMobileDeviceInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MobileDeviceInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.MobileDeviceInfo;

                        /**
                         * Verifies a MobileDeviceInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MobileDeviceInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MobileDeviceInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.MobileDeviceInfo;

                        /**
                         * Creates a plain object from a MobileDeviceInfo message. Also converts values to other types if specified.
                         * @param m MobileDeviceInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.MobileDeviceInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MobileDeviceInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ICustomAffinityInfo);

                        /** CustomAffinityInfo custom_affinity. */
                        public custom_affinity?: (string|null);

                        /** CustomAffinityInfo _custom_affinity. */
                        public _custom_affinity?: "custom_affinity";

                        /**
                         * Creates a new CustomAffinityInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomAffinityInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ICustomAffinityInfo): google.ads.googleads.v8.common.CustomAffinityInfo;

                        /**
                         * Encodes the specified CustomAffinityInfo message. Does not implicitly {@link google.ads.googleads.v8.common.CustomAffinityInfo.verify|verify} messages.
                         * @param m CustomAffinityInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ICustomAffinityInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomAffinityInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ICustomAffinityInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomAffinityInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.CustomAffinityInfo;

                        /**
                         * Verifies a CustomAffinityInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomAffinityInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomAffinityInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.CustomAffinityInfo;

                        /**
                         * Creates a plain object from a CustomAffinityInfo message. Also converts values to other types if specified.
                         * @param m CustomAffinityInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.CustomAffinityInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomAffinityInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ICustomIntentInfo);

                        /** CustomIntentInfo custom_intent. */
                        public custom_intent?: (string|null);

                        /** CustomIntentInfo _custom_intent. */
                        public _custom_intent?: "custom_intent";

                        /**
                         * Creates a new CustomIntentInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomIntentInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ICustomIntentInfo): google.ads.googleads.v8.common.CustomIntentInfo;

                        /**
                         * Encodes the specified CustomIntentInfo message. Does not implicitly {@link google.ads.googleads.v8.common.CustomIntentInfo.verify|verify} messages.
                         * @param m CustomIntentInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ICustomIntentInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomIntentInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ICustomIntentInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomIntentInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.CustomIntentInfo;

                        /**
                         * Verifies a CustomIntentInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomIntentInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomIntentInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.CustomIntentInfo;

                        /**
                         * Creates a plain object from a CustomIntentInfo message. Also converts values to other types if specified.
                         * @param m CustomIntentInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.CustomIntentInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomIntentInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a LocationGroupInfo. */
                    interface ILocationGroupInfo {

                        /** LocationGroupInfo feed */
                        feed?: (string|null);

                        /** LocationGroupInfo geo_target_constants */
                        geo_target_constants?: (string[]|null);

                        /** LocationGroupInfo radius */
                        radius?: (number|null);

                        /** LocationGroupInfo radius_units */
                        radius_units?: (google.ads.googleads.v8.enums.LocationGroupRadiusUnitsEnum.LocationGroupRadiusUnits|keyof typeof google.ads.googleads.v8.enums.LocationGroupRadiusUnitsEnum.LocationGroupRadiusUnits|null);

                        /** LocationGroupInfo feed_item_sets */
                        feed_item_sets?: (string[]|null);
                    }

                    /** Represents a LocationGroupInfo. */
                    class LocationGroupInfo implements ILocationGroupInfo {

                        /**
                         * Constructs a new LocationGroupInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ILocationGroupInfo);

                        /** LocationGroupInfo feed. */
                        public feed?: (string|null);

                        /** LocationGroupInfo geo_target_constants. */
                        public geo_target_constants: string[];

                        /** LocationGroupInfo radius. */
                        public radius?: (number|null);

                        /** LocationGroupInfo radius_units. */
                        public radius_units: (google.ads.googleads.v8.enums.LocationGroupRadiusUnitsEnum.LocationGroupRadiusUnits|keyof typeof google.ads.googleads.v8.enums.LocationGroupRadiusUnitsEnum.LocationGroupRadiusUnits);

                        /** LocationGroupInfo feed_item_sets. */
                        public feed_item_sets: string[];

                        /** LocationGroupInfo _feed. */
                        public _feed?: "feed";

                        /** LocationGroupInfo _radius. */
                        public _radius?: "radius";

                        /**
                         * Creates a new LocationGroupInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocationGroupInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ILocationGroupInfo): google.ads.googleads.v8.common.LocationGroupInfo;

                        /**
                         * Encodes the specified LocationGroupInfo message. Does not implicitly {@link google.ads.googleads.v8.common.LocationGroupInfo.verify|verify} messages.
                         * @param m LocationGroupInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ILocationGroupInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocationGroupInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ILocationGroupInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocationGroupInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.LocationGroupInfo;

                        /**
                         * Verifies a LocationGroupInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocationGroupInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns LocationGroupInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.LocationGroupInfo;

                        /**
                         * Creates a plain object from a LocationGroupInfo message. Also converts values to other types if specified.
                         * @param m LocationGroupInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.LocationGroupInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocationGroupInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.ICustomAudienceInfo): google.ads.googleads.v8.common.CustomAudienceInfo;

                        /**
                         * Encodes the specified CustomAudienceInfo message. Does not implicitly {@link google.ads.googleads.v8.common.CustomAudienceInfo.verify|verify} messages.
                         * @param m CustomAudienceInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ICustomAudienceInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomAudienceInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ICustomAudienceInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomAudienceInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.CustomAudienceInfo;

                        /**
                         * Verifies a CustomAudienceInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomAudienceInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomAudienceInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.CustomAudienceInfo;

                        /**
                         * Creates a plain object from a CustomAudienceInfo message. Also converts values to other types if specified.
                         * @param m CustomAudienceInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.CustomAudienceInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomAudienceInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.ICombinedAudienceInfo): google.ads.googleads.v8.common.CombinedAudienceInfo;

                        /**
                         * Encodes the specified CombinedAudienceInfo message. Does not implicitly {@link google.ads.googleads.v8.common.CombinedAudienceInfo.verify|verify} messages.
                         * @param m CombinedAudienceInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ICombinedAudienceInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CombinedAudienceInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ICombinedAudienceInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CombinedAudienceInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.CombinedAudienceInfo;

                        /**
                         * Verifies a CombinedAudienceInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CombinedAudienceInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CombinedAudienceInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.CombinedAudienceInfo;

                        /**
                         * Creates a plain object from a CombinedAudienceInfo message. Also converts values to other types if specified.
                         * @param m CombinedAudienceInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.CombinedAudienceInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CombinedAudienceInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.IKeywordThemeInfo): google.ads.googleads.v8.common.KeywordThemeInfo;

                        /**
                         * Encodes the specified KeywordThemeInfo message. Does not implicitly {@link google.ads.googleads.v8.common.KeywordThemeInfo.verify|verify} messages.
                         * @param m KeywordThemeInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IKeywordThemeInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordThemeInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IKeywordThemeInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordThemeInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.KeywordThemeInfo;

                        /**
                         * Verifies a KeywordThemeInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordThemeInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordThemeInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.KeywordThemeInfo;

                        /**
                         * Creates a plain object from a KeywordThemeInfo message. Also converts values to other types if specified.
                         * @param m KeywordThemeInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.KeywordThemeInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordThemeInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IMoney);

                        /** Money currency_code. */
                        public currency_code?: (string|null);

                        /** Money amount_micros. */
                        public amount_micros?: (number|null);

                        /** Money _currency_code. */
                        public _currency_code?: "currency_code";

                        /** Money _amount_micros. */
                        public _amount_micros?: "amount_micros";

                        /**
                         * Creates a new Money instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Money instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IMoney): google.ads.googleads.v8.common.Money;

                        /**
                         * Encodes the specified Money message. Does not implicitly {@link google.ads.googleads.v8.common.Money.verify|verify} messages.
                         * @param m Money message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IMoney, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Money message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IMoney, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Money message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.Money;

                        /**
                         * Verifies a Money message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Money message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns Money
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.Money;

                        /**
                         * Creates a plain object from a Money message. Also converts values to other types if specified.
                         * @param m Money
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.Money, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Money to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ICommission);

                        /** Commission commission_rate_micros. */
                        public commission_rate_micros?: (number|null);

                        /** Commission _commission_rate_micros. */
                        public _commission_rate_micros?: "commission_rate_micros";

                        /**
                         * Creates a new Commission instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Commission instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ICommission): google.ads.googleads.v8.common.Commission;

                        /**
                         * Encodes the specified Commission message. Does not implicitly {@link google.ads.googleads.v8.common.Commission.verify|verify} messages.
                         * @param m Commission message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ICommission, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Commission message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ICommission, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Commission message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.Commission;

                        /**
                         * Verifies a Commission message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Commission message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns Commission
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.Commission;

                        /**
                         * Creates a plain object from a Commission message. Also converts values to other types if specified.
                         * @param m Commission
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.Commission, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Commission to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an EnhancedCpc. */
                    interface IEnhancedCpc {
                    }

                    /** Represents an EnhancedCpc. */
                    class EnhancedCpc implements IEnhancedCpc {

                        /**
                         * Constructs a new EnhancedCpc.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.IEnhancedCpc): google.ads.googleads.v8.common.EnhancedCpc;

                        /**
                         * Encodes the specified EnhancedCpc message. Does not implicitly {@link google.ads.googleads.v8.common.EnhancedCpc.verify|verify} messages.
                         * @param m EnhancedCpc message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IEnhancedCpc, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified EnhancedCpc message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IEnhancedCpc, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an EnhancedCpc message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.EnhancedCpc;

                        /**
                         * Verifies an EnhancedCpc message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an EnhancedCpc message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns EnhancedCpc
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.EnhancedCpc;

                        /**
                         * Creates a plain object from an EnhancedCpc message. Also converts values to other types if specified.
                         * @param m EnhancedCpc
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.EnhancedCpc, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this EnhancedCpc to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IManualCpc);

                        /** ManualCpc enhanced_cpc_enabled. */
                        public enhanced_cpc_enabled?: (boolean|null);

                        /** ManualCpc _enhanced_cpc_enabled. */
                        public _enhanced_cpc_enabled?: "enhanced_cpc_enabled";

                        /**
                         * Creates a new ManualCpc instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ManualCpc instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IManualCpc): google.ads.googleads.v8.common.ManualCpc;

                        /**
                         * Encodes the specified ManualCpc message. Does not implicitly {@link google.ads.googleads.v8.common.ManualCpc.verify|verify} messages.
                         * @param m ManualCpc message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IManualCpc, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ManualCpc message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IManualCpc, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ManualCpc message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ManualCpc;

                        /**
                         * Verifies a ManualCpc message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ManualCpc message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ManualCpc
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.ManualCpc;

                        /**
                         * Creates a plain object from a ManualCpc message. Also converts values to other types if specified.
                         * @param m ManualCpc
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.ManualCpc, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ManualCpc to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ManualCpm. */
                    interface IManualCpm {
                    }

                    /** Represents a ManualCpm. */
                    class ManualCpm implements IManualCpm {

                        /**
                         * Constructs a new ManualCpm.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.IManualCpm): google.ads.googleads.v8.common.ManualCpm;

                        /**
                         * Encodes the specified ManualCpm message. Does not implicitly {@link google.ads.googleads.v8.common.ManualCpm.verify|verify} messages.
                         * @param m ManualCpm message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IManualCpm, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ManualCpm message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IManualCpm, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ManualCpm message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ManualCpm;

                        /**
                         * Verifies a ManualCpm message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ManualCpm message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ManualCpm
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.ManualCpm;

                        /**
                         * Creates a plain object from a ManualCpm message. Also converts values to other types if specified.
                         * @param m ManualCpm
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.ManualCpm, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ManualCpm to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ManualCpv. */
                    interface IManualCpv {
                    }

                    /** Represents a ManualCpv. */
                    class ManualCpv implements IManualCpv {

                        /**
                         * Constructs a new ManualCpv.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.IManualCpv): google.ads.googleads.v8.common.ManualCpv;

                        /**
                         * Encodes the specified ManualCpv message. Does not implicitly {@link google.ads.googleads.v8.common.ManualCpv.verify|verify} messages.
                         * @param m ManualCpv message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IManualCpv, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ManualCpv message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IManualCpv, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ManualCpv message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ManualCpv;

                        /**
                         * Verifies a ManualCpv message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ManualCpv message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ManualCpv
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.ManualCpv;

                        /**
                         * Creates a plain object from a ManualCpv message. Also converts values to other types if specified.
                         * @param m ManualCpv
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.ManualCpv, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ManualCpv to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MaximizeConversions. */
                    interface IMaximizeConversions {

                        /** MaximizeConversions target_cpa */
                        target_cpa?: (number|null);
                    }

                    /** Represents a MaximizeConversions. */
                    class MaximizeConversions implements IMaximizeConversions {

                        /**
                         * Constructs a new MaximizeConversions.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IMaximizeConversions);

                        /** MaximizeConversions target_cpa. */
                        public target_cpa: 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.v8.common.IMaximizeConversions): google.ads.googleads.v8.common.MaximizeConversions;

                        /**
                         * Encodes the specified MaximizeConversions message. Does not implicitly {@link google.ads.googleads.v8.common.MaximizeConversions.verify|verify} messages.
                         * @param m MaximizeConversions message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IMaximizeConversions, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MaximizeConversions message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IMaximizeConversions, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MaximizeConversions message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.MaximizeConversions;

                        /**
                         * Verifies a MaximizeConversions message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MaximizeConversions message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MaximizeConversions
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.MaximizeConversions;

                        /**
                         * Creates a plain object from a MaximizeConversions message. Also converts values to other types if specified.
                         * @param m MaximizeConversions
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.MaximizeConversions, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MaximizeConversions to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.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.v8.common.IMaximizeConversionValue): google.ads.googleads.v8.common.MaximizeConversionValue;

                        /**
                         * Encodes the specified MaximizeConversionValue message. Does not implicitly {@link google.ads.googleads.v8.common.MaximizeConversionValue.verify|verify} messages.
                         * @param m MaximizeConversionValue message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IMaximizeConversionValue, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MaximizeConversionValue message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IMaximizeConversionValue, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MaximizeConversionValue message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.MaximizeConversionValue;

                        /**
                         * Verifies a MaximizeConversionValue message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MaximizeConversionValue message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MaximizeConversionValue
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.MaximizeConversionValue;

                        /**
                         * Creates a plain object from a MaximizeConversionValue message. Also converts values to other types if specified.
                         * @param m MaximizeConversionValue
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.MaximizeConversionValue, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MaximizeConversionValue to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** TargetCpa _target_cpa_micros. */
                        public _target_cpa_micros?: "target_cpa_micros";

                        /** TargetCpa _cpc_bid_ceiling_micros. */
                        public _cpc_bid_ceiling_micros?: "cpc_bid_ceiling_micros";

                        /** TargetCpa _cpc_bid_floor_micros. */
                        public _cpc_bid_floor_micros?: "cpc_bid_floor_micros";

                        /**
                         * Creates a new TargetCpa instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetCpa instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ITargetCpa): google.ads.googleads.v8.common.TargetCpa;

                        /**
                         * Encodes the specified TargetCpa message. Does not implicitly {@link google.ads.googleads.v8.common.TargetCpa.verify|verify} messages.
                         * @param m TargetCpa message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ITargetCpa, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetCpa message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ITargetCpa, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetCpa message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.TargetCpa;

                        /**
                         * Verifies a TargetCpa message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetCpa message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TargetCpa
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.TargetCpa;

                        /**
                         * Creates a plain object from a TargetCpa message. Also converts values to other types if specified.
                         * @param m TargetCpa
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.TargetCpa, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetCpa to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a TargetCpm. */
                    interface ITargetCpm {
                    }

                    /** Represents a TargetCpm. */
                    class TargetCpm implements ITargetCpm {

                        /**
                         * Constructs a new TargetCpm.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ITargetCpm);

                        /**
                         * Creates a new TargetCpm instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetCpm instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ITargetCpm): google.ads.googleads.v8.common.TargetCpm;

                        /**
                         * Encodes the specified TargetCpm message. Does not implicitly {@link google.ads.googleads.v8.common.TargetCpm.verify|verify} messages.
                         * @param m TargetCpm message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ITargetCpm, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetCpm message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ITargetCpm, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetCpm message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.TargetCpm;

                        /**
                         * Verifies a TargetCpm message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetCpm message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TargetCpm
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.TargetCpm;

                        /**
                         * Creates a plain object from a TargetCpm message. Also converts values to other types if specified.
                         * @param m TargetCpm
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.TargetCpm, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetCpm to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a TargetImpressionShare. */
                    interface ITargetImpressionShare {

                        /** TargetImpressionShare location */
                        location?: (google.ads.googleads.v8.enums.TargetImpressionShareLocationEnum.TargetImpressionShareLocation|keyof typeof google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ITargetImpressionShare);

                        /** TargetImpressionShare location. */
                        public location: (google.ads.googleads.v8.enums.TargetImpressionShareLocationEnum.TargetImpressionShareLocation|keyof typeof google.ads.googleads.v8.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);

                        /** TargetImpressionShare _location_fraction_micros. */
                        public _location_fraction_micros?: "location_fraction_micros";

                        /** TargetImpressionShare _cpc_bid_ceiling_micros. */
                        public _cpc_bid_ceiling_micros?: "cpc_bid_ceiling_micros";

                        /**
                         * Creates a new TargetImpressionShare instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetImpressionShare instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ITargetImpressionShare): google.ads.googleads.v8.common.TargetImpressionShare;

                        /**
                         * Encodes the specified TargetImpressionShare message. Does not implicitly {@link google.ads.googleads.v8.common.TargetImpressionShare.verify|verify} messages.
                         * @param m TargetImpressionShare message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ITargetImpressionShare, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetImpressionShare message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ITargetImpressionShare, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetImpressionShare message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.TargetImpressionShare;

                        /**
                         * Verifies a TargetImpressionShare message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetImpressionShare message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TargetImpressionShare
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.TargetImpressionShare;

                        /**
                         * Creates a plain object from a TargetImpressionShare message. Also converts values to other types if specified.
                         * @param m TargetImpressionShare
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.TargetImpressionShare, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetImpressionShare to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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);
                    }

                    /** Represents a TargetRoas. */
                    class TargetRoas implements ITargetRoas {

                        /**
                         * Constructs a new TargetRoas.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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. */
                        public _target_roas?: "target_roas";

                        /** TargetRoas _cpc_bid_ceiling_micros. */
                        public _cpc_bid_ceiling_micros?: "cpc_bid_ceiling_micros";

                        /** TargetRoas _cpc_bid_floor_micros. */
                        public _cpc_bid_floor_micros?: "cpc_bid_floor_micros";

                        /**
                         * Creates a new TargetRoas instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetRoas instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ITargetRoas): google.ads.googleads.v8.common.TargetRoas;

                        /**
                         * Encodes the specified TargetRoas message. Does not implicitly {@link google.ads.googleads.v8.common.TargetRoas.verify|verify} messages.
                         * @param m TargetRoas message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ITargetRoas, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetRoas message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ITargetRoas, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetRoas message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.TargetRoas;

                        /**
                         * Verifies a TargetRoas message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetRoas message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TargetRoas
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.TargetRoas;

                        /**
                         * Creates a plain object from a TargetRoas message. Also converts values to other types if specified.
                         * @param m TargetRoas
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.TargetRoas, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetRoas to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ITargetSpend);

                        /** TargetSpend target_spend_micros. */
                        public target_spend_micros?: (number|null);

                        /** TargetSpend cpc_bid_ceiling_micros. */
                        public cpc_bid_ceiling_micros?: (number|null);

                        /** TargetSpend _target_spend_micros. */
                        public _target_spend_micros?: "target_spend_micros";

                        /** TargetSpend _cpc_bid_ceiling_micros. */
                        public _cpc_bid_ceiling_micros?: "cpc_bid_ceiling_micros";

                        /**
                         * Creates a new TargetSpend instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetSpend instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ITargetSpend): google.ads.googleads.v8.common.TargetSpend;

                        /**
                         * Encodes the specified TargetSpend message. Does not implicitly {@link google.ads.googleads.v8.common.TargetSpend.verify|verify} messages.
                         * @param m TargetSpend message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ITargetSpend, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetSpend message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ITargetSpend, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetSpend message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.TargetSpend;

                        /**
                         * Verifies a TargetSpend message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetSpend message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TargetSpend
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.TargetSpend;

                        /**
                         * Creates a plain object from a TargetSpend message. Also converts values to other types if specified.
                         * @param m TargetSpend
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.TargetSpend, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetSpend to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IPercentCpc);

                        /** PercentCpc cpc_bid_ceiling_micros. */
                        public cpc_bid_ceiling_micros?: (number|null);

                        /** PercentCpc enhanced_cpc_enabled. */
                        public enhanced_cpc_enabled?: (boolean|null);

                        /** PercentCpc _cpc_bid_ceiling_micros. */
                        public _cpc_bid_ceiling_micros?: "cpc_bid_ceiling_micros";

                        /** PercentCpc _enhanced_cpc_enabled. */
                        public _enhanced_cpc_enabled?: "enhanced_cpc_enabled";

                        /**
                         * Creates a new PercentCpc instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PercentCpc instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IPercentCpc): google.ads.googleads.v8.common.PercentCpc;

                        /**
                         * Encodes the specified PercentCpc message. Does not implicitly {@link google.ads.googleads.v8.common.PercentCpc.verify|verify} messages.
                         * @param m PercentCpc message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IPercentCpc, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PercentCpc message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IPercentCpc, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PercentCpc message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.PercentCpc;

                        /**
                         * Verifies a PercentCpc message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PercentCpc message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PercentCpc
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.PercentCpc;

                        /**
                         * Creates a plain object from a PercentCpc message. Also converts values to other types if specified.
                         * @param m PercentCpc
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.PercentCpc, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PercentCpc to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** ClickLocation _city. */
                        public _city?: "city";

                        /** ClickLocation _country. */
                        public _country?: "country";

                        /** ClickLocation _metro. */
                        public _metro?: "metro";

                        /** ClickLocation _most_specific. */
                        public _most_specific?: "most_specific";

                        /** ClickLocation _region. */
                        public _region?: "region";

                        /**
                         * Creates a new ClickLocation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ClickLocation instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IClickLocation): google.ads.googleads.v8.common.ClickLocation;

                        /**
                         * Encodes the specified ClickLocation message. Does not implicitly {@link google.ads.googleads.v8.common.ClickLocation.verify|verify} messages.
                         * @param m ClickLocation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IClickLocation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ClickLocation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IClickLocation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ClickLocation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ClickLocation;

                        /**
                         * Verifies a ClickLocation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ClickLocation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ClickLocation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.ClickLocation;

                        /**
                         * Creates a plain object from a ClickLocation message. Also converts values to other types if specified.
                         * @param m ClickLocation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.ClickLocation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ClickLocation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CriterionCategoryAvailability. */
                    interface ICriterionCategoryAvailability {

                        /** CriterionCategoryAvailability channel */
                        channel?: (google.ads.googleads.v8.common.ICriterionCategoryChannelAvailability|null);

                        /** CriterionCategoryAvailability locale */
                        locale?: (google.ads.googleads.v8.common.ICriterionCategoryLocaleAvailability[]|null);
                    }

                    /** Represents a CriterionCategoryAvailability. */
                    class CriterionCategoryAvailability implements ICriterionCategoryAvailability {

                        /**
                         * Constructs a new CriterionCategoryAvailability.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ICriterionCategoryAvailability);

                        /** CriterionCategoryAvailability channel. */
                        public channel?: (google.ads.googleads.v8.common.ICriterionCategoryChannelAvailability|null);

                        /** CriterionCategoryAvailability locale. */
                        public locale: google.ads.googleads.v8.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.v8.common.ICriterionCategoryAvailability): google.ads.googleads.v8.common.CriterionCategoryAvailability;

                        /**
                         * Encodes the specified CriterionCategoryAvailability message. Does not implicitly {@link google.ads.googleads.v8.common.CriterionCategoryAvailability.verify|verify} messages.
                         * @param m CriterionCategoryAvailability message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ICriterionCategoryAvailability, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CriterionCategoryAvailability message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ICriterionCategoryAvailability, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CriterionCategoryAvailability message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.CriterionCategoryAvailability;

                        /**
                         * Verifies a CriterionCategoryAvailability message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CriterionCategoryAvailability message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CriterionCategoryAvailability
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.CriterionCategoryAvailability;

                        /**
                         * Creates a plain object from a CriterionCategoryAvailability message. Also converts values to other types if specified.
                         * @param m CriterionCategoryAvailability
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.CriterionCategoryAvailability, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CriterionCategoryAvailability to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CriterionCategoryChannelAvailability. */
                    interface ICriterionCategoryChannelAvailability {

                        /** CriterionCategoryChannelAvailability availability_mode */
                        availability_mode?: (google.ads.googleads.v8.enums.CriterionCategoryChannelAvailabilityModeEnum.CriterionCategoryChannelAvailabilityMode|keyof typeof google.ads.googleads.v8.enums.CriterionCategoryChannelAvailabilityModeEnum.CriterionCategoryChannelAvailabilityMode|null);

                        /** CriterionCategoryChannelAvailability advertising_channel_type */
                        advertising_channel_type?: (google.ads.googleads.v8.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|keyof typeof google.ads.googleads.v8.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|null);

                        /** CriterionCategoryChannelAvailability advertising_channel_sub_type */
                        advertising_channel_sub_type?: (google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ICriterionCategoryChannelAvailability);

                        /** CriterionCategoryChannelAvailability availability_mode. */
                        public availability_mode: (google.ads.googleads.v8.enums.CriterionCategoryChannelAvailabilityModeEnum.CriterionCategoryChannelAvailabilityMode|keyof typeof google.ads.googleads.v8.enums.CriterionCategoryChannelAvailabilityModeEnum.CriterionCategoryChannelAvailabilityMode);

                        /** CriterionCategoryChannelAvailability advertising_channel_type. */
                        public advertising_channel_type: (google.ads.googleads.v8.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|keyof typeof google.ads.googleads.v8.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType);

                        /** CriterionCategoryChannelAvailability advertising_channel_sub_type. */
                        public advertising_channel_sub_type: google.ads.googleads.v8.enums.AdvertisingChannelSubTypeEnum.AdvertisingChannelSubType[];

                        /** CriterionCategoryChannelAvailability include_default_channel_sub_type. */
                        public include_default_channel_sub_type?: (boolean|null);

                        /** CriterionCategoryChannelAvailability _include_default_channel_sub_type. */
                        public _include_default_channel_sub_type?: "include_default_channel_sub_type";

                        /**
                         * Creates a new CriterionCategoryChannelAvailability instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CriterionCategoryChannelAvailability instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ICriterionCategoryChannelAvailability): google.ads.googleads.v8.common.CriterionCategoryChannelAvailability;

                        /**
                         * Encodes the specified CriterionCategoryChannelAvailability message. Does not implicitly {@link google.ads.googleads.v8.common.CriterionCategoryChannelAvailability.verify|verify} messages.
                         * @param m CriterionCategoryChannelAvailability message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ICriterionCategoryChannelAvailability, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CriterionCategoryChannelAvailability message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ICriterionCategoryChannelAvailability, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CriterionCategoryChannelAvailability message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.CriterionCategoryChannelAvailability;

                        /**
                         * Verifies a CriterionCategoryChannelAvailability message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CriterionCategoryChannelAvailability message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CriterionCategoryChannelAvailability
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.CriterionCategoryChannelAvailability;

                        /**
                         * Creates a plain object from a CriterionCategoryChannelAvailability message. Also converts values to other types if specified.
                         * @param m CriterionCategoryChannelAvailability
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.CriterionCategoryChannelAvailability, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CriterionCategoryChannelAvailability to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CriterionCategoryLocaleAvailability. */
                    interface ICriterionCategoryLocaleAvailability {

                        /** CriterionCategoryLocaleAvailability availability_mode */
                        availability_mode?: (google.ads.googleads.v8.enums.CriterionCategoryLocaleAvailabilityModeEnum.CriterionCategoryLocaleAvailabilityMode|keyof typeof google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ICriterionCategoryLocaleAvailability);

                        /** CriterionCategoryLocaleAvailability availability_mode. */
                        public availability_mode: (google.ads.googleads.v8.enums.CriterionCategoryLocaleAvailabilityModeEnum.CriterionCategoryLocaleAvailabilityMode|keyof typeof google.ads.googleads.v8.enums.CriterionCategoryLocaleAvailabilityModeEnum.CriterionCategoryLocaleAvailabilityMode);

                        /** CriterionCategoryLocaleAvailability country_code. */
                        public country_code?: (string|null);

                        /** CriterionCategoryLocaleAvailability language_code. */
                        public language_code?: (string|null);

                        /** CriterionCategoryLocaleAvailability _country_code. */
                        public _country_code?: "country_code";

                        /** CriterionCategoryLocaleAvailability _language_code. */
                        public _language_code?: "language_code";

                        /**
                         * Creates a new CriterionCategoryLocaleAvailability instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CriterionCategoryLocaleAvailability instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ICriterionCategoryLocaleAvailability): google.ads.googleads.v8.common.CriterionCategoryLocaleAvailability;

                        /**
                         * Encodes the specified CriterionCategoryLocaleAvailability message. Does not implicitly {@link google.ads.googleads.v8.common.CriterionCategoryLocaleAvailability.verify|verify} messages.
                         * @param m CriterionCategoryLocaleAvailability message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ICriterionCategoryLocaleAvailability, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CriterionCategoryLocaleAvailability message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ICriterionCategoryLocaleAvailability, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CriterionCategoryLocaleAvailability message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.CriterionCategoryLocaleAvailability;

                        /**
                         * Verifies a CriterionCategoryLocaleAvailability message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CriterionCategoryLocaleAvailability message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CriterionCategoryLocaleAvailability
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.CriterionCategoryLocaleAvailability;

                        /**
                         * Creates a plain object from a CriterionCategoryLocaleAvailability message. Also converts values to other types if specified.
                         * @param m CriterionCategoryLocaleAvailability
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.CriterionCategoryLocaleAvailability, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CriterionCategoryLocaleAvailability to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ICustomParameter);

                        /** CustomParameter key. */
                        public key?: (string|null);

                        /** CustomParameter value. */
                        public value?: (string|null);

                        /** CustomParameter _key. */
                        public _key?: "key";

                        /** CustomParameter _value. */
                        public _value?: "value";

                        /**
                         * Creates a new CustomParameter instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomParameter instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ICustomParameter): google.ads.googleads.v8.common.CustomParameter;

                        /**
                         * Encodes the specified CustomParameter message. Does not implicitly {@link google.ads.googleads.v8.common.CustomParameter.verify|verify} messages.
                         * @param m CustomParameter message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ICustomParameter, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomParameter message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ICustomParameter, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomParameter message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.CustomParameter;

                        /**
                         * Verifies a CustomParameter message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomParameter message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomParameter
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.CustomParameter;

                        /**
                         * Creates a plain object from a CustomParameter message. Also converts values to other types if specified.
                         * @param m CustomParameter
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.CustomParameter, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomParameter to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IDateRange);

                        /** DateRange start_date. */
                        public start_date?: (string|null);

                        /** DateRange end_date. */
                        public end_date?: (string|null);

                        /** DateRange _start_date. */
                        public _start_date?: "start_date";

                        /** DateRange _end_date. */
                        public _end_date?: "end_date";

                        /**
                         * Creates a new DateRange instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DateRange instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IDateRange): google.ads.googleads.v8.common.DateRange;

                        /**
                         * Encodes the specified DateRange message. Does not implicitly {@link google.ads.googleads.v8.common.DateRange.verify|verify} messages.
                         * @param m DateRange message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IDateRange, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DateRange message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IDateRange, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DateRange message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.DateRange;

                        /**
                         * Verifies a DateRange message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DateRange message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns DateRange
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.DateRange;

                        /**
                         * Creates a plain object from a DateRange message. Also converts values to other types if specified.
                         * @param m DateRange
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.DateRange, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DateRange to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a YearMonthRange. */
                    interface IYearMonthRange {

                        /** YearMonthRange start */
                        start?: (google.ads.googleads.v8.common.IYearMonth|null);

                        /** YearMonthRange end */
                        end?: (google.ads.googleads.v8.common.IYearMonth|null);
                    }

                    /** Represents a YearMonthRange. */
                    class YearMonthRange implements IYearMonthRange {

                        /**
                         * Constructs a new YearMonthRange.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IYearMonthRange);

                        /** YearMonthRange start. */
                        public start?: (google.ads.googleads.v8.common.IYearMonth|null);

                        /** YearMonthRange end. */
                        public end?: (google.ads.googleads.v8.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.v8.common.IYearMonthRange): google.ads.googleads.v8.common.YearMonthRange;

                        /**
                         * Encodes the specified YearMonthRange message. Does not implicitly {@link google.ads.googleads.v8.common.YearMonthRange.verify|verify} messages.
                         * @param m YearMonthRange message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IYearMonthRange, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified YearMonthRange message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IYearMonthRange, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a YearMonthRange message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.YearMonthRange;

                        /**
                         * Verifies a YearMonthRange message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a YearMonthRange message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns YearMonthRange
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.YearMonthRange;

                        /**
                         * Creates a plain object from a YearMonthRange message. Also converts values to other types if specified.
                         * @param m YearMonthRange
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.YearMonthRange, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this YearMonthRange to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a YearMonth. */
                    interface IYearMonth {

                        /** YearMonth year */
                        year?: (number|null);

                        /** YearMonth month */
                        month?: (google.ads.googleads.v8.enums.MonthOfYearEnum.MonthOfYear|keyof typeof google.ads.googleads.v8.enums.MonthOfYearEnum.MonthOfYear|null);
                    }

                    /** Represents a YearMonth. */
                    class YearMonth implements IYearMonth {

                        /**
                         * Constructs a new YearMonth.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IYearMonth);

                        /** YearMonth year. */
                        public year: number;

                        /** YearMonth month. */
                        public month: (google.ads.googleads.v8.enums.MonthOfYearEnum.MonthOfYear|keyof typeof google.ads.googleads.v8.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.v8.common.IYearMonth): google.ads.googleads.v8.common.YearMonth;

                        /**
                         * Encodes the specified YearMonth message. Does not implicitly {@link google.ads.googleads.v8.common.YearMonth.verify|verify} messages.
                         * @param m YearMonth message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IYearMonth, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified YearMonth message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IYearMonth, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a YearMonth message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.YearMonth;

                        /**
                         * Verifies a YearMonth message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a YearMonth message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns YearMonth
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.YearMonth;

                        /**
                         * Creates a plain object from a YearMonth message. Also converts values to other types if specified.
                         * @param m YearMonth
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.YearMonth, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this YearMonth to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an ExplorerAutoOptimizerSetting. */
                    interface IExplorerAutoOptimizerSetting {

                        /** ExplorerAutoOptimizerSetting opt_in */
                        opt_in?: (boolean|null);
                    }

                    /** Represents an ExplorerAutoOptimizerSetting. */
                    class ExplorerAutoOptimizerSetting implements IExplorerAutoOptimizerSetting {

                        /**
                         * Constructs a new ExplorerAutoOptimizerSetting.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IExplorerAutoOptimizerSetting);

                        /** ExplorerAutoOptimizerSetting opt_in. */
                        public opt_in?: (boolean|null);

                        /** ExplorerAutoOptimizerSetting _opt_in. */
                        public _opt_in?: "opt_in";

                        /**
                         * Creates a new ExplorerAutoOptimizerSetting instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExplorerAutoOptimizerSetting instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IExplorerAutoOptimizerSetting): google.ads.googleads.v8.common.ExplorerAutoOptimizerSetting;

                        /**
                         * Encodes the specified ExplorerAutoOptimizerSetting message. Does not implicitly {@link google.ads.googleads.v8.common.ExplorerAutoOptimizerSetting.verify|verify} messages.
                         * @param m ExplorerAutoOptimizerSetting message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IExplorerAutoOptimizerSetting, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExplorerAutoOptimizerSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v8.common.ExplorerAutoOptimizerSetting.verify|verify} messages.
                         * @param message ExplorerAutoOptimizerSetting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.common.IExplorerAutoOptimizerSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExplorerAutoOptimizerSetting message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns ExplorerAutoOptimizerSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.common.ExplorerAutoOptimizerSetting;

                        /**
                         * Decodes an ExplorerAutoOptimizerSetting message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExplorerAutoOptimizerSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.common.ExplorerAutoOptimizerSetting;

                        /**
                         * Verifies an ExplorerAutoOptimizerSetting message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an ExplorerAutoOptimizerSetting message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ExplorerAutoOptimizerSetting
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.ExplorerAutoOptimizerSetting;

                        /**
                         * Creates a plain object from an ExplorerAutoOptimizerSetting message. Also converts values to other types if specified.
                         * @param m ExplorerAutoOptimizerSetting
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.ExplorerAutoOptimizerSetting, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExplorerAutoOptimizerSetting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an AppFeedItem. */
                    interface IAppFeedItem {

                        /** AppFeedItem link_text */
                        link_text?: (string|null);

                        /** AppFeedItem app_id */
                        app_id?: (string|null);

                        /** AppFeedItem app_store */
                        app_store?: (google.ads.googleads.v8.enums.AppStoreEnum.AppStore|keyof typeof google.ads.googleads.v8.enums.AppStoreEnum.AppStore|null);

                        /** AppFeedItem final_urls */
                        final_urls?: (string[]|null);

                        /** AppFeedItem final_mobile_urls */
                        final_mobile_urls?: (string[]|null);

                        /** AppFeedItem tracking_url_template */
                        tracking_url_template?: (string|null);

                        /** AppFeedItem url_custom_parameters */
                        url_custom_parameters?: (google.ads.googleads.v8.common.ICustomParameter[]|null);

                        /** AppFeedItem final_url_suffix */
                        final_url_suffix?: (string|null);
                    }

                    /** Represents an AppFeedItem. */
                    class AppFeedItem implements IAppFeedItem {

                        /**
                         * Constructs a new AppFeedItem.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IAppFeedItem);

                        /** AppFeedItem link_text. */
                        public link_text?: (string|null);

                        /** AppFeedItem app_id. */
                        public app_id?: (string|null);

                        /** AppFeedItem app_store. */
                        public app_store: (google.ads.googleads.v8.enums.AppStoreEnum.AppStore|keyof typeof google.ads.googleads.v8.enums.AppStoreEnum.AppStore);

                        /** AppFeedItem final_urls. */
                        public final_urls: string[];

                        /** AppFeedItem final_mobile_urls. */
                        public final_mobile_urls: string[];

                        /** AppFeedItem tracking_url_template. */
                        public tracking_url_template?: (string|null);

                        /** AppFeedItem url_custom_parameters. */
                        public url_custom_parameters: google.ads.googleads.v8.common.ICustomParameter[];

                        /** AppFeedItem final_url_suffix. */
                        public final_url_suffix?: (string|null);

                        /** AppFeedItem _link_text. */
                        public _link_text?: "link_text";

                        /** AppFeedItem _app_id. */
                        public _app_id?: "app_id";

                        /** AppFeedItem _tracking_url_template. */
                        public _tracking_url_template?: "tracking_url_template";

                        /** AppFeedItem _final_url_suffix. */
                        public _final_url_suffix?: "final_url_suffix";

                        /**
                         * Creates a new AppFeedItem instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AppFeedItem instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IAppFeedItem): google.ads.googleads.v8.common.AppFeedItem;

                        /**
                         * Encodes the specified AppFeedItem message. Does not implicitly {@link google.ads.googleads.v8.common.AppFeedItem.verify|verify} messages.
                         * @param m AppFeedItem message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IAppFeedItem, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AppFeedItem message, length delimited. Does not implicitly {@link google.ads.googleads.v8.common.AppFeedItem.verify|verify} messages.
                         * @param message AppFeedItem message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.common.IAppFeedItem, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AppFeedItem message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns AppFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.common.AppFeedItem;

                        /**
                         * Decodes an AppFeedItem message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AppFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.common.AppFeedItem;

                        /**
                         * Verifies an AppFeedItem message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AppFeedItem message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AppFeedItem
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.AppFeedItem;

                        /**
                         * Creates a plain object from an AppFeedItem message. Also converts values to other types if specified.
                         * @param m AppFeedItem
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.AppFeedItem, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AppFeedItem to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.CallConversionReportingStateEnum.CallConversionReportingState|keyof typeof google.ads.googleads.v8.enums.CallConversionReportingStateEnum.CallConversionReportingState|null);
                    }

                    /** Represents a CallFeedItem. */
                    class CallFeedItem implements ICallFeedItem {

                        /**
                         * Constructs a new CallFeedItem.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.CallConversionReportingStateEnum.CallConversionReportingState|keyof typeof google.ads.googleads.v8.enums.CallConversionReportingStateEnum.CallConversionReportingState);

                        /** CallFeedItem _phone_number. */
                        public _phone_number?: "phone_number";

                        /** CallFeedItem _country_code. */
                        public _country_code?: "country_code";

                        /** CallFeedItem _call_tracking_enabled. */
                        public _call_tracking_enabled?: "call_tracking_enabled";

                        /** CallFeedItem _call_conversion_action. */
                        public _call_conversion_action?: "call_conversion_action";

                        /** CallFeedItem _call_conversion_tracking_disabled. */
                        public _call_conversion_tracking_disabled?: "call_conversion_tracking_disabled";

                        /**
                         * Creates a new CallFeedItem instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CallFeedItem instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ICallFeedItem): google.ads.googleads.v8.common.CallFeedItem;

                        /**
                         * Encodes the specified CallFeedItem message. Does not implicitly {@link google.ads.googleads.v8.common.CallFeedItem.verify|verify} messages.
                         * @param m CallFeedItem message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ICallFeedItem, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CallFeedItem message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ICallFeedItem, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CallFeedItem message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.CallFeedItem;

                        /**
                         * Verifies a CallFeedItem message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CallFeedItem message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CallFeedItem
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.CallFeedItem;

                        /**
                         * Creates a plain object from a CallFeedItem message. Also converts values to other types if specified.
                         * @param m CallFeedItem
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.CallFeedItem, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CallFeedItem to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ICalloutFeedItem);

                        /** CalloutFeedItem callout_text. */
                        public callout_text?: (string|null);

                        /** CalloutFeedItem _callout_text. */
                        public _callout_text?: "callout_text";

                        /**
                         * Creates a new CalloutFeedItem instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CalloutFeedItem instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ICalloutFeedItem): google.ads.googleads.v8.common.CalloutFeedItem;

                        /**
                         * Encodes the specified CalloutFeedItem message. Does not implicitly {@link google.ads.googleads.v8.common.CalloutFeedItem.verify|verify} messages.
                         * @param m CalloutFeedItem message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ICalloutFeedItem, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CalloutFeedItem message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ICalloutFeedItem, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CalloutFeedItem message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.CalloutFeedItem;

                        /**
                         * Verifies a CalloutFeedItem message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CalloutFeedItem message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CalloutFeedItem
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.CalloutFeedItem;

                        /**
                         * Creates a plain object from a CalloutFeedItem message. Also converts values to other types if specified.
                         * @param m CalloutFeedItem
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.CalloutFeedItem, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CalloutFeedItem to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a LocationFeedItem. */
                    interface ILocationFeedItem {

                        /** LocationFeedItem business_name */
                        business_name?: (string|null);

                        /** LocationFeedItem address_line_1 */
                        address_line_1?: (string|null);

                        /** LocationFeedItem address_line_2 */
                        address_line_2?: (string|null);

                        /** LocationFeedItem city */
                        city?: (string|null);

                        /** LocationFeedItem province */
                        province?: (string|null);

                        /** LocationFeedItem postal_code */
                        postal_code?: (string|null);

                        /** LocationFeedItem country_code */
                        country_code?: (string|null);

                        /** LocationFeedItem phone_number */
                        phone_number?: (string|null);
                    }

                    /** Represents a LocationFeedItem. */
                    class LocationFeedItem implements ILocationFeedItem {

                        /**
                         * Constructs a new LocationFeedItem.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ILocationFeedItem);

                        /** LocationFeedItem business_name. */
                        public business_name?: (string|null);

                        /** LocationFeedItem address_line_1. */
                        public address_line_1?: (string|null);

                        /** LocationFeedItem address_line_2. */
                        public address_line_2?: (string|null);

                        /** LocationFeedItem city. */
                        public city?: (string|null);

                        /** LocationFeedItem province. */
                        public province?: (string|null);

                        /** LocationFeedItem postal_code. */
                        public postal_code?: (string|null);

                        /** LocationFeedItem country_code. */
                        public country_code?: (string|null);

                        /** LocationFeedItem phone_number. */
                        public phone_number?: (string|null);

                        /** LocationFeedItem _business_name. */
                        public _business_name?: "business_name";

                        /** LocationFeedItem _address_line_1. */
                        public _address_line_1?: "address_line_1";

                        /** LocationFeedItem _address_line_2. */
                        public _address_line_2?: "address_line_2";

                        /** LocationFeedItem _city. */
                        public _city?: "city";

                        /** LocationFeedItem _province. */
                        public _province?: "province";

                        /** LocationFeedItem _postal_code. */
                        public _postal_code?: "postal_code";

                        /** LocationFeedItem _country_code. */
                        public _country_code?: "country_code";

                        /** LocationFeedItem _phone_number. */
                        public _phone_number?: "phone_number";

                        /**
                         * Creates a new LocationFeedItem instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocationFeedItem instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ILocationFeedItem): google.ads.googleads.v8.common.LocationFeedItem;

                        /**
                         * Encodes the specified LocationFeedItem message. Does not implicitly {@link google.ads.googleads.v8.common.LocationFeedItem.verify|verify} messages.
                         * @param m LocationFeedItem message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ILocationFeedItem, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocationFeedItem message, length delimited. Does not implicitly {@link google.ads.googleads.v8.common.LocationFeedItem.verify|verify} messages.
                         * @param message LocationFeedItem message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.common.ILocationFeedItem, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocationFeedItem message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns LocationFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.common.LocationFeedItem;

                        /**
                         * Decodes a LocationFeedItem message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocationFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.common.LocationFeedItem;

                        /**
                         * Verifies a LocationFeedItem message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocationFeedItem message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns LocationFeedItem
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.LocationFeedItem;

                        /**
                         * Creates a plain object from a LocationFeedItem message. Also converts values to other types if specified.
                         * @param m LocationFeedItem
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.LocationFeedItem, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocationFeedItem to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an AffiliateLocationFeedItem. */
                    interface IAffiliateLocationFeedItem {

                        /** AffiliateLocationFeedItem business_name */
                        business_name?: (string|null);

                        /** AffiliateLocationFeedItem address_line_1 */
                        address_line_1?: (string|null);

                        /** AffiliateLocationFeedItem address_line_2 */
                        address_line_2?: (string|null);

                        /** AffiliateLocationFeedItem city */
                        city?: (string|null);

                        /** AffiliateLocationFeedItem province */
                        province?: (string|null);

                        /** AffiliateLocationFeedItem postal_code */
                        postal_code?: (string|null);

                        /** AffiliateLocationFeedItem country_code */
                        country_code?: (string|null);

                        /** AffiliateLocationFeedItem phone_number */
                        phone_number?: (string|null);

                        /** AffiliateLocationFeedItem chain_id */
                        chain_id?: (number|null);

                        /** AffiliateLocationFeedItem chain_name */
                        chain_name?: (string|null);
                    }

                    /** Represents an AffiliateLocationFeedItem. */
                    class AffiliateLocationFeedItem implements IAffiliateLocationFeedItem {

                        /**
                         * Constructs a new AffiliateLocationFeedItem.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IAffiliateLocationFeedItem);

                        /** AffiliateLocationFeedItem business_name. */
                        public business_name?: (string|null);

                        /** AffiliateLocationFeedItem address_line_1. */
                        public address_line_1?: (string|null);

                        /** AffiliateLocationFeedItem address_line_2. */
                        public address_line_2?: (string|null);

                        /** AffiliateLocationFeedItem city. */
                        public city?: (string|null);

                        /** AffiliateLocationFeedItem province. */
                        public province?: (string|null);

                        /** AffiliateLocationFeedItem postal_code. */
                        public postal_code?: (string|null);

                        /** AffiliateLocationFeedItem country_code. */
                        public country_code?: (string|null);

                        /** AffiliateLocationFeedItem phone_number. */
                        public phone_number?: (string|null);

                        /** AffiliateLocationFeedItem chain_id. */
                        public chain_id?: (number|null);

                        /** AffiliateLocationFeedItem chain_name. */
                        public chain_name?: (string|null);

                        /** AffiliateLocationFeedItem _business_name. */
                        public _business_name?: "business_name";

                        /** AffiliateLocationFeedItem _address_line_1. */
                        public _address_line_1?: "address_line_1";

                        /** AffiliateLocationFeedItem _address_line_2. */
                        public _address_line_2?: "address_line_2";

                        /** AffiliateLocationFeedItem _city. */
                        public _city?: "city";

                        /** AffiliateLocationFeedItem _province. */
                        public _province?: "province";

                        /** AffiliateLocationFeedItem _postal_code. */
                        public _postal_code?: "postal_code";

                        /** AffiliateLocationFeedItem _country_code. */
                        public _country_code?: "country_code";

                        /** AffiliateLocationFeedItem _phone_number. */
                        public _phone_number?: "phone_number";

                        /** AffiliateLocationFeedItem _chain_id. */
                        public _chain_id?: "chain_id";

                        /** AffiliateLocationFeedItem _chain_name. */
                        public _chain_name?: "chain_name";

                        /**
                         * Creates a new AffiliateLocationFeedItem instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AffiliateLocationFeedItem instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IAffiliateLocationFeedItem): google.ads.googleads.v8.common.AffiliateLocationFeedItem;

                        /**
                         * Encodes the specified AffiliateLocationFeedItem message. Does not implicitly {@link google.ads.googleads.v8.common.AffiliateLocationFeedItem.verify|verify} messages.
                         * @param m AffiliateLocationFeedItem message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IAffiliateLocationFeedItem, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AffiliateLocationFeedItem message, length delimited. Does not implicitly {@link google.ads.googleads.v8.common.AffiliateLocationFeedItem.verify|verify} messages.
                         * @param message AffiliateLocationFeedItem message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.common.IAffiliateLocationFeedItem, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AffiliateLocationFeedItem message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns AffiliateLocationFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.common.AffiliateLocationFeedItem;

                        /**
                         * Decodes an AffiliateLocationFeedItem message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AffiliateLocationFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.common.AffiliateLocationFeedItem;

                        /**
                         * Verifies an AffiliateLocationFeedItem message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AffiliateLocationFeedItem message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AffiliateLocationFeedItem
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.AffiliateLocationFeedItem;

                        /**
                         * Creates a plain object from an AffiliateLocationFeedItem message. Also converts values to other types if specified.
                         * @param m AffiliateLocationFeedItem
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.AffiliateLocationFeedItem, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AffiliateLocationFeedItem to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a TextMessageFeedItem. */
                    interface ITextMessageFeedItem {

                        /** TextMessageFeedItem business_name */
                        business_name?: (string|null);

                        /** TextMessageFeedItem country_code */
                        country_code?: (string|null);

                        /** TextMessageFeedItem phone_number */
                        phone_number?: (string|null);

                        /** TextMessageFeedItem text */
                        text?: (string|null);

                        /** TextMessageFeedItem extension_text */
                        extension_text?: (string|null);
                    }

                    /** Represents a TextMessageFeedItem. */
                    class TextMessageFeedItem implements ITextMessageFeedItem {

                        /**
                         * Constructs a new TextMessageFeedItem.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ITextMessageFeedItem);

                        /** TextMessageFeedItem business_name. */
                        public business_name?: (string|null);

                        /** TextMessageFeedItem country_code. */
                        public country_code?: (string|null);

                        /** TextMessageFeedItem phone_number. */
                        public phone_number?: (string|null);

                        /** TextMessageFeedItem text. */
                        public text?: (string|null);

                        /** TextMessageFeedItem extension_text. */
                        public extension_text?: (string|null);

                        /** TextMessageFeedItem _business_name. */
                        public _business_name?: "business_name";

                        /** TextMessageFeedItem _country_code. */
                        public _country_code?: "country_code";

                        /** TextMessageFeedItem _phone_number. */
                        public _phone_number?: "phone_number";

                        /** TextMessageFeedItem _text. */
                        public _text?: "text";

                        /** TextMessageFeedItem _extension_text. */
                        public _extension_text?: "extension_text";

                        /**
                         * Creates a new TextMessageFeedItem instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TextMessageFeedItem instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ITextMessageFeedItem): google.ads.googleads.v8.common.TextMessageFeedItem;

                        /**
                         * Encodes the specified TextMessageFeedItem message. Does not implicitly {@link google.ads.googleads.v8.common.TextMessageFeedItem.verify|verify} messages.
                         * @param m TextMessageFeedItem message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ITextMessageFeedItem, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TextMessageFeedItem message, length delimited. Does not implicitly {@link google.ads.googleads.v8.common.TextMessageFeedItem.verify|verify} messages.
                         * @param message TextMessageFeedItem message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.common.ITextMessageFeedItem, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TextMessageFeedItem message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns TextMessageFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.common.TextMessageFeedItem;

                        /**
                         * Decodes a TextMessageFeedItem message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TextMessageFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.common.TextMessageFeedItem;

                        /**
                         * Verifies a TextMessageFeedItem message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TextMessageFeedItem message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TextMessageFeedItem
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.TextMessageFeedItem;

                        /**
                         * Creates a plain object from a TextMessageFeedItem message. Also converts values to other types if specified.
                         * @param m TextMessageFeedItem
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.TextMessageFeedItem, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TextMessageFeedItem to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a PriceFeedItem. */
                    interface IPriceFeedItem {

                        /** PriceFeedItem type */
                        type?: (google.ads.googleads.v8.enums.PriceExtensionTypeEnum.PriceExtensionType|keyof typeof google.ads.googleads.v8.enums.PriceExtensionTypeEnum.PriceExtensionType|null);

                        /** PriceFeedItem price_qualifier */
                        price_qualifier?: (google.ads.googleads.v8.enums.PriceExtensionPriceQualifierEnum.PriceExtensionPriceQualifier|keyof typeof google.ads.googleads.v8.enums.PriceExtensionPriceQualifierEnum.PriceExtensionPriceQualifier|null);

                        /** PriceFeedItem tracking_url_template */
                        tracking_url_template?: (string|null);

                        /** PriceFeedItem language_code */
                        language_code?: (string|null);

                        /** PriceFeedItem price_offerings */
                        price_offerings?: (google.ads.googleads.v8.common.IPriceOffer[]|null);

                        /** PriceFeedItem final_url_suffix */
                        final_url_suffix?: (string|null);
                    }

                    /** Represents a PriceFeedItem. */
                    class PriceFeedItem implements IPriceFeedItem {

                        /**
                         * Constructs a new PriceFeedItem.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IPriceFeedItem);

                        /** PriceFeedItem type. */
                        public type: (google.ads.googleads.v8.enums.PriceExtensionTypeEnum.PriceExtensionType|keyof typeof google.ads.googleads.v8.enums.PriceExtensionTypeEnum.PriceExtensionType);

                        /** PriceFeedItem price_qualifier. */
                        public price_qualifier: (google.ads.googleads.v8.enums.PriceExtensionPriceQualifierEnum.PriceExtensionPriceQualifier|keyof typeof google.ads.googleads.v8.enums.PriceExtensionPriceQualifierEnum.PriceExtensionPriceQualifier);

                        /** PriceFeedItem tracking_url_template. */
                        public tracking_url_template?: (string|null);

                        /** PriceFeedItem language_code. */
                        public language_code?: (string|null);

                        /** PriceFeedItem price_offerings. */
                        public price_offerings: google.ads.googleads.v8.common.IPriceOffer[];

                        /** PriceFeedItem final_url_suffix. */
                        public final_url_suffix?: (string|null);

                        /** PriceFeedItem _tracking_url_template. */
                        public _tracking_url_template?: "tracking_url_template";

                        /** PriceFeedItem _language_code. */
                        public _language_code?: "language_code";

                        /** PriceFeedItem _final_url_suffix. */
                        public _final_url_suffix?: "final_url_suffix";

                        /**
                         * Creates a new PriceFeedItem instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PriceFeedItem instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IPriceFeedItem): google.ads.googleads.v8.common.PriceFeedItem;

                        /**
                         * Encodes the specified PriceFeedItem message. Does not implicitly {@link google.ads.googleads.v8.common.PriceFeedItem.verify|verify} messages.
                         * @param m PriceFeedItem message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IPriceFeedItem, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PriceFeedItem message, length delimited. Does not implicitly {@link google.ads.googleads.v8.common.PriceFeedItem.verify|verify} messages.
                         * @param message PriceFeedItem message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.common.IPriceFeedItem, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PriceFeedItem message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns PriceFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.common.PriceFeedItem;

                        /**
                         * Decodes a PriceFeedItem message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PriceFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.common.PriceFeedItem;

                        /**
                         * Verifies a PriceFeedItem message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PriceFeedItem message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PriceFeedItem
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.PriceFeedItem;

                        /**
                         * Creates a plain object from a PriceFeedItem message. Also converts values to other types if specified.
                         * @param m PriceFeedItem
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.PriceFeedItem, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PriceFeedItem to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a PriceOffer. */
                    interface IPriceOffer {

                        /** PriceOffer header */
                        header?: (string|null);

                        /** PriceOffer description */
                        description?: (string|null);

                        /** PriceOffer price */
                        price?: (google.ads.googleads.v8.common.IMoney|null);

                        /** PriceOffer unit */
                        unit?: (google.ads.googleads.v8.enums.PriceExtensionPriceUnitEnum.PriceExtensionPriceUnit|keyof typeof google.ads.googleads.v8.enums.PriceExtensionPriceUnitEnum.PriceExtensionPriceUnit|null);

                        /** PriceOffer final_urls */
                        final_urls?: (string[]|null);

                        /** PriceOffer final_mobile_urls */
                        final_mobile_urls?: (string[]|null);
                    }

                    /** Represents a PriceOffer. */
                    class PriceOffer implements IPriceOffer {

                        /**
                         * Constructs a new PriceOffer.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IPriceOffer);

                        /** PriceOffer header. */
                        public header?: (string|null);

                        /** PriceOffer description. */
                        public description?: (string|null);

                        /** PriceOffer price. */
                        public price?: (google.ads.googleads.v8.common.IMoney|null);

                        /** PriceOffer unit. */
                        public unit: (google.ads.googleads.v8.enums.PriceExtensionPriceUnitEnum.PriceExtensionPriceUnit|keyof typeof google.ads.googleads.v8.enums.PriceExtensionPriceUnitEnum.PriceExtensionPriceUnit);

                        /** PriceOffer final_urls. */
                        public final_urls: string[];

                        /** PriceOffer final_mobile_urls. */
                        public final_mobile_urls: string[];

                        /** PriceOffer _header. */
                        public _header?: "header";

                        /** PriceOffer _description. */
                        public _description?: "description";

                        /**
                         * Creates a new PriceOffer instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PriceOffer instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IPriceOffer): google.ads.googleads.v8.common.PriceOffer;

                        /**
                         * Encodes the specified PriceOffer message. Does not implicitly {@link google.ads.googleads.v8.common.PriceOffer.verify|verify} messages.
                         * @param m PriceOffer message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IPriceOffer, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PriceOffer message, length delimited. Does not implicitly {@link google.ads.googleads.v8.common.PriceOffer.verify|verify} messages.
                         * @param message PriceOffer message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.common.IPriceOffer, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PriceOffer message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns PriceOffer
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.common.PriceOffer;

                        /**
                         * Decodes a PriceOffer message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PriceOffer
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.common.PriceOffer;

                        /**
                         * Verifies a PriceOffer message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PriceOffer message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PriceOffer
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.PriceOffer;

                        /**
                         * Creates a plain object from a PriceOffer message. Also converts values to other types if specified.
                         * @param m PriceOffer
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.PriceOffer, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PriceOffer to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a PromotionFeedItem. */
                    interface IPromotionFeedItem {

                        /** PromotionFeedItem promotion_target */
                        promotion_target?: (string|null);

                        /** PromotionFeedItem discount_modifier */
                        discount_modifier?: (google.ads.googleads.v8.enums.PromotionExtensionDiscountModifierEnum.PromotionExtensionDiscountModifier|keyof typeof google.ads.googleads.v8.enums.PromotionExtensionDiscountModifierEnum.PromotionExtensionDiscountModifier|null);

                        /** PromotionFeedItem promotion_start_date */
                        promotion_start_date?: (string|null);

                        /** PromotionFeedItem promotion_end_date */
                        promotion_end_date?: (string|null);

                        /** PromotionFeedItem occasion */
                        occasion?: (google.ads.googleads.v8.enums.PromotionExtensionOccasionEnum.PromotionExtensionOccasion|keyof typeof google.ads.googleads.v8.enums.PromotionExtensionOccasionEnum.PromotionExtensionOccasion|null);

                        /** PromotionFeedItem final_urls */
                        final_urls?: (string[]|null);

                        /** PromotionFeedItem final_mobile_urls */
                        final_mobile_urls?: (string[]|null);

                        /** PromotionFeedItem tracking_url_template */
                        tracking_url_template?: (string|null);

                        /** PromotionFeedItem url_custom_parameters */
                        url_custom_parameters?: (google.ads.googleads.v8.common.ICustomParameter[]|null);

                        /** PromotionFeedItem final_url_suffix */
                        final_url_suffix?: (string|null);

                        /** PromotionFeedItem language_code */
                        language_code?: (string|null);

                        /** PromotionFeedItem percent_off */
                        percent_off?: (number|null);

                        /** PromotionFeedItem money_amount_off */
                        money_amount_off?: (google.ads.googleads.v8.common.IMoney|null);

                        /** PromotionFeedItem promotion_code */
                        promotion_code?: (string|null);

                        /** PromotionFeedItem orders_over_amount */
                        orders_over_amount?: (google.ads.googleads.v8.common.IMoney|null);
                    }

                    /** Represents a PromotionFeedItem. */
                    class PromotionFeedItem implements IPromotionFeedItem {

                        /**
                         * Constructs a new PromotionFeedItem.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IPromotionFeedItem);

                        /** PromotionFeedItem promotion_target. */
                        public promotion_target?: (string|null);

                        /** PromotionFeedItem discount_modifier. */
                        public discount_modifier: (google.ads.googleads.v8.enums.PromotionExtensionDiscountModifierEnum.PromotionExtensionDiscountModifier|keyof typeof google.ads.googleads.v8.enums.PromotionExtensionDiscountModifierEnum.PromotionExtensionDiscountModifier);

                        /** PromotionFeedItem promotion_start_date. */
                        public promotion_start_date?: (string|null);

                        /** PromotionFeedItem promotion_end_date. */
                        public promotion_end_date?: (string|null);

                        /** PromotionFeedItem occasion. */
                        public occasion: (google.ads.googleads.v8.enums.PromotionExtensionOccasionEnum.PromotionExtensionOccasion|keyof typeof google.ads.googleads.v8.enums.PromotionExtensionOccasionEnum.PromotionExtensionOccasion);

                        /** PromotionFeedItem final_urls. */
                        public final_urls: string[];

                        /** PromotionFeedItem final_mobile_urls. */
                        public final_mobile_urls: string[];

                        /** PromotionFeedItem tracking_url_template. */
                        public tracking_url_template?: (string|null);

                        /** PromotionFeedItem url_custom_parameters. */
                        public url_custom_parameters: google.ads.googleads.v8.common.ICustomParameter[];

                        /** PromotionFeedItem final_url_suffix. */
                        public final_url_suffix?: (string|null);

                        /** PromotionFeedItem language_code. */
                        public language_code?: (string|null);

                        /** PromotionFeedItem percent_off. */
                        public percent_off?: (number|null);

                        /** PromotionFeedItem money_amount_off. */
                        public money_amount_off?: (google.ads.googleads.v8.common.IMoney|null);

                        /** PromotionFeedItem promotion_code. */
                        public promotion_code?: (string|null);

                        /** PromotionFeedItem orders_over_amount. */
                        public orders_over_amount?: (google.ads.googleads.v8.common.IMoney|null);

                        /** PromotionFeedItem _promotion_target. */
                        public _promotion_target?: "promotion_target";

                        /** PromotionFeedItem _promotion_start_date. */
                        public _promotion_start_date?: "promotion_start_date";

                        /** PromotionFeedItem _promotion_end_date. */
                        public _promotion_end_date?: "promotion_end_date";

                        /** PromotionFeedItem _tracking_url_template. */
                        public _tracking_url_template?: "tracking_url_template";

                        /** PromotionFeedItem _final_url_suffix. */
                        public _final_url_suffix?: "final_url_suffix";

                        /** PromotionFeedItem _language_code. */
                        public _language_code?: "language_code";

                        /** PromotionFeedItem discount_type. */
                        public discount_type?: ("percent_off"|"money_amount_off");

                        /** PromotionFeedItem promotion_trigger. */
                        public promotion_trigger?: ("promotion_code"|"orders_over_amount");

                        /**
                         * Creates a new PromotionFeedItem instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PromotionFeedItem instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IPromotionFeedItem): google.ads.googleads.v8.common.PromotionFeedItem;

                        /**
                         * Encodes the specified PromotionFeedItem message. Does not implicitly {@link google.ads.googleads.v8.common.PromotionFeedItem.verify|verify} messages.
                         * @param m PromotionFeedItem message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IPromotionFeedItem, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PromotionFeedItem message, length delimited. Does not implicitly {@link google.ads.googleads.v8.common.PromotionFeedItem.verify|verify} messages.
                         * @param message PromotionFeedItem message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.common.IPromotionFeedItem, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PromotionFeedItem message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns PromotionFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.common.PromotionFeedItem;

                        /**
                         * Decodes a PromotionFeedItem message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PromotionFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.common.PromotionFeedItem;

                        /**
                         * Verifies a PromotionFeedItem message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PromotionFeedItem message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PromotionFeedItem
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.PromotionFeedItem;

                        /**
                         * Creates a plain object from a PromotionFeedItem message. Also converts values to other types if specified.
                         * @param m PromotionFeedItem
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.PromotionFeedItem, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PromotionFeedItem to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a StructuredSnippetFeedItem. */
                    interface IStructuredSnippetFeedItem {

                        /** StructuredSnippetFeedItem header */
                        header?: (string|null);

                        /** StructuredSnippetFeedItem values */
                        values?: (string[]|null);
                    }

                    /** Represents a StructuredSnippetFeedItem. */
                    class StructuredSnippetFeedItem implements IStructuredSnippetFeedItem {

                        /**
                         * Constructs a new StructuredSnippetFeedItem.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IStructuredSnippetFeedItem);

                        /** StructuredSnippetFeedItem header. */
                        public header?: (string|null);

                        /** StructuredSnippetFeedItem values. */
                        public values: string[];

                        /** StructuredSnippetFeedItem _header. */
                        public _header?: "header";

                        /**
                         * Creates a new StructuredSnippetFeedItem instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns StructuredSnippetFeedItem instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IStructuredSnippetFeedItem): google.ads.googleads.v8.common.StructuredSnippetFeedItem;

                        /**
                         * Encodes the specified StructuredSnippetFeedItem message. Does not implicitly {@link google.ads.googleads.v8.common.StructuredSnippetFeedItem.verify|verify} messages.
                         * @param m StructuredSnippetFeedItem message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IStructuredSnippetFeedItem, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified StructuredSnippetFeedItem message, length delimited. Does not implicitly {@link google.ads.googleads.v8.common.StructuredSnippetFeedItem.verify|verify} messages.
                         * @param message StructuredSnippetFeedItem message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.common.IStructuredSnippetFeedItem, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a StructuredSnippetFeedItem message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns StructuredSnippetFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.common.StructuredSnippetFeedItem;

                        /**
                         * Decodes a StructuredSnippetFeedItem message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns StructuredSnippetFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.common.StructuredSnippetFeedItem;

                        /**
                         * Verifies a StructuredSnippetFeedItem message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a StructuredSnippetFeedItem message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns StructuredSnippetFeedItem
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.StructuredSnippetFeedItem;

                        /**
                         * Creates a plain object from a StructuredSnippetFeedItem message. Also converts values to other types if specified.
                         * @param m StructuredSnippetFeedItem
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.StructuredSnippetFeedItem, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this StructuredSnippetFeedItem to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.common.ICustomParameter[]|null);

                        /** SitelinkFeedItem final_url_suffix */
                        final_url_suffix?: (string|null);
                    }

                    /** Represents a SitelinkFeedItem. */
                    class SitelinkFeedItem implements ISitelinkFeedItem {

                        /**
                         * Constructs a new SitelinkFeedItem.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.ICustomParameter[];

                        /** SitelinkFeedItem final_url_suffix. */
                        public final_url_suffix?: (string|null);

                        /** SitelinkFeedItem _link_text. */
                        public _link_text?: "link_text";

                        /** SitelinkFeedItem _line1. */
                        public _line1?: "line1";

                        /** SitelinkFeedItem _line2. */
                        public _line2?: "line2";

                        /** SitelinkFeedItem _tracking_url_template. */
                        public _tracking_url_template?: "tracking_url_template";

                        /** SitelinkFeedItem _final_url_suffix. */
                        public _final_url_suffix?: "final_url_suffix";

                        /**
                         * Creates a new SitelinkFeedItem instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SitelinkFeedItem instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ISitelinkFeedItem): google.ads.googleads.v8.common.SitelinkFeedItem;

                        /**
                         * Encodes the specified SitelinkFeedItem message. Does not implicitly {@link google.ads.googleads.v8.common.SitelinkFeedItem.verify|verify} messages.
                         * @param m SitelinkFeedItem message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ISitelinkFeedItem, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SitelinkFeedItem message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ISitelinkFeedItem, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SitelinkFeedItem message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.SitelinkFeedItem;

                        /**
                         * Verifies a SitelinkFeedItem message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SitelinkFeedItem message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SitelinkFeedItem
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.SitelinkFeedItem;

                        /**
                         * Creates a plain object from a SitelinkFeedItem message. Also converts values to other types if specified.
                         * @param m SitelinkFeedItem
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.SitelinkFeedItem, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SitelinkFeedItem to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a HotelCalloutFeedItem. */
                    interface IHotelCalloutFeedItem {

                        /** HotelCalloutFeedItem text */
                        text?: (string|null);

                        /** HotelCalloutFeedItem language_code */
                        language_code?: (string|null);
                    }

                    /** Represents a HotelCalloutFeedItem. */
                    class HotelCalloutFeedItem implements IHotelCalloutFeedItem {

                        /**
                         * Constructs a new HotelCalloutFeedItem.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IHotelCalloutFeedItem);

                        /** HotelCalloutFeedItem text. */
                        public text?: (string|null);

                        /** HotelCalloutFeedItem language_code. */
                        public language_code?: (string|null);

                        /** HotelCalloutFeedItem _text. */
                        public _text?: "text";

                        /** HotelCalloutFeedItem _language_code. */
                        public _language_code?: "language_code";

                        /**
                         * Creates a new HotelCalloutFeedItem instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelCalloutFeedItem instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IHotelCalloutFeedItem): google.ads.googleads.v8.common.HotelCalloutFeedItem;

                        /**
                         * Encodes the specified HotelCalloutFeedItem message. Does not implicitly {@link google.ads.googleads.v8.common.HotelCalloutFeedItem.verify|verify} messages.
                         * @param m HotelCalloutFeedItem message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IHotelCalloutFeedItem, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelCalloutFeedItem message, length delimited. Does not implicitly {@link google.ads.googleads.v8.common.HotelCalloutFeedItem.verify|verify} messages.
                         * @param message HotelCalloutFeedItem message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.common.IHotelCalloutFeedItem, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelCalloutFeedItem message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns HotelCalloutFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.common.HotelCalloutFeedItem;

                        /**
                         * Decodes a HotelCalloutFeedItem message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HotelCalloutFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.common.HotelCalloutFeedItem;

                        /**
                         * Verifies a HotelCalloutFeedItem message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelCalloutFeedItem message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns HotelCalloutFeedItem
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.HotelCalloutFeedItem;

                        /**
                         * Creates a plain object from a HotelCalloutFeedItem message. Also converts values to other types if specified.
                         * @param m HotelCalloutFeedItem
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.HotelCalloutFeedItem, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelCalloutFeedItem to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an ImageFeedItem. */
                    interface IImageFeedItem {

                        /** ImageFeedItem image_asset */
                        image_asset?: (string|null);
                    }

                    /** Represents an ImageFeedItem. */
                    class ImageFeedItem implements IImageFeedItem {

                        /**
                         * Constructs a new ImageFeedItem.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IImageFeedItem);

                        /** ImageFeedItem image_asset. */
                        public image_asset: string;

                        /**
                         * Creates a new ImageFeedItem instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ImageFeedItem instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IImageFeedItem): google.ads.googleads.v8.common.ImageFeedItem;

                        /**
                         * Encodes the specified ImageFeedItem message. Does not implicitly {@link google.ads.googleads.v8.common.ImageFeedItem.verify|verify} messages.
                         * @param m ImageFeedItem message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IImageFeedItem, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ImageFeedItem message, length delimited. Does not implicitly {@link google.ads.googleads.v8.common.ImageFeedItem.verify|verify} messages.
                         * @param message ImageFeedItem message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.common.IImageFeedItem, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ImageFeedItem message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns ImageFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.common.ImageFeedItem;

                        /**
                         * Decodes an ImageFeedItem message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ImageFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.common.ImageFeedItem;

                        /**
                         * Verifies an ImageFeedItem message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an ImageFeedItem message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ImageFeedItem
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.ImageFeedItem;

                        /**
                         * Creates a plain object from an ImageFeedItem message. Also converts values to other types if specified.
                         * @param m ImageFeedItem
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.ImageFeedItem, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ImageFeedItem to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a DynamicLocationSetFilter. */
                    interface IDynamicLocationSetFilter {

                        /** DynamicLocationSetFilter labels */
                        labels?: (string[]|null);

                        /** DynamicLocationSetFilter business_name_filter */
                        business_name_filter?: (google.ads.googleads.v8.common.IBusinessNameFilter|null);
                    }

                    /** Represents a DynamicLocationSetFilter. */
                    class DynamicLocationSetFilter implements IDynamicLocationSetFilter {

                        /**
                         * Constructs a new DynamicLocationSetFilter.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IDynamicLocationSetFilter);

                        /** DynamicLocationSetFilter labels. */
                        public labels: string[];

                        /** DynamicLocationSetFilter business_name_filter. */
                        public business_name_filter?: (google.ads.googleads.v8.common.IBusinessNameFilter|null);

                        /**
                         * Creates a new DynamicLocationSetFilter instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DynamicLocationSetFilter instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IDynamicLocationSetFilter): google.ads.googleads.v8.common.DynamicLocationSetFilter;

                        /**
                         * Encodes the specified DynamicLocationSetFilter message. Does not implicitly {@link google.ads.googleads.v8.common.DynamicLocationSetFilter.verify|verify} messages.
                         * @param m DynamicLocationSetFilter message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IDynamicLocationSetFilter, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DynamicLocationSetFilter message, length delimited. Does not implicitly {@link google.ads.googleads.v8.common.DynamicLocationSetFilter.verify|verify} messages.
                         * @param message DynamicLocationSetFilter message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.common.IDynamicLocationSetFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DynamicLocationSetFilter message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns DynamicLocationSetFilter
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.common.DynamicLocationSetFilter;

                        /**
                         * Decodes a DynamicLocationSetFilter message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DynamicLocationSetFilter
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.common.DynamicLocationSetFilter;

                        /**
                         * Verifies a DynamicLocationSetFilter message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DynamicLocationSetFilter message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns DynamicLocationSetFilter
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.DynamicLocationSetFilter;

                        /**
                         * Creates a plain object from a DynamicLocationSetFilter message. Also converts values to other types if specified.
                         * @param m DynamicLocationSetFilter
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.DynamicLocationSetFilter, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DynamicLocationSetFilter to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a BusinessNameFilter. */
                    interface IBusinessNameFilter {

                        /** BusinessNameFilter business_name */
                        business_name?: (string|null);

                        /** BusinessNameFilter filter_type */
                        filter_type?: (google.ads.googleads.v8.enums.FeedItemSetStringFilterTypeEnum.FeedItemSetStringFilterType|keyof typeof google.ads.googleads.v8.enums.FeedItemSetStringFilterTypeEnum.FeedItemSetStringFilterType|null);
                    }

                    /** Represents a BusinessNameFilter. */
                    class BusinessNameFilter implements IBusinessNameFilter {

                        /**
                         * Constructs a new BusinessNameFilter.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IBusinessNameFilter);

                        /** BusinessNameFilter business_name. */
                        public business_name: string;

                        /** BusinessNameFilter filter_type. */
                        public filter_type: (google.ads.googleads.v8.enums.FeedItemSetStringFilterTypeEnum.FeedItemSetStringFilterType|keyof typeof google.ads.googleads.v8.enums.FeedItemSetStringFilterTypeEnum.FeedItemSetStringFilterType);

                        /**
                         * Creates a new BusinessNameFilter instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BusinessNameFilter instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IBusinessNameFilter): google.ads.googleads.v8.common.BusinessNameFilter;

                        /**
                         * Encodes the specified BusinessNameFilter message. Does not implicitly {@link google.ads.googleads.v8.common.BusinessNameFilter.verify|verify} messages.
                         * @param m BusinessNameFilter message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IBusinessNameFilter, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BusinessNameFilter message, length delimited. Does not implicitly {@link google.ads.googleads.v8.common.BusinessNameFilter.verify|verify} messages.
                         * @param message BusinessNameFilter message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.common.IBusinessNameFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BusinessNameFilter message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns BusinessNameFilter
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.common.BusinessNameFilter;

                        /**
                         * Decodes a BusinessNameFilter message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BusinessNameFilter
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.common.BusinessNameFilter;

                        /**
                         * Verifies a BusinessNameFilter message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BusinessNameFilter message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BusinessNameFilter
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.BusinessNameFilter;

                        /**
                         * Creates a plain object from a BusinessNameFilter message. Also converts values to other types if specified.
                         * @param m BusinessNameFilter
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.BusinessNameFilter, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BusinessNameFilter to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a DynamicAffiliateLocationSetFilter. */
                    interface IDynamicAffiliateLocationSetFilter {

                        /** DynamicAffiliateLocationSetFilter chain_ids */
                        chain_ids?: (number[]|null);
                    }

                    /** Represents a DynamicAffiliateLocationSetFilter. */
                    class DynamicAffiliateLocationSetFilter implements IDynamicAffiliateLocationSetFilter {

                        /**
                         * Constructs a new DynamicAffiliateLocationSetFilter.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IDynamicAffiliateLocationSetFilter);

                        /** DynamicAffiliateLocationSetFilter chain_ids. */
                        public chain_ids: number[];

                        /**
                         * Creates a new DynamicAffiliateLocationSetFilter instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DynamicAffiliateLocationSetFilter instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IDynamicAffiliateLocationSetFilter): google.ads.googleads.v8.common.DynamicAffiliateLocationSetFilter;

                        /**
                         * Encodes the specified DynamicAffiliateLocationSetFilter message. Does not implicitly {@link google.ads.googleads.v8.common.DynamicAffiliateLocationSetFilter.verify|verify} messages.
                         * @param m DynamicAffiliateLocationSetFilter message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IDynamicAffiliateLocationSetFilter, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DynamicAffiliateLocationSetFilter message, length delimited. Does not implicitly {@link google.ads.googleads.v8.common.DynamicAffiliateLocationSetFilter.verify|verify} messages.
                         * @param message DynamicAffiliateLocationSetFilter message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.common.IDynamicAffiliateLocationSetFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DynamicAffiliateLocationSetFilter message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns DynamicAffiliateLocationSetFilter
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.common.DynamicAffiliateLocationSetFilter;

                        /**
                         * Decodes a DynamicAffiliateLocationSetFilter message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DynamicAffiliateLocationSetFilter
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.common.DynamicAffiliateLocationSetFilter;

                        /**
                         * Verifies a DynamicAffiliateLocationSetFilter message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DynamicAffiliateLocationSetFilter message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns DynamicAffiliateLocationSetFilter
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.DynamicAffiliateLocationSetFilter;

                        /**
                         * Creates a plain object from a DynamicAffiliateLocationSetFilter message. Also converts values to other types if specified.
                         * @param m DynamicAffiliateLocationSetFilter
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.DynamicAffiliateLocationSetFilter, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DynamicAffiliateLocationSetFilter to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a FinalAppUrl. */
                    interface IFinalAppUrl {

                        /** FinalAppUrl os_type */
                        os_type?: (google.ads.googleads.v8.enums.AppUrlOperatingSystemTypeEnum.AppUrlOperatingSystemType|keyof typeof google.ads.googleads.v8.enums.AppUrlOperatingSystemTypeEnum.AppUrlOperatingSystemType|null);

                        /** FinalAppUrl url */
                        url?: (string|null);
                    }

                    /** Represents a FinalAppUrl. */
                    class FinalAppUrl implements IFinalAppUrl {

                        /**
                         * Constructs a new FinalAppUrl.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IFinalAppUrl);

                        /** FinalAppUrl os_type. */
                        public os_type: (google.ads.googleads.v8.enums.AppUrlOperatingSystemTypeEnum.AppUrlOperatingSystemType|keyof typeof google.ads.googleads.v8.enums.AppUrlOperatingSystemTypeEnum.AppUrlOperatingSystemType);

                        /** FinalAppUrl url. */
                        public url?: (string|null);

                        /** FinalAppUrl _url. */
                        public _url?: "url";

                        /**
                         * Creates a new FinalAppUrl instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FinalAppUrl instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IFinalAppUrl): google.ads.googleads.v8.common.FinalAppUrl;

                        /**
                         * Encodes the specified FinalAppUrl message. Does not implicitly {@link google.ads.googleads.v8.common.FinalAppUrl.verify|verify} messages.
                         * @param m FinalAppUrl message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IFinalAppUrl, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FinalAppUrl message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IFinalAppUrl, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FinalAppUrl message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.FinalAppUrl;

                        /**
                         * Verifies a FinalAppUrl message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FinalAppUrl message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FinalAppUrl
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.FinalAppUrl;

                        /**
                         * Creates a plain object from a FinalAppUrl message. Also converts values to other types if specified.
                         * @param m FinalAppUrl
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.FinalAppUrl, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FinalAppUrl to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a FrequencyCapEntry. */
                    interface IFrequencyCapEntry {

                        /** FrequencyCapEntry key */
                        key?: (google.ads.googleads.v8.common.IFrequencyCapKey|null);

                        /** FrequencyCapEntry cap */
                        cap?: (number|null);
                    }

                    /** Represents a FrequencyCapEntry. */
                    class FrequencyCapEntry implements IFrequencyCapEntry {

                        /**
                         * Constructs a new FrequencyCapEntry.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IFrequencyCapEntry);

                        /** FrequencyCapEntry key. */
                        public key?: (google.ads.googleads.v8.common.IFrequencyCapKey|null);

                        /** FrequencyCapEntry cap. */
                        public cap?: (number|null);

                        /** FrequencyCapEntry _cap. */
                        public _cap?: "cap";

                        /**
                         * Creates a new FrequencyCapEntry instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FrequencyCapEntry instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IFrequencyCapEntry): google.ads.googleads.v8.common.FrequencyCapEntry;

                        /**
                         * Encodes the specified FrequencyCapEntry message. Does not implicitly {@link google.ads.googleads.v8.common.FrequencyCapEntry.verify|verify} messages.
                         * @param m FrequencyCapEntry message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IFrequencyCapEntry, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FrequencyCapEntry message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IFrequencyCapEntry, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FrequencyCapEntry message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.FrequencyCapEntry;

                        /**
                         * Verifies a FrequencyCapEntry message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FrequencyCapEntry message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FrequencyCapEntry
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.FrequencyCapEntry;

                        /**
                         * Creates a plain object from a FrequencyCapEntry message. Also converts values to other types if specified.
                         * @param m FrequencyCapEntry
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.FrequencyCapEntry, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FrequencyCapEntry to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a FrequencyCapKey. */
                    interface IFrequencyCapKey {

                        /** FrequencyCapKey level */
                        level?: (google.ads.googleads.v8.enums.FrequencyCapLevelEnum.FrequencyCapLevel|keyof typeof google.ads.googleads.v8.enums.FrequencyCapLevelEnum.FrequencyCapLevel|null);

                        /** FrequencyCapKey event_type */
                        event_type?: (google.ads.googleads.v8.enums.FrequencyCapEventTypeEnum.FrequencyCapEventType|keyof typeof google.ads.googleads.v8.enums.FrequencyCapEventTypeEnum.FrequencyCapEventType|null);

                        /** FrequencyCapKey time_unit */
                        time_unit?: (google.ads.googleads.v8.enums.FrequencyCapTimeUnitEnum.FrequencyCapTimeUnit|keyof typeof google.ads.googleads.v8.enums.FrequencyCapTimeUnitEnum.FrequencyCapTimeUnit|null);

                        /** FrequencyCapKey time_length */
                        time_length?: (number|null);
                    }

                    /** Represents a FrequencyCapKey. */
                    class FrequencyCapKey implements IFrequencyCapKey {

                        /**
                         * Constructs a new FrequencyCapKey.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IFrequencyCapKey);

                        /** FrequencyCapKey level. */
                        public level: (google.ads.googleads.v8.enums.FrequencyCapLevelEnum.FrequencyCapLevel|keyof typeof google.ads.googleads.v8.enums.FrequencyCapLevelEnum.FrequencyCapLevel);

                        /** FrequencyCapKey event_type. */
                        public event_type: (google.ads.googleads.v8.enums.FrequencyCapEventTypeEnum.FrequencyCapEventType|keyof typeof google.ads.googleads.v8.enums.FrequencyCapEventTypeEnum.FrequencyCapEventType);

                        /** FrequencyCapKey time_unit. */
                        public time_unit: (google.ads.googleads.v8.enums.FrequencyCapTimeUnitEnum.FrequencyCapTimeUnit|keyof typeof google.ads.googleads.v8.enums.FrequencyCapTimeUnitEnum.FrequencyCapTimeUnit);

                        /** FrequencyCapKey time_length. */
                        public time_length?: (number|null);

                        /** FrequencyCapKey _time_length. */
                        public _time_length?: "time_length";

                        /**
                         * Creates a new FrequencyCapKey instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FrequencyCapKey instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IFrequencyCapKey): google.ads.googleads.v8.common.FrequencyCapKey;

                        /**
                         * Encodes the specified FrequencyCapKey message. Does not implicitly {@link google.ads.googleads.v8.common.FrequencyCapKey.verify|verify} messages.
                         * @param m FrequencyCapKey message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IFrequencyCapKey, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FrequencyCapKey message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IFrequencyCapKey, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FrequencyCapKey message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.FrequencyCapKey;

                        /**
                         * Verifies a FrequencyCapKey message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FrequencyCapKey message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FrequencyCapKey
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.FrequencyCapKey;

                        /**
                         * Creates a plain object from a FrequencyCapKey message. Also converts values to other types if specified.
                         * @param m FrequencyCapKey
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.FrequencyCapKey, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FrequencyCapKey to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.common.IMonthlySearchVolume[]|null);

                        /** KeywordPlanHistoricalMetrics competition */
                        competition?: (google.ads.googleads.v8.enums.KeywordPlanCompetitionLevelEnum.KeywordPlanCompetitionLevel|keyof typeof google.ads.googleads.v8.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);
                    }

                    /** Represents a KeywordPlanHistoricalMetrics. */
                    class KeywordPlanHistoricalMetrics implements IKeywordPlanHistoricalMetrics {

                        /**
                         * Constructs a new KeywordPlanHistoricalMetrics.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IKeywordPlanHistoricalMetrics);

                        /** KeywordPlanHistoricalMetrics avg_monthly_searches. */
                        public avg_monthly_searches?: (number|null);

                        /** KeywordPlanHistoricalMetrics monthly_search_volumes. */
                        public monthly_search_volumes: google.ads.googleads.v8.common.IMonthlySearchVolume[];

                        /** KeywordPlanHistoricalMetrics competition. */
                        public competition: (google.ads.googleads.v8.enums.KeywordPlanCompetitionLevelEnum.KeywordPlanCompetitionLevel|keyof typeof google.ads.googleads.v8.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 _avg_monthly_searches. */
                        public _avg_monthly_searches?: "avg_monthly_searches";

                        /** KeywordPlanHistoricalMetrics _competition_index. */
                        public _competition_index?: "competition_index";

                        /** KeywordPlanHistoricalMetrics _low_top_of_page_bid_micros. */
                        public _low_top_of_page_bid_micros?: "low_top_of_page_bid_micros";

                        /** KeywordPlanHistoricalMetrics _high_top_of_page_bid_micros. */
                        public _high_top_of_page_bid_micros?: "high_top_of_page_bid_micros";

                        /**
                         * Creates a new KeywordPlanHistoricalMetrics instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanHistoricalMetrics instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IKeywordPlanHistoricalMetrics): google.ads.googleads.v8.common.KeywordPlanHistoricalMetrics;

                        /**
                         * Encodes the specified KeywordPlanHistoricalMetrics message. Does not implicitly {@link google.ads.googleads.v8.common.KeywordPlanHistoricalMetrics.verify|verify} messages.
                         * @param m KeywordPlanHistoricalMetrics message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IKeywordPlanHistoricalMetrics, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanHistoricalMetrics message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IKeywordPlanHistoricalMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanHistoricalMetrics message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.KeywordPlanHistoricalMetrics;

                        /**
                         * Verifies a KeywordPlanHistoricalMetrics message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanHistoricalMetrics message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanHistoricalMetrics
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.KeywordPlanHistoricalMetrics;

                        /**
                         * Creates a plain object from a KeywordPlanHistoricalMetrics message. Also converts values to other types if specified.
                         * @param m KeywordPlanHistoricalMetrics
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.KeywordPlanHistoricalMetrics, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanHistoricalMetrics to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a HistoricalMetricsOptions. */
                    interface IHistoricalMetricsOptions {

                        /** HistoricalMetricsOptions year_month_range */
                        year_month_range?: (google.ads.googleads.v8.common.IYearMonthRange|null);
                    }

                    /** Represents a HistoricalMetricsOptions. */
                    class HistoricalMetricsOptions implements IHistoricalMetricsOptions {

                        /**
                         * Constructs a new HistoricalMetricsOptions.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IHistoricalMetricsOptions);

                        /** HistoricalMetricsOptions year_month_range. */
                        public year_month_range?: (google.ads.googleads.v8.common.IYearMonthRange|null);

                        /** HistoricalMetricsOptions _year_month_range. */
                        public _year_month_range?: "year_month_range";

                        /**
                         * Creates a new HistoricalMetricsOptions instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HistoricalMetricsOptions instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IHistoricalMetricsOptions): google.ads.googleads.v8.common.HistoricalMetricsOptions;

                        /**
                         * Encodes the specified HistoricalMetricsOptions message. Does not implicitly {@link google.ads.googleads.v8.common.HistoricalMetricsOptions.verify|verify} messages.
                         * @param m HistoricalMetricsOptions message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IHistoricalMetricsOptions, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HistoricalMetricsOptions message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IHistoricalMetricsOptions, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HistoricalMetricsOptions message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.HistoricalMetricsOptions;

                        /**
                         * Verifies a HistoricalMetricsOptions message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HistoricalMetricsOptions message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns HistoricalMetricsOptions
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.HistoricalMetricsOptions;

                        /**
                         * Creates a plain object from a HistoricalMetricsOptions message. Also converts values to other types if specified.
                         * @param m HistoricalMetricsOptions
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.HistoricalMetricsOptions, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HistoricalMetricsOptions to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MonthlySearchVolume. */
                    interface IMonthlySearchVolume {

                        /** MonthlySearchVolume year */
                        year?: (number|null);

                        /** MonthlySearchVolume month */
                        month?: (google.ads.googleads.v8.enums.MonthOfYearEnum.MonthOfYear|keyof typeof google.ads.googleads.v8.enums.MonthOfYearEnum.MonthOfYear|null);

                        /** MonthlySearchVolume monthly_searches */
                        monthly_searches?: (number|null);
                    }

                    /** Represents a MonthlySearchVolume. */
                    class MonthlySearchVolume implements IMonthlySearchVolume {

                        /**
                         * Constructs a new MonthlySearchVolume.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IMonthlySearchVolume);

                        /** MonthlySearchVolume year. */
                        public year?: (number|null);

                        /** MonthlySearchVolume month. */
                        public month: (google.ads.googleads.v8.enums.MonthOfYearEnum.MonthOfYear|keyof typeof google.ads.googleads.v8.enums.MonthOfYearEnum.MonthOfYear);

                        /** MonthlySearchVolume monthly_searches. */
                        public monthly_searches?: (number|null);

                        /** MonthlySearchVolume _year. */
                        public _year?: "year";

                        /** MonthlySearchVolume _monthly_searches. */
                        public _monthly_searches?: "monthly_searches";

                        /**
                         * Creates a new MonthlySearchVolume instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MonthlySearchVolume instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IMonthlySearchVolume): google.ads.googleads.v8.common.MonthlySearchVolume;

                        /**
                         * Encodes the specified MonthlySearchVolume message. Does not implicitly {@link google.ads.googleads.v8.common.MonthlySearchVolume.verify|verify} messages.
                         * @param m MonthlySearchVolume message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IMonthlySearchVolume, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MonthlySearchVolume message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IMonthlySearchVolume, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MonthlySearchVolume message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.MonthlySearchVolume;

                        /**
                         * Verifies a MonthlySearchVolume message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MonthlySearchVolume message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MonthlySearchVolume
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.MonthlySearchVolume;

                        /**
                         * Creates a plain object from a MonthlySearchVolume message. Also converts values to other types if specified.
                         * @param m MonthlySearchVolume
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.MonthlySearchVolume, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MonthlySearchVolume to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a KeywordPlanAggregateMetrics. */
                    interface IKeywordPlanAggregateMetrics {

                        /** KeywordPlanAggregateMetrics aggregate_metric_types */
                        aggregate_metric_types?: (google.ads.googleads.v8.enums.KeywordPlanAggregateMetricTypeEnum.KeywordPlanAggregateMetricType[]|null);
                    }

                    /** Represents a KeywordPlanAggregateMetrics. */
                    class KeywordPlanAggregateMetrics implements IKeywordPlanAggregateMetrics {

                        /**
                         * Constructs a new KeywordPlanAggregateMetrics.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IKeywordPlanAggregateMetrics);

                        /** KeywordPlanAggregateMetrics aggregate_metric_types. */
                        public aggregate_metric_types: google.ads.googleads.v8.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.v8.common.IKeywordPlanAggregateMetrics): google.ads.googleads.v8.common.KeywordPlanAggregateMetrics;

                        /**
                         * Encodes the specified KeywordPlanAggregateMetrics message. Does not implicitly {@link google.ads.googleads.v8.common.KeywordPlanAggregateMetrics.verify|verify} messages.
                         * @param m KeywordPlanAggregateMetrics message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IKeywordPlanAggregateMetrics, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanAggregateMetrics message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IKeywordPlanAggregateMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanAggregateMetrics message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.KeywordPlanAggregateMetrics;

                        /**
                         * Verifies a KeywordPlanAggregateMetrics message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanAggregateMetrics message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanAggregateMetrics
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.KeywordPlanAggregateMetrics;

                        /**
                         * Creates a plain object from a KeywordPlanAggregateMetrics message. Also converts values to other types if specified.
                         * @param m KeywordPlanAggregateMetrics
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.KeywordPlanAggregateMetrics, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanAggregateMetrics to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a KeywordPlanAggregateMetricResults. */
                    interface IKeywordPlanAggregateMetricResults {

                        /** KeywordPlanAggregateMetricResults device_searches */
                        device_searches?: (google.ads.googleads.v8.common.IKeywordPlanDeviceSearches[]|null);
                    }

                    /** Represents a KeywordPlanAggregateMetricResults. */
                    class KeywordPlanAggregateMetricResults implements IKeywordPlanAggregateMetricResults {

                        /**
                         * Constructs a new KeywordPlanAggregateMetricResults.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IKeywordPlanAggregateMetricResults);

                        /** KeywordPlanAggregateMetricResults device_searches. */
                        public device_searches: google.ads.googleads.v8.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.v8.common.IKeywordPlanAggregateMetricResults): google.ads.googleads.v8.common.KeywordPlanAggregateMetricResults;

                        /**
                         * Encodes the specified KeywordPlanAggregateMetricResults message. Does not implicitly {@link google.ads.googleads.v8.common.KeywordPlanAggregateMetricResults.verify|verify} messages.
                         * @param m KeywordPlanAggregateMetricResults message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IKeywordPlanAggregateMetricResults, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanAggregateMetricResults message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IKeywordPlanAggregateMetricResults, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanAggregateMetricResults message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.KeywordPlanAggregateMetricResults;

                        /**
                         * Verifies a KeywordPlanAggregateMetricResults message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanAggregateMetricResults message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanAggregateMetricResults
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.KeywordPlanAggregateMetricResults;

                        /**
                         * Creates a plain object from a KeywordPlanAggregateMetricResults message. Also converts values to other types if specified.
                         * @param m KeywordPlanAggregateMetricResults
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.KeywordPlanAggregateMetricResults, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanAggregateMetricResults to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a KeywordPlanDeviceSearches. */
                    interface IKeywordPlanDeviceSearches {

                        /** KeywordPlanDeviceSearches device */
                        device?: (google.ads.googleads.v8.enums.DeviceEnum.Device|keyof typeof google.ads.googleads.v8.enums.DeviceEnum.Device|null);

                        /** KeywordPlanDeviceSearches search_count */
                        search_count?: (number|null);
                    }

                    /** Represents a KeywordPlanDeviceSearches. */
                    class KeywordPlanDeviceSearches implements IKeywordPlanDeviceSearches {

                        /**
                         * Constructs a new KeywordPlanDeviceSearches.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IKeywordPlanDeviceSearches);

                        /** KeywordPlanDeviceSearches device. */
                        public device: (google.ads.googleads.v8.enums.DeviceEnum.Device|keyof typeof google.ads.googleads.v8.enums.DeviceEnum.Device);

                        /** KeywordPlanDeviceSearches search_count. */
                        public search_count?: (number|null);

                        /** KeywordPlanDeviceSearches _search_count. */
                        public _search_count?: "search_count";

                        /**
                         * Creates a new KeywordPlanDeviceSearches instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanDeviceSearches instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IKeywordPlanDeviceSearches): google.ads.googleads.v8.common.KeywordPlanDeviceSearches;

                        /**
                         * Encodes the specified KeywordPlanDeviceSearches message. Does not implicitly {@link google.ads.googleads.v8.common.KeywordPlanDeviceSearches.verify|verify} messages.
                         * @param m KeywordPlanDeviceSearches message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IKeywordPlanDeviceSearches, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanDeviceSearches message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IKeywordPlanDeviceSearches, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanDeviceSearches message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.KeywordPlanDeviceSearches;

                        /**
                         * Verifies a KeywordPlanDeviceSearches message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanDeviceSearches message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanDeviceSearches
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.KeywordPlanDeviceSearches;

                        /**
                         * Creates a plain object from a KeywordPlanDeviceSearches message. Also converts values to other types if specified.
                         * @param m KeywordPlanDeviceSearches
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.KeywordPlanDeviceSearches, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanDeviceSearches to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a KeywordAnnotations. */
                    interface IKeywordAnnotations {

                        /** KeywordAnnotations concepts */
                        concepts?: (google.ads.googleads.v8.common.IKeywordConcept[]|null);
                    }

                    /** Represents a KeywordAnnotations. */
                    class KeywordAnnotations implements IKeywordAnnotations {

                        /**
                         * Constructs a new KeywordAnnotations.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IKeywordAnnotations);

                        /** KeywordAnnotations concepts. */
                        public concepts: google.ads.googleads.v8.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.v8.common.IKeywordAnnotations): google.ads.googleads.v8.common.KeywordAnnotations;

                        /**
                         * Encodes the specified KeywordAnnotations message. Does not implicitly {@link google.ads.googleads.v8.common.KeywordAnnotations.verify|verify} messages.
                         * @param m KeywordAnnotations message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IKeywordAnnotations, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordAnnotations message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IKeywordAnnotations, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordAnnotations message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.KeywordAnnotations;

                        /**
                         * Verifies a KeywordAnnotations message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordAnnotations message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordAnnotations
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.KeywordAnnotations;

                        /**
                         * Creates a plain object from a KeywordAnnotations message. Also converts values to other types if specified.
                         * @param m KeywordAnnotations
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.KeywordAnnotations, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordAnnotations to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a KeywordConcept. */
                    interface IKeywordConcept {

                        /** KeywordConcept name */
                        name?: (string|null);

                        /** KeywordConcept concept_group */
                        concept_group?: (google.ads.googleads.v8.common.IConceptGroup|null);
                    }

                    /** Represents a KeywordConcept. */
                    class KeywordConcept implements IKeywordConcept {

                        /**
                         * Constructs a new KeywordConcept.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IKeywordConcept);

                        /** KeywordConcept name. */
                        public name: string;

                        /** KeywordConcept concept_group. */
                        public concept_group?: (google.ads.googleads.v8.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.v8.common.IKeywordConcept): google.ads.googleads.v8.common.KeywordConcept;

                        /**
                         * Encodes the specified KeywordConcept message. Does not implicitly {@link google.ads.googleads.v8.common.KeywordConcept.verify|verify} messages.
                         * @param m KeywordConcept message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IKeywordConcept, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordConcept message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IKeywordConcept, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordConcept message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.KeywordConcept;

                        /**
                         * Verifies a KeywordConcept message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordConcept message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordConcept
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.KeywordConcept;

                        /**
                         * Creates a plain object from a KeywordConcept message. Also converts values to other types if specified.
                         * @param m KeywordConcept
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.KeywordConcept, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordConcept to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ConceptGroup. */
                    interface IConceptGroup {

                        /** ConceptGroup name */
                        name?: (string|null);

                        /** ConceptGroup type */
                        type?: (google.ads.googleads.v8.enums.KeywordPlanConceptGroupTypeEnum.KeywordPlanConceptGroupType|keyof typeof google.ads.googleads.v8.enums.KeywordPlanConceptGroupTypeEnum.KeywordPlanConceptGroupType|null);
                    }

                    /** Represents a ConceptGroup. */
                    class ConceptGroup implements IConceptGroup {

                        /**
                         * Constructs a new ConceptGroup.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IConceptGroup);

                        /** ConceptGroup name. */
                        public name: string;

                        /** ConceptGroup type. */
                        public type: (google.ads.googleads.v8.enums.KeywordPlanConceptGroupTypeEnum.KeywordPlanConceptGroupType|keyof typeof google.ads.googleads.v8.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.v8.common.IConceptGroup): google.ads.googleads.v8.common.ConceptGroup;

                        /**
                         * Encodes the specified ConceptGroup message. Does not implicitly {@link google.ads.googleads.v8.common.ConceptGroup.verify|verify} messages.
                         * @param m ConceptGroup message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IConceptGroup, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConceptGroup message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IConceptGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConceptGroup message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ConceptGroup;

                        /**
                         * Verifies a ConceptGroup message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConceptGroup message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConceptGroup
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.ConceptGroup;

                        /**
                         * Creates a plain object from a ConceptGroup message. Also converts values to other types if specified.
                         * @param m ConceptGroup
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.ConceptGroup, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConceptGroup to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MatchingFunction. */
                    interface IMatchingFunction {

                        /** MatchingFunction function_string */
                        function_string?: (string|null);

                        /** MatchingFunction operator */
                        operator?: (google.ads.googleads.v8.enums.MatchingFunctionOperatorEnum.MatchingFunctionOperator|keyof typeof google.ads.googleads.v8.enums.MatchingFunctionOperatorEnum.MatchingFunctionOperator|null);

                        /** MatchingFunction left_operands */
                        left_operands?: (google.ads.googleads.v8.common.IOperand[]|null);

                        /** MatchingFunction right_operands */
                        right_operands?: (google.ads.googleads.v8.common.IOperand[]|null);
                    }

                    /** Represents a MatchingFunction. */
                    class MatchingFunction implements IMatchingFunction {

                        /**
                         * Constructs a new MatchingFunction.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IMatchingFunction);

                        /** MatchingFunction function_string. */
                        public function_string?: (string|null);

                        /** MatchingFunction operator. */
                        public operator: (google.ads.googleads.v8.enums.MatchingFunctionOperatorEnum.MatchingFunctionOperator|keyof typeof google.ads.googleads.v8.enums.MatchingFunctionOperatorEnum.MatchingFunctionOperator);

                        /** MatchingFunction left_operands. */
                        public left_operands: google.ads.googleads.v8.common.IOperand[];

                        /** MatchingFunction right_operands. */
                        public right_operands: google.ads.googleads.v8.common.IOperand[];

                        /** MatchingFunction _function_string. */
                        public _function_string?: "function_string";

                        /**
                         * Creates a new MatchingFunction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MatchingFunction instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IMatchingFunction): google.ads.googleads.v8.common.MatchingFunction;

                        /**
                         * Encodes the specified MatchingFunction message. Does not implicitly {@link google.ads.googleads.v8.common.MatchingFunction.verify|verify} messages.
                         * @param m MatchingFunction message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IMatchingFunction, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MatchingFunction message, length delimited. Does not implicitly {@link google.ads.googleads.v8.common.MatchingFunction.verify|verify} messages.
                         * @param message MatchingFunction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.common.IMatchingFunction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MatchingFunction message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MatchingFunction
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.common.MatchingFunction;

                        /**
                         * Decodes a MatchingFunction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MatchingFunction
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.common.MatchingFunction;

                        /**
                         * Verifies a MatchingFunction message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MatchingFunction message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MatchingFunction
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.MatchingFunction;

                        /**
                         * Creates a plain object from a MatchingFunction message. Also converts values to other types if specified.
                         * @param m MatchingFunction
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.MatchingFunction, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MatchingFunction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an Operand. */
                    interface IOperand {

                        /** Operand constant_operand */
                        constant_operand?: (google.ads.googleads.v8.common.Operand.IConstantOperand|null);

                        /** Operand feed_attribute_operand */
                        feed_attribute_operand?: (google.ads.googleads.v8.common.Operand.IFeedAttributeOperand|null);

                        /** Operand function_operand */
                        function_operand?: (google.ads.googleads.v8.common.Operand.IFunctionOperand|null);

                        /** Operand request_context_operand */
                        request_context_operand?: (google.ads.googleads.v8.common.Operand.IRequestContextOperand|null);
                    }

                    /** Represents an Operand. */
                    class Operand implements IOperand {

                        /**
                         * Constructs a new Operand.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IOperand);

                        /** Operand constant_operand. */
                        public constant_operand?: (google.ads.googleads.v8.common.Operand.IConstantOperand|null);

                        /** Operand feed_attribute_operand. */
                        public feed_attribute_operand?: (google.ads.googleads.v8.common.Operand.IFeedAttributeOperand|null);

                        /** Operand function_operand. */
                        public function_operand?: (google.ads.googleads.v8.common.Operand.IFunctionOperand|null);

                        /** Operand request_context_operand. */
                        public request_context_operand?: (google.ads.googleads.v8.common.Operand.IRequestContextOperand|null);

                        /** Operand function_argument_operand. */
                        public function_argument_operand?: ("constant_operand"|"feed_attribute_operand"|"function_operand"|"request_context_operand");

                        /**
                         * Creates a new Operand instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Operand instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IOperand): google.ads.googleads.v8.common.Operand;

                        /**
                         * Encodes the specified Operand message. Does not implicitly {@link google.ads.googleads.v8.common.Operand.verify|verify} messages.
                         * @param m Operand message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IOperand, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Operand message, length delimited. Does not implicitly {@link google.ads.googleads.v8.common.Operand.verify|verify} messages.
                         * @param message Operand message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.common.IOperand, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an Operand message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns Operand
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.common.Operand;

                        /**
                         * Decodes an Operand message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Operand
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.common.Operand;

                        /**
                         * Verifies an Operand message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an Operand message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns Operand
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.Operand;

                        /**
                         * Creates a plain object from an Operand message. Also converts values to other types if specified.
                         * @param m Operand
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.Operand, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Operand to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace Operand {

                        /** Properties of a ConstantOperand. */
                        interface IConstantOperand {

                            /** ConstantOperand string_value */
                            string_value?: (string|null);

                            /** ConstantOperand long_value */
                            long_value?: (number|null);

                            /** ConstantOperand boolean_value */
                            boolean_value?: (boolean|null);

                            /** ConstantOperand double_value */
                            double_value?: (number|null);
                        }

                        /** Represents a ConstantOperand. */
                        class ConstantOperand implements IConstantOperand {

                            /**
                             * Constructs a new ConstantOperand.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.common.Operand.IConstantOperand);

                            /** ConstantOperand string_value. */
                            public string_value?: (string|null);

                            /** ConstantOperand long_value. */
                            public long_value?: (number|null);

                            /** ConstantOperand boolean_value. */
                            public boolean_value?: (boolean|null);

                            /** ConstantOperand double_value. */
                            public double_value?: (number|null);

                            /** ConstantOperand constant_operand_value. */
                            public constant_operand_value?: ("string_value"|"long_value"|"boolean_value"|"double_value");

                            /**
                             * Creates a new ConstantOperand instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ConstantOperand instance
                             */
                            public static create(properties?: google.ads.googleads.v8.common.Operand.IConstantOperand): google.ads.googleads.v8.common.Operand.ConstantOperand;

                            /**
                             * Encodes the specified ConstantOperand message. Does not implicitly {@link google.ads.googleads.v8.common.Operand.ConstantOperand.verify|verify} messages.
                             * @param m ConstantOperand message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.common.Operand.IConstantOperand, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ConstantOperand message, length delimited. Does not implicitly {@link google.ads.googleads.v8.common.Operand.ConstantOperand.verify|verify} messages.
                             * @param message ConstantOperand message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v8.common.Operand.IConstantOperand, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ConstantOperand message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] Message length if known beforehand
                             * @returns ConstantOperand
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.common.Operand.ConstantOperand;

                            /**
                             * Decodes a ConstantOperand message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ConstantOperand
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.common.Operand.ConstantOperand;

                            /**
                             * Verifies a ConstantOperand message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ConstantOperand message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns ConstantOperand
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.Operand.ConstantOperand;

                            /**
                             * Creates a plain object from a ConstantOperand message. Also converts values to other types if specified.
                             * @param m ConstantOperand
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.common.Operand.ConstantOperand, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ConstantOperand to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a FeedAttributeOperand. */
                        interface IFeedAttributeOperand {

                            /** FeedAttributeOperand feed_id */
                            feed_id?: (number|null);

                            /** FeedAttributeOperand feed_attribute_id */
                            feed_attribute_id?: (number|null);
                        }

                        /** Represents a FeedAttributeOperand. */
                        class FeedAttributeOperand implements IFeedAttributeOperand {

                            /**
                             * Constructs a new FeedAttributeOperand.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.common.Operand.IFeedAttributeOperand);

                            /** FeedAttributeOperand feed_id. */
                            public feed_id?: (number|null);

                            /** FeedAttributeOperand feed_attribute_id. */
                            public feed_attribute_id?: (number|null);

                            /** FeedAttributeOperand _feed_id. */
                            public _feed_id?: "feed_id";

                            /** FeedAttributeOperand _feed_attribute_id. */
                            public _feed_attribute_id?: "feed_attribute_id";

                            /**
                             * Creates a new FeedAttributeOperand instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns FeedAttributeOperand instance
                             */
                            public static create(properties?: google.ads.googleads.v8.common.Operand.IFeedAttributeOperand): google.ads.googleads.v8.common.Operand.FeedAttributeOperand;

                            /**
                             * Encodes the specified FeedAttributeOperand message. Does not implicitly {@link google.ads.googleads.v8.common.Operand.FeedAttributeOperand.verify|verify} messages.
                             * @param m FeedAttributeOperand message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.common.Operand.IFeedAttributeOperand, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified FeedAttributeOperand message, length delimited. Does not implicitly {@link google.ads.googleads.v8.common.Operand.FeedAttributeOperand.verify|verify} messages.
                             * @param message FeedAttributeOperand message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v8.common.Operand.IFeedAttributeOperand, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a FeedAttributeOperand message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] Message length if known beforehand
                             * @returns FeedAttributeOperand
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.common.Operand.FeedAttributeOperand;

                            /**
                             * Decodes a FeedAttributeOperand message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns FeedAttributeOperand
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.common.Operand.FeedAttributeOperand;

                            /**
                             * Verifies a FeedAttributeOperand message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a FeedAttributeOperand message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns FeedAttributeOperand
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.Operand.FeedAttributeOperand;

                            /**
                             * Creates a plain object from a FeedAttributeOperand message. Also converts values to other types if specified.
                             * @param m FeedAttributeOperand
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.common.Operand.FeedAttributeOperand, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this FeedAttributeOperand to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a FunctionOperand. */
                        interface IFunctionOperand {

                            /** FunctionOperand matching_function */
                            matching_function?: (google.ads.googleads.v8.common.IMatchingFunction|null);
                        }

                        /** Represents a FunctionOperand. */
                        class FunctionOperand implements IFunctionOperand {

                            /**
                             * Constructs a new FunctionOperand.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.common.Operand.IFunctionOperand);

                            /** FunctionOperand matching_function. */
                            public matching_function?: (google.ads.googleads.v8.common.IMatchingFunction|null);

                            /**
                             * Creates a new FunctionOperand instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns FunctionOperand instance
                             */
                            public static create(properties?: google.ads.googleads.v8.common.Operand.IFunctionOperand): google.ads.googleads.v8.common.Operand.FunctionOperand;

                            /**
                             * Encodes the specified FunctionOperand message. Does not implicitly {@link google.ads.googleads.v8.common.Operand.FunctionOperand.verify|verify} messages.
                             * @param m FunctionOperand message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.common.Operand.IFunctionOperand, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified FunctionOperand message, length delimited. Does not implicitly {@link google.ads.googleads.v8.common.Operand.FunctionOperand.verify|verify} messages.
                             * @param message FunctionOperand message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v8.common.Operand.IFunctionOperand, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a FunctionOperand message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] Message length if known beforehand
                             * @returns FunctionOperand
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.common.Operand.FunctionOperand;

                            /**
                             * Decodes a FunctionOperand message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns FunctionOperand
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.common.Operand.FunctionOperand;

                            /**
                             * Verifies a FunctionOperand message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a FunctionOperand message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns FunctionOperand
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.Operand.FunctionOperand;

                            /**
                             * Creates a plain object from a FunctionOperand message. Also converts values to other types if specified.
                             * @param m FunctionOperand
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.common.Operand.FunctionOperand, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this FunctionOperand to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a RequestContextOperand. */
                        interface IRequestContextOperand {

                            /** RequestContextOperand context_type */
                            context_type?: (google.ads.googleads.v8.enums.MatchingFunctionContextTypeEnum.MatchingFunctionContextType|keyof typeof google.ads.googleads.v8.enums.MatchingFunctionContextTypeEnum.MatchingFunctionContextType|null);
                        }

                        /** Represents a RequestContextOperand. */
                        class RequestContextOperand implements IRequestContextOperand {

                            /**
                             * Constructs a new RequestContextOperand.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.common.Operand.IRequestContextOperand);

                            /** RequestContextOperand context_type. */
                            public context_type: (google.ads.googleads.v8.enums.MatchingFunctionContextTypeEnum.MatchingFunctionContextType|keyof typeof google.ads.googleads.v8.enums.MatchingFunctionContextTypeEnum.MatchingFunctionContextType);

                            /**
                             * Creates a new RequestContextOperand instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns RequestContextOperand instance
                             */
                            public static create(properties?: google.ads.googleads.v8.common.Operand.IRequestContextOperand): google.ads.googleads.v8.common.Operand.RequestContextOperand;

                            /**
                             * Encodes the specified RequestContextOperand message. Does not implicitly {@link google.ads.googleads.v8.common.Operand.RequestContextOperand.verify|verify} messages.
                             * @param m RequestContextOperand message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.common.Operand.IRequestContextOperand, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified RequestContextOperand message, length delimited. Does not implicitly {@link google.ads.googleads.v8.common.Operand.RequestContextOperand.verify|verify} messages.
                             * @param message RequestContextOperand message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v8.common.Operand.IRequestContextOperand, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a RequestContextOperand message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] Message length if known beforehand
                             * @returns RequestContextOperand
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.common.Operand.RequestContextOperand;

                            /**
                             * Decodes a RequestContextOperand message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns RequestContextOperand
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.common.Operand.RequestContextOperand;

                            /**
                             * Verifies a RequestContextOperand message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a RequestContextOperand message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns RequestContextOperand
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.Operand.RequestContextOperand;

                            /**
                             * Creates a plain object from a RequestContextOperand message. Also converts values to other types if specified.
                             * @param m RequestContextOperand
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.common.Operand.RequestContextOperand, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this RequestContextOperand to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }
                    }

                    /** 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_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 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 average_cpv */
                        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 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 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 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_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.v8.enums.QualityScoreBucketEnum.QualityScoreBucket|keyof typeof google.ads.googleads.v8.enums.QualityScoreBucketEnum.QualityScoreBucket|null);

                        /** Metrics historical_landing_page_quality_score */
                        historical_landing_page_quality_score?: (google.ads.googleads.v8.enums.QualityScoreBucketEnum.QualityScoreBucket|keyof typeof google.ads.googleads.v8.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.v8.enums.QualityScoreBucketEnum.QualityScoreBucket|keyof typeof google.ads.googleads.v8.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.v8.enums.InteractionEventTypeEnum.InteractionEventType[]|null);

                        /** Metrics invalid_click_rate */
                        invalid_click_rate?: (number|null);

                        /** Metrics invalid_clicks */
                        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 speed_score */
                        speed_score?: (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_view_rate */
                        video_view_rate?: (number|null);

                        /** Metrics video_views */
                        video_views?: (number|null);

                        /** Metrics view_through_conversions */
                        view_through_conversions?: (number|null);

                        /** Metrics sk_ad_network_conversions */
                        sk_ad_network_conversions?: (number|null);
                    }

                    /** Represents a Metrics. */
                    class Metrics implements IMetrics {

                        /**
                         * Constructs a new Metrics.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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;

                        /** Metrics all_conversions. */
                        public all_conversions?: (number|null);

                        /** Metrics all_conversions_by_conversion_date. */
                        public all_conversions_by_conversion_date: number;

                        /** 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 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 average_cpv. */
                        public 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 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;

                        /** 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;

                        /** 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 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_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.v8.enums.QualityScoreBucketEnum.QualityScoreBucket|keyof typeof google.ads.googleads.v8.enums.QualityScoreBucketEnum.QualityScoreBucket);

                        /** Metrics historical_landing_page_quality_score. */
                        public historical_landing_page_quality_score: (google.ads.googleads.v8.enums.QualityScoreBucketEnum.QualityScoreBucket|keyof typeof google.ads.googleads.v8.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.v8.enums.QualityScoreBucketEnum.QualityScoreBucket|keyof typeof google.ads.googleads.v8.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.v8.enums.InteractionEventTypeEnum.InteractionEventType[];

                        /** Metrics invalid_click_rate. */
                        public invalid_click_rate?: (number|null);

                        /** Metrics invalid_clicks. */
                        public 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 speed_score. */
                        public speed_score?: (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_view_rate. */
                        public video_view_rate?: (number|null);

                        /** Metrics video_views. */
                        public video_views?: (number|null);

                        /** Metrics view_through_conversions. */
                        public view_through_conversions?: (number|null);

                        /** Metrics sk_ad_network_conversions. */
                        public sk_ad_network_conversions: number;

                        /** Metrics _absolute_top_impression_percentage. */
                        public _absolute_top_impression_percentage?: "absolute_top_impression_percentage";

                        /** Metrics _active_view_cpm. */
                        public _active_view_cpm?: "active_view_cpm";

                        /** Metrics _active_view_ctr. */
                        public _active_view_ctr?: "active_view_ctr";

                        /** Metrics _active_view_impressions. */
                        public _active_view_impressions?: "active_view_impressions";

                        /** Metrics _active_view_measurability. */
                        public _active_view_measurability?: "active_view_measurability";

                        /** Metrics _active_view_measurable_cost_micros. */
                        public _active_view_measurable_cost_micros?: "active_view_measurable_cost_micros";

                        /** Metrics _active_view_measurable_impressions. */
                        public _active_view_measurable_impressions?: "active_view_measurable_impressions";

                        /** Metrics _active_view_viewability. */
                        public _active_view_viewability?: "active_view_viewability";

                        /** Metrics _all_conversions_from_interactions_rate. */
                        public _all_conversions_from_interactions_rate?: "all_conversions_from_interactions_rate";

                        /** Metrics _all_conversions_value. */
                        public _all_conversions_value?: "all_conversions_value";

                        /** Metrics _all_conversions. */
                        public _all_conversions?: "all_conversions";

                        /** Metrics _all_conversions_value_per_cost. */
                        public _all_conversions_value_per_cost?: "all_conversions_value_per_cost";

                        /** Metrics _all_conversions_from_click_to_call. */
                        public _all_conversions_from_click_to_call?: "all_conversions_from_click_to_call";

                        /** Metrics _all_conversions_from_directions. */
                        public _all_conversions_from_directions?: "all_conversions_from_directions";

                        /** Metrics _all_conversions_from_interactions_value_per_interaction. */
                        public _all_conversions_from_interactions_value_per_interaction?: "all_conversions_from_interactions_value_per_interaction";

                        /** Metrics _all_conversions_from_menu. */
                        public _all_conversions_from_menu?: "all_conversions_from_menu";

                        /** Metrics _all_conversions_from_order. */
                        public _all_conversions_from_order?: "all_conversions_from_order";

                        /** Metrics _all_conversions_from_other_engagement. */
                        public _all_conversions_from_other_engagement?: "all_conversions_from_other_engagement";

                        /** Metrics _all_conversions_from_store_visit. */
                        public _all_conversions_from_store_visit?: "all_conversions_from_store_visit";

                        /** Metrics _all_conversions_from_store_website. */
                        public _all_conversions_from_store_website?: "all_conversions_from_store_website";

                        /** Metrics _average_cost. */
                        public _average_cost?: "average_cost";

                        /** Metrics _average_cpc. */
                        public _average_cpc?: "average_cpc";

                        /** Metrics _average_cpe. */
                        public _average_cpe?: "average_cpe";

                        /** Metrics _average_cpm. */
                        public _average_cpm?: "average_cpm";

                        /** Metrics _average_cpv. */
                        public _average_cpv?: "average_cpv";

                        /** Metrics _average_page_views. */
                        public _average_page_views?: "average_page_views";

                        /** Metrics _average_time_on_site. */
                        public _average_time_on_site?: "average_time_on_site";

                        /** Metrics _benchmark_average_max_cpc. */
                        public _benchmark_average_max_cpc?: "benchmark_average_max_cpc";

                        /** Metrics _benchmark_ctr. */
                        public _benchmark_ctr?: "benchmark_ctr";

                        /** Metrics _bounce_rate. */
                        public _bounce_rate?: "bounce_rate";

                        /** Metrics _clicks. */
                        public _clicks?: "clicks";

                        /** Metrics _combined_clicks. */
                        public _combined_clicks?: "combined_clicks";

                        /** Metrics _combined_clicks_per_query. */
                        public _combined_clicks_per_query?: "combined_clicks_per_query";

                        /** Metrics _combined_queries. */
                        public _combined_queries?: "combined_queries";

                        /** Metrics _content_budget_lost_impression_share. */
                        public _content_budget_lost_impression_share?: "content_budget_lost_impression_share";

                        /** Metrics _content_impression_share. */
                        public _content_impression_share?: "content_impression_share";

                        /** Metrics _conversion_last_received_request_date_time. */
                        public _conversion_last_received_request_date_time?: "conversion_last_received_request_date_time";

                        /** Metrics _conversion_last_conversion_date. */
                        public _conversion_last_conversion_date?: "conversion_last_conversion_date";

                        /** Metrics _content_rank_lost_impression_share. */
                        public _content_rank_lost_impression_share?: "content_rank_lost_impression_share";

                        /** Metrics _conversions_from_interactions_rate. */
                        public _conversions_from_interactions_rate?: "conversions_from_interactions_rate";

                        /** Metrics _conversions_value. */
                        public _conversions_value?: "conversions_value";

                        /** Metrics _conversions_value_per_cost. */
                        public _conversions_value_per_cost?: "conversions_value_per_cost";

                        /** Metrics _conversions_from_interactions_value_per_interaction. */
                        public _conversions_from_interactions_value_per_interaction?: "conversions_from_interactions_value_per_interaction";

                        /** Metrics _conversions. */
                        public _conversions?: "conversions";

                        /** Metrics _cost_micros. */
                        public _cost_micros?: "cost_micros";

                        /** Metrics _cost_per_all_conversions. */
                        public _cost_per_all_conversions?: "cost_per_all_conversions";

                        /** Metrics _cost_per_conversion. */
                        public _cost_per_conversion?: "cost_per_conversion";

                        /** Metrics _cost_per_current_model_attributed_conversion. */
                        public _cost_per_current_model_attributed_conversion?: "cost_per_current_model_attributed_conversion";

                        /** Metrics _cross_device_conversions. */
                        public _cross_device_conversions?: "cross_device_conversions";

                        /** Metrics _ctr. */
                        public _ctr?: "ctr";

                        /** Metrics _current_model_attributed_conversions. */
                        public _current_model_attributed_conversions?: "current_model_attributed_conversions";

                        /** Metrics _current_model_attributed_conversions_from_interactions_rate. */
                        public _current_model_attributed_conversions_from_interactions_rate?: "current_model_attributed_conversions_from_interactions_rate";

                        /** Metrics _current_model_attributed_conversions_from_interactions_value_per_interaction. */
                        public _current_model_attributed_conversions_from_interactions_value_per_interaction?: "current_model_attributed_conversions_from_interactions_value_per_interaction";

                        /** Metrics _current_model_attributed_conversions_value. */
                        public _current_model_attributed_conversions_value?: "current_model_attributed_conversions_value";

                        /** Metrics _current_model_attributed_conversions_value_per_cost. */
                        public _current_model_attributed_conversions_value_per_cost?: "current_model_attributed_conversions_value_per_cost";

                        /** Metrics _engagement_rate. */
                        public _engagement_rate?: "engagement_rate";

                        /** Metrics _engagements. */
                        public _engagements?: "engagements";

                        /** Metrics _hotel_average_lead_value_micros. */
                        public _hotel_average_lead_value_micros?: "hotel_average_lead_value_micros";

                        /** Metrics _hotel_price_difference_percentage. */
                        public _hotel_price_difference_percentage?: "hotel_price_difference_percentage";

                        /** Metrics _hotel_eligible_impressions. */
                        public _hotel_eligible_impressions?: "hotel_eligible_impressions";

                        /** Metrics _historical_quality_score. */
                        public _historical_quality_score?: "historical_quality_score";

                        /** Metrics _gmail_forwards. */
                        public _gmail_forwards?: "gmail_forwards";

                        /** Metrics _gmail_saves. */
                        public _gmail_saves?: "gmail_saves";

                        /** Metrics _gmail_secondary_clicks. */
                        public _gmail_secondary_clicks?: "gmail_secondary_clicks";

                        /** Metrics _impressions_from_store_reach. */
                        public _impressions_from_store_reach?: "impressions_from_store_reach";

                        /** Metrics _impressions. */
                        public _impressions?: "impressions";

                        /** Metrics _interaction_rate. */
                        public _interaction_rate?: "interaction_rate";

                        /** Metrics _interactions. */
                        public _interactions?: "interactions";

                        /** Metrics _invalid_click_rate. */
                        public _invalid_click_rate?: "invalid_click_rate";

                        /** Metrics _invalid_clicks. */
                        public _invalid_clicks?: "invalid_clicks";

                        /** Metrics _message_chats. */
                        public _message_chats?: "message_chats";

                        /** Metrics _message_impressions. */
                        public _message_impressions?: "message_impressions";

                        /** Metrics _message_chat_rate. */
                        public _message_chat_rate?: "message_chat_rate";

                        /** Metrics _mobile_friendly_clicks_percentage. */
                        public _mobile_friendly_clicks_percentage?: "mobile_friendly_clicks_percentage";

                        /** Metrics _optimization_score_uplift. */
                        public _optimization_score_uplift?: "optimization_score_uplift";

                        /** Metrics _optimization_score_url. */
                        public _optimization_score_url?: "optimization_score_url";

                        /** Metrics _organic_clicks. */
                        public _organic_clicks?: "organic_clicks";

                        /** Metrics _organic_clicks_per_query. */
                        public _organic_clicks_per_query?: "organic_clicks_per_query";

                        /** Metrics _organic_impressions. */
                        public _organic_impressions?: "organic_impressions";

                        /** Metrics _organic_impressions_per_query. */
                        public _organic_impressions_per_query?: "organic_impressions_per_query";

                        /** Metrics _organic_queries. */
                        public _organic_queries?: "organic_queries";

                        /** Metrics _percent_new_visitors. */
                        public _percent_new_visitors?: "percent_new_visitors";

                        /** Metrics _phone_calls. */
                        public _phone_calls?: "phone_calls";

                        /** Metrics _phone_impressions. */
                        public _phone_impressions?: "phone_impressions";

                        /** Metrics _phone_through_rate. */
                        public _phone_through_rate?: "phone_through_rate";

                        /** Metrics _relative_ctr. */
                        public _relative_ctr?: "relative_ctr";

                        /** Metrics _search_absolute_top_impression_share. */
                        public _search_absolute_top_impression_share?: "search_absolute_top_impression_share";

                        /** Metrics _search_budget_lost_absolute_top_impression_share. */
                        public _search_budget_lost_absolute_top_impression_share?: "search_budget_lost_absolute_top_impression_share";

                        /** Metrics _search_budget_lost_impression_share. */
                        public _search_budget_lost_impression_share?: "search_budget_lost_impression_share";

                        /** Metrics _search_budget_lost_top_impression_share. */
                        public _search_budget_lost_top_impression_share?: "search_budget_lost_top_impression_share";

                        /** Metrics _search_click_share. */
                        public _search_click_share?: "search_click_share";

                        /** Metrics _search_exact_match_impression_share. */
                        public _search_exact_match_impression_share?: "search_exact_match_impression_share";

                        /** Metrics _search_impression_share. */
                        public _search_impression_share?: "search_impression_share";

                        /** Metrics _search_rank_lost_absolute_top_impression_share. */
                        public _search_rank_lost_absolute_top_impression_share?: "search_rank_lost_absolute_top_impression_share";

                        /** Metrics _search_rank_lost_impression_share. */
                        public _search_rank_lost_impression_share?: "search_rank_lost_impression_share";

                        /** Metrics _search_rank_lost_top_impression_share. */
                        public _search_rank_lost_top_impression_share?: "search_rank_lost_top_impression_share";

                        /** Metrics _search_top_impression_share. */
                        public _search_top_impression_share?: "search_top_impression_share";

                        /** Metrics _speed_score. */
                        public _speed_score?: "speed_score";

                        /** Metrics _top_impression_percentage. */
                        public _top_impression_percentage?: "top_impression_percentage";

                        /** Metrics _valid_accelerated_mobile_pages_clicks_percentage. */
                        public _valid_accelerated_mobile_pages_clicks_percentage?: "valid_accelerated_mobile_pages_clicks_percentage";

                        /** Metrics _value_per_all_conversions. */
                        public _value_per_all_conversions?: "value_per_all_conversions";

                        /** Metrics _value_per_all_conversions_by_conversion_date. */
                        public _value_per_all_conversions_by_conversion_date?: "value_per_all_conversions_by_conversion_date";

                        /** Metrics _value_per_conversion. */
                        public _value_per_conversion?: "value_per_conversion";

                        /** Metrics _value_per_conversions_by_conversion_date. */
                        public _value_per_conversions_by_conversion_date?: "value_per_conversions_by_conversion_date";

                        /** Metrics _value_per_current_model_attributed_conversion. */
                        public _value_per_current_model_attributed_conversion?: "value_per_current_model_attributed_conversion";

                        /** Metrics _video_quartile_p100_rate. */
                        public _video_quartile_p100_rate?: "video_quartile_p100_rate";

                        /** Metrics _video_quartile_p25_rate. */
                        public _video_quartile_p25_rate?: "video_quartile_p25_rate";

                        /** Metrics _video_quartile_p50_rate. */
                        public _video_quartile_p50_rate?: "video_quartile_p50_rate";

                        /** Metrics _video_quartile_p75_rate. */
                        public _video_quartile_p75_rate?: "video_quartile_p75_rate";

                        /** Metrics _video_view_rate. */
                        public _video_view_rate?: "video_view_rate";

                        /** Metrics _video_views. */
                        public _video_views?: "video_views";

                        /** Metrics _view_through_conversions. */
                        public _view_through_conversions?: "view_through_conversions";

                        /**
                         * Creates a new Metrics instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Metrics instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IMetrics): google.ads.googleads.v8.common.Metrics;

                        /**
                         * Encodes the specified Metrics message. Does not implicitly {@link google.ads.googleads.v8.common.Metrics.verify|verify} messages.
                         * @param m Metrics message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IMetrics, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Metrics message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Metrics message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.Metrics;

                        /**
                         * Verifies a Metrics message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Metrics message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns Metrics
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.Metrics;

                        /**
                         * Creates a plain object from a Metrics message. Also converts values to other types if specified.
                         * @param m Metrics
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.Metrics, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Metrics to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** OfflineUserAddressInfo _hashed_first_name. */
                        public _hashed_first_name?: "hashed_first_name";

                        /** OfflineUserAddressInfo _hashed_last_name. */
                        public _hashed_last_name?: "hashed_last_name";

                        /** OfflineUserAddressInfo _city. */
                        public _city?: "city";

                        /** OfflineUserAddressInfo _state. */
                        public _state?: "state";

                        /** OfflineUserAddressInfo _country_code. */
                        public _country_code?: "country_code";

                        /** OfflineUserAddressInfo _postal_code. */
                        public _postal_code?: "postal_code";

                        /** OfflineUserAddressInfo _hashed_street_address. */
                        public _hashed_street_address?: "hashed_street_address";

                        /**
                         * Creates a new OfflineUserAddressInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OfflineUserAddressInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IOfflineUserAddressInfo): google.ads.googleads.v8.common.OfflineUserAddressInfo;

                        /**
                         * Encodes the specified OfflineUserAddressInfo message. Does not implicitly {@link google.ads.googleads.v8.common.OfflineUserAddressInfo.verify|verify} messages.
                         * @param m OfflineUserAddressInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IOfflineUserAddressInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OfflineUserAddressInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IOfflineUserAddressInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OfflineUserAddressInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.OfflineUserAddressInfo;

                        /**
                         * Verifies an OfflineUserAddressInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an OfflineUserAddressInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns OfflineUserAddressInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.OfflineUserAddressInfo;

                        /**
                         * Creates a plain object from an OfflineUserAddressInfo message. Also converts values to other types if specified.
                         * @param m OfflineUserAddressInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.OfflineUserAddressInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OfflineUserAddressInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a UserIdentifier. */
                    interface IUserIdentifier {

                        /** UserIdentifier user_identifier_source */
                        user_identifier_source?: (google.ads.googleads.v8.enums.UserIdentifierSourceEnum.UserIdentifierSource|keyof typeof google.ads.googleads.v8.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.v8.common.IOfflineUserAddressInfo|null);
                    }

                    /** Represents a UserIdentifier. */
                    class UserIdentifier implements IUserIdentifier {

                        /**
                         * Constructs a new UserIdentifier.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IUserIdentifier);

                        /** UserIdentifier user_identifier_source. */
                        public user_identifier_source: (google.ads.googleads.v8.enums.UserIdentifierSourceEnum.UserIdentifierSource|keyof typeof google.ads.googleads.v8.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.v8.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.v8.common.IUserIdentifier): google.ads.googleads.v8.common.UserIdentifier;

                        /**
                         * Encodes the specified UserIdentifier message. Does not implicitly {@link google.ads.googleads.v8.common.UserIdentifier.verify|verify} messages.
                         * @param m UserIdentifier message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IUserIdentifier, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserIdentifier message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IUserIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserIdentifier message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.UserIdentifier;

                        /**
                         * Verifies a UserIdentifier message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserIdentifier message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserIdentifier
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.UserIdentifier;

                        /**
                         * Creates a plain object from a UserIdentifier message. Also converts values to other types if specified.
                         * @param m UserIdentifier
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.UserIdentifier, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserIdentifier to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.common.IStoreAttribute|null);

                        /** TransactionAttribute custom_value */
                        custom_value?: (string|null);

                        /** TransactionAttribute item_attribute */
                        item_attribute?: (google.ads.googleads.v8.common.IItemAttribute|null);
                    }

                    /** Represents a TransactionAttribute. */
                    class TransactionAttribute implements ITransactionAttribute {

                        /**
                         * Constructs a new TransactionAttribute.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.IStoreAttribute|null);

                        /** TransactionAttribute custom_value. */
                        public custom_value?: (string|null);

                        /** TransactionAttribute item_attribute. */
                        public item_attribute?: (google.ads.googleads.v8.common.IItemAttribute|null);

                        /** TransactionAttribute _transaction_date_time. */
                        public _transaction_date_time?: "transaction_date_time";

                        /** TransactionAttribute _transaction_amount_micros. */
                        public _transaction_amount_micros?: "transaction_amount_micros";

                        /** TransactionAttribute _currency_code. */
                        public _currency_code?: "currency_code";

                        /** TransactionAttribute _conversion_action. */
                        public _conversion_action?: "conversion_action";

                        /** TransactionAttribute _order_id. */
                        public _order_id?: "order_id";

                        /** TransactionAttribute _custom_value. */
                        public _custom_value?: "custom_value";

                        /**
                         * Creates a new TransactionAttribute instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TransactionAttribute instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ITransactionAttribute): google.ads.googleads.v8.common.TransactionAttribute;

                        /**
                         * Encodes the specified TransactionAttribute message. Does not implicitly {@link google.ads.googleads.v8.common.TransactionAttribute.verify|verify} messages.
                         * @param m TransactionAttribute message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ITransactionAttribute, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TransactionAttribute message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ITransactionAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TransactionAttribute message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.TransactionAttribute;

                        /**
                         * Verifies a TransactionAttribute message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TransactionAttribute message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TransactionAttribute
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.TransactionAttribute;

                        /**
                         * Creates a plain object from a TransactionAttribute message. Also converts values to other types if specified.
                         * @param m TransactionAttribute
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.TransactionAttribute, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TransactionAttribute to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IStoreAttribute);

                        /** StoreAttribute store_code. */
                        public store_code?: (string|null);

                        /** StoreAttribute _store_code. */
                        public _store_code?: "store_code";

                        /**
                         * Creates a new StoreAttribute instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns StoreAttribute instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IStoreAttribute): google.ads.googleads.v8.common.StoreAttribute;

                        /**
                         * Encodes the specified StoreAttribute message. Does not implicitly {@link google.ads.googleads.v8.common.StoreAttribute.verify|verify} messages.
                         * @param m StoreAttribute message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IStoreAttribute, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified StoreAttribute message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IStoreAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a StoreAttribute message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.StoreAttribute;

                        /**
                         * Verifies a StoreAttribute message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a StoreAttribute message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns StoreAttribute
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.StoreAttribute;

                        /**
                         * Creates a plain object from a StoreAttribute message. Also converts values to other types if specified.
                         * @param m StoreAttribute
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.StoreAttribute, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this StoreAttribute to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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;

                        /** ItemAttribute _merchant_id. */
                        public _merchant_id?: "merchant_id";

                        /**
                         * Creates a new ItemAttribute instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ItemAttribute instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IItemAttribute): google.ads.googleads.v8.common.ItemAttribute;

                        /**
                         * Encodes the specified ItemAttribute message. Does not implicitly {@link google.ads.googleads.v8.common.ItemAttribute.verify|verify} messages.
                         * @param m ItemAttribute message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IItemAttribute, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ItemAttribute message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IItemAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ItemAttribute message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.ItemAttribute;

                        /**
                         * Verifies an ItemAttribute message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an ItemAttribute message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ItemAttribute
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.ItemAttribute;

                        /**
                         * Creates a plain object from an ItemAttribute message. Also converts values to other types if specified.
                         * @param m ItemAttribute
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.ItemAttribute, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ItemAttribute to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a UserData. */
                    interface IUserData {

                        /** UserData user_identifiers */
                        user_identifiers?: (google.ads.googleads.v8.common.IUserIdentifier[]|null);

                        /** UserData transaction_attribute */
                        transaction_attribute?: (google.ads.googleads.v8.common.ITransactionAttribute|null);

                        /** UserData user_attribute */
                        user_attribute?: (google.ads.googleads.v8.common.IUserAttribute|null);
                    }

                    /** Represents a UserData. */
                    class UserData implements IUserData {

                        /**
                         * Constructs a new UserData.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IUserData);

                        /** UserData user_identifiers. */
                        public user_identifiers: google.ads.googleads.v8.common.IUserIdentifier[];

                        /** UserData transaction_attribute. */
                        public transaction_attribute?: (google.ads.googleads.v8.common.ITransactionAttribute|null);

                        /** UserData user_attribute. */
                        public user_attribute?: (google.ads.googleads.v8.common.IUserAttribute|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.v8.common.IUserData): google.ads.googleads.v8.common.UserData;

                        /**
                         * Encodes the specified UserData message. Does not implicitly {@link google.ads.googleads.v8.common.UserData.verify|verify} messages.
                         * @param m UserData message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IUserData, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserData message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IUserData, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserData message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.UserData;

                        /**
                         * Verifies a UserData message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserData message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserData
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.UserData;

                        /**
                         * Creates a plain object from a UserData message. Also converts values to other types if specified.
                         * @param m UserData
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.UserData, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserData to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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);
                    }

                    /** Represents a UserAttribute. */
                    class UserAttribute implements IUserAttribute {

                        /**
                         * Constructs a new UserAttribute.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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 _lifetime_value_micros. */
                        public _lifetime_value_micros?: "lifetime_value_micros";

                        /** UserAttribute _lifetime_value_bucket. */
                        public _lifetime_value_bucket?: "lifetime_value_bucket";

                        /**
                         * Creates a new UserAttribute instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserAttribute instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IUserAttribute): google.ads.googleads.v8.common.UserAttribute;

                        /**
                         * Encodes the specified UserAttribute message. Does not implicitly {@link google.ads.googleads.v8.common.UserAttribute.verify|verify} messages.
                         * @param m UserAttribute message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IUserAttribute, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserAttribute message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IUserAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserAttribute message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.UserAttribute;

                        /**
                         * Verifies a UserAttribute message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserAttribute message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserAttribute
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.UserAttribute;

                        /**
                         * Creates a plain object from a UserAttribute message. Also converts values to other types if specified.
                         * @param m UserAttribute
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.UserAttribute, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserAttribute to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CustomerMatchUserListMetadata. */
                    interface ICustomerMatchUserListMetadata {

                        /** CustomerMatchUserListMetadata user_list */
                        user_list?: (string|null);
                    }

                    /** Represents a CustomerMatchUserListMetadata. */
                    class CustomerMatchUserListMetadata implements ICustomerMatchUserListMetadata {

                        /**
                         * Constructs a new CustomerMatchUserListMetadata.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ICustomerMatchUserListMetadata);

                        /** CustomerMatchUserListMetadata user_list. */
                        public user_list?: (string|null);

                        /** CustomerMatchUserListMetadata _user_list. */
                        public _user_list?: "user_list";

                        /**
                         * Creates a new CustomerMatchUserListMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerMatchUserListMetadata instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ICustomerMatchUserListMetadata): google.ads.googleads.v8.common.CustomerMatchUserListMetadata;

                        /**
                         * Encodes the specified CustomerMatchUserListMetadata message. Does not implicitly {@link google.ads.googleads.v8.common.CustomerMatchUserListMetadata.verify|verify} messages.
                         * @param m CustomerMatchUserListMetadata message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ICustomerMatchUserListMetadata, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerMatchUserListMetadata message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ICustomerMatchUserListMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerMatchUserListMetadata message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.CustomerMatchUserListMetadata;

                        /**
                         * Verifies a CustomerMatchUserListMetadata message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerMatchUserListMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerMatchUserListMetadata
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.CustomerMatchUserListMetadata;

                        /**
                         * Creates a plain object from a CustomerMatchUserListMetadata message. Also converts values to other types if specified.
                         * @param m CustomerMatchUserListMetadata
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.CustomerMatchUserListMetadata, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerMatchUserListMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.common.IStoreSalesThirdPartyMetadata|null);
                    }

                    /** Represents a StoreSalesMetadata. */
                    class StoreSalesMetadata implements IStoreSalesMetadata {

                        /**
                         * Constructs a new StoreSalesMetadata.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.IStoreSalesThirdPartyMetadata|null);

                        /** StoreSalesMetadata _loyalty_fraction. */
                        public _loyalty_fraction?: "loyalty_fraction";

                        /** StoreSalesMetadata _transaction_upload_fraction. */
                        public _transaction_upload_fraction?: "transaction_upload_fraction";

                        /** StoreSalesMetadata _custom_key. */
                        public _custom_key?: "custom_key";

                        /**
                         * Creates a new StoreSalesMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns StoreSalesMetadata instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IStoreSalesMetadata): google.ads.googleads.v8.common.StoreSalesMetadata;

                        /**
                         * Encodes the specified StoreSalesMetadata message. Does not implicitly {@link google.ads.googleads.v8.common.StoreSalesMetadata.verify|verify} messages.
                         * @param m StoreSalesMetadata message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IStoreSalesMetadata, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified StoreSalesMetadata message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IStoreSalesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a StoreSalesMetadata message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.StoreSalesMetadata;

                        /**
                         * Verifies a StoreSalesMetadata message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a StoreSalesMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns StoreSalesMetadata
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.StoreSalesMetadata;

                        /**
                         * Creates a plain object from a StoreSalesMetadata message. Also converts values to other types if specified.
                         * @param m StoreSalesMetadata
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.StoreSalesMetadata, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this StoreSalesMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** StoreSalesThirdPartyMetadata _advertiser_upload_date_time. */
                        public _advertiser_upload_date_time?: "advertiser_upload_date_time";

                        /** StoreSalesThirdPartyMetadata _valid_transaction_fraction. */
                        public _valid_transaction_fraction?: "valid_transaction_fraction";

                        /** StoreSalesThirdPartyMetadata _partner_match_fraction. */
                        public _partner_match_fraction?: "partner_match_fraction";

                        /** StoreSalesThirdPartyMetadata _partner_upload_fraction. */
                        public _partner_upload_fraction?: "partner_upload_fraction";

                        /** StoreSalesThirdPartyMetadata _bridge_map_version_id. */
                        public _bridge_map_version_id?: "bridge_map_version_id";

                        /** StoreSalesThirdPartyMetadata _partner_id. */
                        public _partner_id?: "partner_id";

                        /**
                         * Creates a new StoreSalesThirdPartyMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns StoreSalesThirdPartyMetadata instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IStoreSalesThirdPartyMetadata): google.ads.googleads.v8.common.StoreSalesThirdPartyMetadata;

                        /**
                         * Encodes the specified StoreSalesThirdPartyMetadata message. Does not implicitly {@link google.ads.googleads.v8.common.StoreSalesThirdPartyMetadata.verify|verify} messages.
                         * @param m StoreSalesThirdPartyMetadata message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IStoreSalesThirdPartyMetadata, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified StoreSalesThirdPartyMetadata message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IStoreSalesThirdPartyMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a StoreSalesThirdPartyMetadata message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.StoreSalesThirdPartyMetadata;

                        /**
                         * Verifies a StoreSalesThirdPartyMetadata message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a StoreSalesThirdPartyMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns StoreSalesThirdPartyMetadata
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.StoreSalesThirdPartyMetadata;

                        /**
                         * Creates a plain object from a StoreSalesThirdPartyMetadata message. Also converts values to other types if specified.
                         * @param m StoreSalesThirdPartyMetadata
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.StoreSalesThirdPartyMetadata, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this StoreSalesThirdPartyMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IRealTimeBiddingSetting);

                        /** RealTimeBiddingSetting opt_in. */
                        public opt_in?: (boolean|null);

                        /** RealTimeBiddingSetting _opt_in. */
                        public _opt_in?: "opt_in";

                        /**
                         * Creates a new RealTimeBiddingSetting instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RealTimeBiddingSetting instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IRealTimeBiddingSetting): google.ads.googleads.v8.common.RealTimeBiddingSetting;

                        /**
                         * Encodes the specified RealTimeBiddingSetting message. Does not implicitly {@link google.ads.googleads.v8.common.RealTimeBiddingSetting.verify|verify} messages.
                         * @param m RealTimeBiddingSetting message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IRealTimeBiddingSetting, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RealTimeBiddingSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IRealTimeBiddingSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RealTimeBiddingSetting message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.RealTimeBiddingSetting;

                        /**
                         * Verifies a RealTimeBiddingSetting message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RealTimeBiddingSetting message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns RealTimeBiddingSetting
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.RealTimeBiddingSetting;

                        /**
                         * Creates a plain object from a RealTimeBiddingSetting message. Also converts values to other types if specified.
                         * @param m RealTimeBiddingSetting
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.RealTimeBiddingSetting, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RealTimeBiddingSetting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a Segments. */
                    interface ISegments {

                        /** Segments ad_destination_type */
                        ad_destination_type?: (google.ads.googleads.v8.enums.AdDestinationTypeEnum.AdDestinationType|keyof typeof google.ads.googleads.v8.enums.AdDestinationTypeEnum.AdDestinationType|null);

                        /** Segments ad_network_type */
                        ad_network_type?: (google.ads.googleads.v8.enums.AdNetworkTypeEnum.AdNetworkType|keyof typeof google.ads.googleads.v8.enums.AdNetworkTypeEnum.AdNetworkType|null);

                        /** Segments budget_campaign_association_status */
                        budget_campaign_association_status?: (google.ads.googleads.v8.common.IBudgetCampaignAssociationStatus|null);

                        /** Segments click_type */
                        click_type?: (google.ads.googleads.v8.enums.ClickTypeEnum.ClickType|keyof typeof google.ads.googleads.v8.enums.ClickTypeEnum.ClickType|null);

                        /** Segments conversion_action */
                        conversion_action?: (string|null);

                        /** Segments conversion_action_category */
                        conversion_action_category?: (google.ads.googleads.v8.enums.ConversionActionCategoryEnum.ConversionActionCategory|keyof typeof google.ads.googleads.v8.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.v8.enums.ConversionAttributionEventTypeEnum.ConversionAttributionEventType|keyof typeof google.ads.googleads.v8.enums.ConversionAttributionEventTypeEnum.ConversionAttributionEventType|null);

                        /** Segments conversion_lag_bucket */
                        conversion_lag_bucket?: (google.ads.googleads.v8.enums.ConversionLagBucketEnum.ConversionLagBucket|keyof typeof google.ads.googleads.v8.enums.ConversionLagBucketEnum.ConversionLagBucket|null);

                        /** Segments conversion_or_adjustment_lag_bucket */
                        conversion_or_adjustment_lag_bucket?: (google.ads.googleads.v8.enums.ConversionOrAdjustmentLagBucketEnum.ConversionOrAdjustmentLagBucket|keyof typeof google.ads.googleads.v8.enums.ConversionOrAdjustmentLagBucketEnum.ConversionOrAdjustmentLagBucket|null);

                        /** Segments date */
                        date?: (string|null);

                        /** Segments day_of_week */
                        day_of_week?: (google.ads.googleads.v8.enums.DayOfWeekEnum.DayOfWeek|keyof typeof google.ads.googleads.v8.enums.DayOfWeekEnum.DayOfWeek|null);

                        /** Segments device */
                        device?: (google.ads.googleads.v8.enums.DeviceEnum.Device|keyof typeof google.ads.googleads.v8.enums.DeviceEnum.Device|null);

                        /** Segments external_conversion_source */
                        external_conversion_source?: (google.ads.googleads.v8.enums.ExternalConversionSourceEnum.ExternalConversionSource|keyof typeof google.ads.googleads.v8.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.v8.enums.DayOfWeekEnum.DayOfWeek|keyof typeof google.ads.googleads.v8.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.v8.enums.HotelDateSelectionTypeEnum.HotelDateSelectionType|keyof typeof google.ads.googleads.v8.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.v8.enums.HotelRateTypeEnum.HotelRateType|keyof typeof google.ads.googleads.v8.enums.HotelRateTypeEnum.HotelRateType|null);

                        /** Segments hotel_price_bucket */
                        hotel_price_bucket?: (google.ads.googleads.v8.enums.HotelPriceBucketEnum.HotelPriceBucket|keyof typeof google.ads.googleads.v8.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.v8.common.IKeyword|null);

                        /** Segments month */
                        month?: (string|null);

                        /** Segments month_of_year */
                        month_of_year?: (google.ads.googleads.v8.enums.MonthOfYearEnum.MonthOfYear|keyof typeof google.ads.googleads.v8.enums.MonthOfYearEnum.MonthOfYear|null);

                        /** Segments partner_hotel_id */
                        partner_hotel_id?: (string|null);

                        /** Segments placeholder_type */
                        placeholder_type?: (google.ads.googleads.v8.enums.PlaceholderTypeEnum.PlaceholderType|keyof typeof google.ads.googleads.v8.enums.PlaceholderTypeEnum.PlaceholderType|null);

                        /** Segments product_aggregator_id */
                        product_aggregator_id?: (number|null);

                        /** Segments product_bidding_category_level1 */
                        product_bidding_category_level1?: (string|null);

                        /** Segments product_bidding_category_level2 */
                        product_bidding_category_level2?: (string|null);

                        /** Segments product_bidding_category_level3 */
                        product_bidding_category_level3?: (string|null);

                        /** Segments product_bidding_category_level4 */
                        product_bidding_category_level4?: (string|null);

                        /** Segments product_bidding_category_level5 */
                        product_bidding_category_level5?: (string|null);

                        /** Segments product_brand */
                        product_brand?: (string|null);

                        /** Segments product_channel */
                        product_channel?: (google.ads.googleads.v8.enums.ProductChannelEnum.ProductChannel|keyof typeof google.ads.googleads.v8.enums.ProductChannelEnum.ProductChannel|null);

                        /** Segments product_channel_exclusivity */
                        product_channel_exclusivity?: (google.ads.googleads.v8.enums.ProductChannelExclusivityEnum.ProductChannelExclusivity|keyof typeof google.ads.googleads.v8.enums.ProductChannelExclusivityEnum.ProductChannelExclusivity|null);

                        /** Segments product_condition */
                        product_condition?: (google.ads.googleads.v8.enums.ProductConditionEnum.ProductCondition|keyof typeof google.ads.googleads.v8.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_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 recommendation_type */
                        recommendation_type?: (google.ads.googleads.v8.enums.RecommendationTypeEnum.RecommendationType|keyof typeof google.ads.googleads.v8.enums.RecommendationTypeEnum.RecommendationType|null);

                        /** Segments search_engine_results_page_type */
                        search_engine_results_page_type?: (google.ads.googleads.v8.enums.SearchEngineResultsPageTypeEnum.SearchEngineResultsPageType|keyof typeof google.ads.googleads.v8.enums.SearchEngineResultsPageTypeEnum.SearchEngineResultsPageType|null);

                        /** Segments search_term_match_type */
                        search_term_match_type?: (google.ads.googleads.v8.enums.SearchTermMatchTypeEnum.SearchTermMatchType|keyof typeof google.ads.googleads.v8.enums.SearchTermMatchTypeEnum.SearchTermMatchType|null);

                        /** Segments slot */
                        slot?: (google.ads.googleads.v8.enums.SlotEnum.Slot|keyof typeof google.ads.googleads.v8.enums.SlotEnum.Slot|null);

                        /** Segments conversion_value_rule_primary_dimension */
                        conversion_value_rule_primary_dimension?: (google.ads.googleads.v8.enums.ConversionValueRulePrimaryDimensionEnum.ConversionValueRulePrimaryDimension|keyof typeof google.ads.googleads.v8.enums.ConversionValueRulePrimaryDimensionEnum.ConversionValueRulePrimaryDimension|null);

                        /** Segments webpage */
                        webpage?: (string|null);

                        /** Segments week */
                        week?: (string|null);

                        /** Segments year */
                        year?: (number|null);

                        /** Segments sk_ad_network_conversion_value */
                        sk_ad_network_conversion_value?: (number|null);

                        /** Segments asset_interaction_target */
                        asset_interaction_target?: (google.ads.googleads.v8.common.IAssetInteractionTarget|null);
                    }

                    /** Represents a Segments. */
                    class Segments implements ISegments {

                        /**
                         * Constructs a new Segments.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ISegments);

                        /** Segments ad_destination_type. */
                        public ad_destination_type: (google.ads.googleads.v8.enums.AdDestinationTypeEnum.AdDestinationType|keyof typeof google.ads.googleads.v8.enums.AdDestinationTypeEnum.AdDestinationType);

                        /** Segments ad_network_type. */
                        public ad_network_type: (google.ads.googleads.v8.enums.AdNetworkTypeEnum.AdNetworkType|keyof typeof google.ads.googleads.v8.enums.AdNetworkTypeEnum.AdNetworkType);

                        /** Segments budget_campaign_association_status. */
                        public budget_campaign_association_status?: (google.ads.googleads.v8.common.IBudgetCampaignAssociationStatus|null);

                        /** Segments click_type. */
                        public click_type: (google.ads.googleads.v8.enums.ClickTypeEnum.ClickType|keyof typeof google.ads.googleads.v8.enums.ClickTypeEnum.ClickType);

                        /** Segments conversion_action. */
                        public conversion_action?: (string|null);

                        /** Segments conversion_action_category. */
                        public conversion_action_category: (google.ads.googleads.v8.enums.ConversionActionCategoryEnum.ConversionActionCategory|keyof typeof google.ads.googleads.v8.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.v8.enums.ConversionAttributionEventTypeEnum.ConversionAttributionEventType|keyof typeof google.ads.googleads.v8.enums.ConversionAttributionEventTypeEnum.ConversionAttributionEventType);

                        /** Segments conversion_lag_bucket. */
                        public conversion_lag_bucket: (google.ads.googleads.v8.enums.ConversionLagBucketEnum.ConversionLagBucket|keyof typeof google.ads.googleads.v8.enums.ConversionLagBucketEnum.ConversionLagBucket);

                        /** Segments conversion_or_adjustment_lag_bucket. */
                        public conversion_or_adjustment_lag_bucket: (google.ads.googleads.v8.enums.ConversionOrAdjustmentLagBucketEnum.ConversionOrAdjustmentLagBucket|keyof typeof google.ads.googleads.v8.enums.ConversionOrAdjustmentLagBucketEnum.ConversionOrAdjustmentLagBucket);

                        /** Segments date. */
                        public date?: (string|null);

                        /** Segments day_of_week. */
                        public day_of_week: (google.ads.googleads.v8.enums.DayOfWeekEnum.DayOfWeek|keyof typeof google.ads.googleads.v8.enums.DayOfWeekEnum.DayOfWeek);

                        /** Segments device. */
                        public device: (google.ads.googleads.v8.enums.DeviceEnum.Device|keyof typeof google.ads.googleads.v8.enums.DeviceEnum.Device);

                        /** Segments external_conversion_source. */
                        public external_conversion_source: (google.ads.googleads.v8.enums.ExternalConversionSourceEnum.ExternalConversionSource|keyof typeof google.ads.googleads.v8.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.v8.enums.DayOfWeekEnum.DayOfWeek|keyof typeof google.ads.googleads.v8.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.v8.enums.HotelDateSelectionTypeEnum.HotelDateSelectionType|keyof typeof google.ads.googleads.v8.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.v8.enums.HotelRateTypeEnum.HotelRateType|keyof typeof google.ads.googleads.v8.enums.HotelRateTypeEnum.HotelRateType);

                        /** Segments hotel_price_bucket. */
                        public hotel_price_bucket: (google.ads.googleads.v8.enums.HotelPriceBucketEnum.HotelPriceBucket|keyof typeof google.ads.googleads.v8.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.v8.common.IKeyword|null);

                        /** Segments month. */
                        public month?: (string|null);

                        /** Segments month_of_year. */
                        public month_of_year: (google.ads.googleads.v8.enums.MonthOfYearEnum.MonthOfYear|keyof typeof google.ads.googleads.v8.enums.MonthOfYearEnum.MonthOfYear);

                        /** Segments partner_hotel_id. */
                        public partner_hotel_id?: (string|null);

                        /** Segments placeholder_type. */
                        public placeholder_type: (google.ads.googleads.v8.enums.PlaceholderTypeEnum.PlaceholderType|keyof typeof google.ads.googleads.v8.enums.PlaceholderTypeEnum.PlaceholderType);

                        /** Segments product_aggregator_id. */
                        public product_aggregator_id?: (number|null);

                        /** Segments product_bidding_category_level1. */
                        public product_bidding_category_level1?: (string|null);

                        /** Segments product_bidding_category_level2. */
                        public product_bidding_category_level2?: (string|null);

                        /** Segments product_bidding_category_level3. */
                        public product_bidding_category_level3?: (string|null);

                        /** Segments product_bidding_category_level4. */
                        public product_bidding_category_level4?: (string|null);

                        /** Segments product_bidding_category_level5. */
                        public product_bidding_category_level5?: (string|null);

                        /** Segments product_brand. */
                        public product_brand?: (string|null);

                        /** Segments product_channel. */
                        public product_channel: (google.ads.googleads.v8.enums.ProductChannelEnum.ProductChannel|keyof typeof google.ads.googleads.v8.enums.ProductChannelEnum.ProductChannel);

                        /** Segments product_channel_exclusivity. */
                        public product_channel_exclusivity: (google.ads.googleads.v8.enums.ProductChannelExclusivityEnum.ProductChannelExclusivity|keyof typeof google.ads.googleads.v8.enums.ProductChannelExclusivityEnum.ProductChannelExclusivity);

                        /** Segments product_condition. */
                        public product_condition: (google.ads.googleads.v8.enums.ProductConditionEnum.ProductCondition|keyof typeof google.ads.googleads.v8.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_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 recommendation_type. */
                        public recommendation_type: (google.ads.googleads.v8.enums.RecommendationTypeEnum.RecommendationType|keyof typeof google.ads.googleads.v8.enums.RecommendationTypeEnum.RecommendationType);

                        /** Segments search_engine_results_page_type. */
                        public search_engine_results_page_type: (google.ads.googleads.v8.enums.SearchEngineResultsPageTypeEnum.SearchEngineResultsPageType|keyof typeof google.ads.googleads.v8.enums.SearchEngineResultsPageTypeEnum.SearchEngineResultsPageType);

                        /** Segments search_term_match_type. */
                        public search_term_match_type: (google.ads.googleads.v8.enums.SearchTermMatchTypeEnum.SearchTermMatchType|keyof typeof google.ads.googleads.v8.enums.SearchTermMatchTypeEnum.SearchTermMatchType);

                        /** Segments slot. */
                        public slot: (google.ads.googleads.v8.enums.SlotEnum.Slot|keyof typeof google.ads.googleads.v8.enums.SlotEnum.Slot);

                        /** Segments conversion_value_rule_primary_dimension. */
                        public conversion_value_rule_primary_dimension: (google.ads.googleads.v8.enums.ConversionValueRulePrimaryDimensionEnum.ConversionValueRulePrimaryDimension|keyof typeof google.ads.googleads.v8.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_conversion_value. */
                        public sk_ad_network_conversion_value?: (number|null);

                        /** Segments asset_interaction_target. */
                        public asset_interaction_target?: (google.ads.googleads.v8.common.IAssetInteractionTarget|null);

                        /** Segments _conversion_action. */
                        public _conversion_action?: "conversion_action";

                        /** Segments _conversion_action_name. */
                        public _conversion_action_name?: "conversion_action_name";

                        /** Segments _conversion_adjustment. */
                        public _conversion_adjustment?: "conversion_adjustment";

                        /** Segments _date. */
                        public _date?: "date";

                        /** Segments _geo_target_airport. */
                        public _geo_target_airport?: "geo_target_airport";

                        /** Segments _geo_target_canton. */
                        public _geo_target_canton?: "geo_target_canton";

                        /** Segments _geo_target_city. */
                        public _geo_target_city?: "geo_target_city";

                        /** Segments _geo_target_country. */
                        public _geo_target_country?: "geo_target_country";

                        /** Segments _geo_target_county. */
                        public _geo_target_county?: "geo_target_county";

                        /** Segments _geo_target_district. */
                        public _geo_target_district?: "geo_target_district";

                        /** Segments _geo_target_metro. */
                        public _geo_target_metro?: "geo_target_metro";

                        /** Segments _geo_target_most_specific_location. */
                        public _geo_target_most_specific_location?: "geo_target_most_specific_location";

                        /** Segments _geo_target_postal_code. */
                        public _geo_target_postal_code?: "geo_target_postal_code";

                        /** Segments _geo_target_province. */
                        public _geo_target_province?: "geo_target_province";

                        /** Segments _geo_target_region. */
                        public _geo_target_region?: "geo_target_region";

                        /** Segments _geo_target_state. */
                        public _geo_target_state?: "geo_target_state";

                        /** Segments _hotel_booking_window_days. */
                        public _hotel_booking_window_days?: "hotel_booking_window_days";

                        /** Segments _hotel_center_id. */
                        public _hotel_center_id?: "hotel_center_id";

                        /** Segments _hotel_check_in_date. */
                        public _hotel_check_in_date?: "hotel_check_in_date";

                        /** Segments _hotel_city. */
                        public _hotel_city?: "hotel_city";

                        /** Segments _hotel_class. */
                        public _hotel_class?: "hotel_class";

                        /** Segments _hotel_country. */
                        public _hotel_country?: "hotel_country";

                        /** Segments _hotel_length_of_stay. */
                        public _hotel_length_of_stay?: "hotel_length_of_stay";

                        /** Segments _hotel_rate_rule_id. */
                        public _hotel_rate_rule_id?: "hotel_rate_rule_id";

                        /** Segments _hotel_state. */
                        public _hotel_state?: "hotel_state";

                        /** Segments _hour. */
                        public _hour?: "hour";

                        /** Segments _interaction_on_this_extension. */
                        public _interaction_on_this_extension?: "interaction_on_this_extension";

                        /** Segments _month. */
                        public _month?: "month";

                        /** Segments _partner_hotel_id. */
                        public _partner_hotel_id?: "partner_hotel_id";

                        /** Segments _product_aggregator_id. */
                        public _product_aggregator_id?: "product_aggregator_id";

                        /** Segments _product_bidding_category_level1. */
                        public _product_bidding_category_level1?: "product_bidding_category_level1";

                        /** Segments _product_bidding_category_level2. */
                        public _product_bidding_category_level2?: "product_bidding_category_level2";

                        /** Segments _product_bidding_category_level3. */
                        public _product_bidding_category_level3?: "product_bidding_category_level3";

                        /** Segments _product_bidding_category_level4. */
                        public _product_bidding_category_level4?: "product_bidding_category_level4";

                        /** Segments _product_bidding_category_level5. */
                        public _product_bidding_category_level5?: "product_bidding_category_level5";

                        /** Segments _product_brand. */
                        public _product_brand?: "product_brand";

                        /** Segments _product_country. */
                        public _product_country?: "product_country";

                        /** Segments _product_custom_attribute0. */
                        public _product_custom_attribute0?: "product_custom_attribute0";

                        /** Segments _product_custom_attribute1. */
                        public _product_custom_attribute1?: "product_custom_attribute1";

                        /** Segments _product_custom_attribute2. */
                        public _product_custom_attribute2?: "product_custom_attribute2";

                        /** Segments _product_custom_attribute3. */
                        public _product_custom_attribute3?: "product_custom_attribute3";

                        /** Segments _product_custom_attribute4. */
                        public _product_custom_attribute4?: "product_custom_attribute4";

                        /** Segments _product_item_id. */
                        public _product_item_id?: "product_item_id";

                        /** Segments _product_language. */
                        public _product_language?: "product_language";

                        /** Segments _product_merchant_id. */
                        public _product_merchant_id?: "product_merchant_id";

                        /** Segments _product_store_id. */
                        public _product_store_id?: "product_store_id";

                        /** Segments _product_title. */
                        public _product_title?: "product_title";

                        /** Segments _product_type_l1. */
                        public _product_type_l1?: "product_type_l1";

                        /** Segments _product_type_l2. */
                        public _product_type_l2?: "product_type_l2";

                        /** Segments _product_type_l3. */
                        public _product_type_l3?: "product_type_l3";

                        /** Segments _product_type_l4. */
                        public _product_type_l4?: "product_type_l4";

                        /** Segments _product_type_l5. */
                        public _product_type_l5?: "product_type_l5";

                        /** Segments _quarter. */
                        public _quarter?: "quarter";

                        /** Segments _webpage. */
                        public _webpage?: "webpage";

                        /** Segments _week. */
                        public _week?: "week";

                        /** Segments _year. */
                        public _year?: "year";

                        /** Segments _sk_ad_network_conversion_value. */
                        public _sk_ad_network_conversion_value?: "sk_ad_network_conversion_value";

                        /** Segments _asset_interaction_target. */
                        public _asset_interaction_target?: "asset_interaction_target";

                        /**
                         * Creates a new Segments instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Segments instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ISegments): google.ads.googleads.v8.common.Segments;

                        /**
                         * Encodes the specified Segments message. Does not implicitly {@link google.ads.googleads.v8.common.Segments.verify|verify} messages.
                         * @param m Segments message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ISegments, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Segments message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ISegments, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Segments message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.Segments;

                        /**
                         * Verifies a Segments message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Segments message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns Segments
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.Segments;

                        /**
                         * Creates a plain object from a Segments message. Also converts values to other types if specified.
                         * @param m Segments
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.Segments, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Segments to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a Keyword. */
                    interface IKeyword {

                        /** Keyword ad_group_criterion */
                        ad_group_criterion?: (string|null);

                        /** Keyword info */
                        info?: (google.ads.googleads.v8.common.IKeywordInfo|null);
                    }

                    /** Represents a Keyword. */
                    class Keyword implements IKeyword {

                        /**
                         * Constructs a new Keyword.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IKeyword);

                        /** Keyword ad_group_criterion. */
                        public ad_group_criterion?: (string|null);

                        /** Keyword info. */
                        public info?: (google.ads.googleads.v8.common.IKeywordInfo|null);

                        /** Keyword _ad_group_criterion. */
                        public _ad_group_criterion?: "ad_group_criterion";

                        /**
                         * Creates a new Keyword instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Keyword instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IKeyword): google.ads.googleads.v8.common.Keyword;

                        /**
                         * Encodes the specified Keyword message. Does not implicitly {@link google.ads.googleads.v8.common.Keyword.verify|verify} messages.
                         * @param m Keyword message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IKeyword, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Keyword message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IKeyword, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Keyword message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.Keyword;

                        /**
                         * Verifies a Keyword message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Keyword message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns Keyword
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.Keyword;

                        /**
                         * Creates a plain object from a Keyword message. Also converts values to other types if specified.
                         * @param m Keyword
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.Keyword, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Keyword to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a BudgetCampaignAssociationStatus. */
                    interface IBudgetCampaignAssociationStatus {

                        /** BudgetCampaignAssociationStatus campaign */
                        campaign?: (string|null);

                        /** BudgetCampaignAssociationStatus status */
                        status?: (google.ads.googleads.v8.enums.BudgetCampaignAssociationStatusEnum.BudgetCampaignAssociationStatus|keyof typeof google.ads.googleads.v8.enums.BudgetCampaignAssociationStatusEnum.BudgetCampaignAssociationStatus|null);
                    }

                    /** Represents a BudgetCampaignAssociationStatus. */
                    class BudgetCampaignAssociationStatus implements IBudgetCampaignAssociationStatus {

                        /**
                         * Constructs a new BudgetCampaignAssociationStatus.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IBudgetCampaignAssociationStatus);

                        /** BudgetCampaignAssociationStatus campaign. */
                        public campaign?: (string|null);

                        /** BudgetCampaignAssociationStatus status. */
                        public status: (google.ads.googleads.v8.enums.BudgetCampaignAssociationStatusEnum.BudgetCampaignAssociationStatus|keyof typeof google.ads.googleads.v8.enums.BudgetCampaignAssociationStatusEnum.BudgetCampaignAssociationStatus);

                        /** BudgetCampaignAssociationStatus _campaign. */
                        public _campaign?: "campaign";

                        /**
                         * Creates a new BudgetCampaignAssociationStatus instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BudgetCampaignAssociationStatus instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IBudgetCampaignAssociationStatus): google.ads.googleads.v8.common.BudgetCampaignAssociationStatus;

                        /**
                         * Encodes the specified BudgetCampaignAssociationStatus message. Does not implicitly {@link google.ads.googleads.v8.common.BudgetCampaignAssociationStatus.verify|verify} messages.
                         * @param m BudgetCampaignAssociationStatus message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IBudgetCampaignAssociationStatus, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BudgetCampaignAssociationStatus message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IBudgetCampaignAssociationStatus, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BudgetCampaignAssociationStatus message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.BudgetCampaignAssociationStatus;

                        /**
                         * Verifies a BudgetCampaignAssociationStatus message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BudgetCampaignAssociationStatus message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BudgetCampaignAssociationStatus
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.BudgetCampaignAssociationStatus;

                        /**
                         * Creates a plain object from a BudgetCampaignAssociationStatus message. Also converts values to other types if specified.
                         * @param m BudgetCampaignAssociationStatus
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.BudgetCampaignAssociationStatus, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BudgetCampaignAssociationStatus to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.IAssetInteractionTarget): google.ads.googleads.v8.common.AssetInteractionTarget;

                        /**
                         * Encodes the specified AssetInteractionTarget message. Does not implicitly {@link google.ads.googleads.v8.common.AssetInteractionTarget.verify|verify} messages.
                         * @param m AssetInteractionTarget message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IAssetInteractionTarget, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetInteractionTarget message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IAssetInteractionTarget, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetInteractionTarget message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.AssetInteractionTarget;

                        /**
                         * Verifies an AssetInteractionTarget message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AssetInteractionTarget message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AssetInteractionTarget
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.AssetInteractionTarget;

                        /**
                         * Creates a plain object from an AssetInteractionTarget message. Also converts values to other types if specified.
                         * @param m AssetInteractionTarget
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.AssetInteractionTarget, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetInteractionTarget to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a BidModifierSimulationPointList. */
                    interface IBidModifierSimulationPointList {

                        /** BidModifierSimulationPointList points */
                        points?: (google.ads.googleads.v8.common.IBidModifierSimulationPoint[]|null);
                    }

                    /** Represents a BidModifierSimulationPointList. */
                    class BidModifierSimulationPointList implements IBidModifierSimulationPointList {

                        /**
                         * Constructs a new BidModifierSimulationPointList.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IBidModifierSimulationPointList);

                        /** BidModifierSimulationPointList points. */
                        public points: google.ads.googleads.v8.common.IBidModifierSimulationPoint[];

                        /**
                         * Creates a new BidModifierSimulationPointList instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BidModifierSimulationPointList instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IBidModifierSimulationPointList): google.ads.googleads.v8.common.BidModifierSimulationPointList;

                        /**
                         * Encodes the specified BidModifierSimulationPointList message. Does not implicitly {@link google.ads.googleads.v8.common.BidModifierSimulationPointList.verify|verify} messages.
                         * @param m BidModifierSimulationPointList message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IBidModifierSimulationPointList, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BidModifierSimulationPointList message, length delimited. Does not implicitly {@link google.ads.googleads.v8.common.BidModifierSimulationPointList.verify|verify} messages.
                         * @param message BidModifierSimulationPointList message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.common.IBidModifierSimulationPointList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BidModifierSimulationPointList message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns BidModifierSimulationPointList
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.common.BidModifierSimulationPointList;

                        /**
                         * Decodes a BidModifierSimulationPointList message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BidModifierSimulationPointList
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.common.BidModifierSimulationPointList;

                        /**
                         * Verifies a BidModifierSimulationPointList message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BidModifierSimulationPointList message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BidModifierSimulationPointList
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.BidModifierSimulationPointList;

                        /**
                         * Creates a plain object from a BidModifierSimulationPointList message. Also converts values to other types if specified.
                         * @param m BidModifierSimulationPointList
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.BidModifierSimulationPointList, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BidModifierSimulationPointList to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CpcBidSimulationPointList. */
                    interface ICpcBidSimulationPointList {

                        /** CpcBidSimulationPointList points */
                        points?: (google.ads.googleads.v8.common.ICpcBidSimulationPoint[]|null);
                    }

                    /** Represents a CpcBidSimulationPointList. */
                    class CpcBidSimulationPointList implements ICpcBidSimulationPointList {

                        /**
                         * Constructs a new CpcBidSimulationPointList.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ICpcBidSimulationPointList);

                        /** CpcBidSimulationPointList points. */
                        public points: google.ads.googleads.v8.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.v8.common.ICpcBidSimulationPointList): google.ads.googleads.v8.common.CpcBidSimulationPointList;

                        /**
                         * Encodes the specified CpcBidSimulationPointList message. Does not implicitly {@link google.ads.googleads.v8.common.CpcBidSimulationPointList.verify|verify} messages.
                         * @param m CpcBidSimulationPointList message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ICpcBidSimulationPointList, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CpcBidSimulationPointList message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ICpcBidSimulationPointList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CpcBidSimulationPointList message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.CpcBidSimulationPointList;

                        /**
                         * Verifies a CpcBidSimulationPointList message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CpcBidSimulationPointList message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CpcBidSimulationPointList
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.CpcBidSimulationPointList;

                        /**
                         * Creates a plain object from a CpcBidSimulationPointList message. Also converts values to other types if specified.
                         * @param m CpcBidSimulationPointList
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.CpcBidSimulationPointList, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CpcBidSimulationPointList to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CpvBidSimulationPointList. */
                    interface ICpvBidSimulationPointList {

                        /** CpvBidSimulationPointList points */
                        points?: (google.ads.googleads.v8.common.ICpvBidSimulationPoint[]|null);
                    }

                    /** Represents a CpvBidSimulationPointList. */
                    class CpvBidSimulationPointList implements ICpvBidSimulationPointList {

                        /**
                         * Constructs a new CpvBidSimulationPointList.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ICpvBidSimulationPointList);

                        /** CpvBidSimulationPointList points. */
                        public points: google.ads.googleads.v8.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.v8.common.ICpvBidSimulationPointList): google.ads.googleads.v8.common.CpvBidSimulationPointList;

                        /**
                         * Encodes the specified CpvBidSimulationPointList message. Does not implicitly {@link google.ads.googleads.v8.common.CpvBidSimulationPointList.verify|verify} messages.
                         * @param m CpvBidSimulationPointList message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ICpvBidSimulationPointList, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CpvBidSimulationPointList message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ICpvBidSimulationPointList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CpvBidSimulationPointList message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.CpvBidSimulationPointList;

                        /**
                         * Verifies a CpvBidSimulationPointList message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CpvBidSimulationPointList message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CpvBidSimulationPointList
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.CpvBidSimulationPointList;

                        /**
                         * Creates a plain object from a CpvBidSimulationPointList message. Also converts values to other types if specified.
                         * @param m CpvBidSimulationPointList
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.CpvBidSimulationPointList, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CpvBidSimulationPointList to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a TargetCpaSimulationPointList. */
                    interface ITargetCpaSimulationPointList {

                        /** TargetCpaSimulationPointList points */
                        points?: (google.ads.googleads.v8.common.ITargetCpaSimulationPoint[]|null);
                    }

                    /** Represents a TargetCpaSimulationPointList. */
                    class TargetCpaSimulationPointList implements ITargetCpaSimulationPointList {

                        /**
                         * Constructs a new TargetCpaSimulationPointList.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ITargetCpaSimulationPointList);

                        /** TargetCpaSimulationPointList points. */
                        public points: google.ads.googleads.v8.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.v8.common.ITargetCpaSimulationPointList): google.ads.googleads.v8.common.TargetCpaSimulationPointList;

                        /**
                         * Encodes the specified TargetCpaSimulationPointList message. Does not implicitly {@link google.ads.googleads.v8.common.TargetCpaSimulationPointList.verify|verify} messages.
                         * @param m TargetCpaSimulationPointList message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ITargetCpaSimulationPointList, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetCpaSimulationPointList message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ITargetCpaSimulationPointList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetCpaSimulationPointList message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.TargetCpaSimulationPointList;

                        /**
                         * Verifies a TargetCpaSimulationPointList message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetCpaSimulationPointList message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TargetCpaSimulationPointList
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.TargetCpaSimulationPointList;

                        /**
                         * Creates a plain object from a TargetCpaSimulationPointList message. Also converts values to other types if specified.
                         * @param m TargetCpaSimulationPointList
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.TargetCpaSimulationPointList, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetCpaSimulationPointList to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a TargetRoasSimulationPointList. */
                    interface ITargetRoasSimulationPointList {

                        /** TargetRoasSimulationPointList points */
                        points?: (google.ads.googleads.v8.common.ITargetRoasSimulationPoint[]|null);
                    }

                    /** Represents a TargetRoasSimulationPointList. */
                    class TargetRoasSimulationPointList implements ITargetRoasSimulationPointList {

                        /**
                         * Constructs a new TargetRoasSimulationPointList.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ITargetRoasSimulationPointList);

                        /** TargetRoasSimulationPointList points. */
                        public points: google.ads.googleads.v8.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.v8.common.ITargetRoasSimulationPointList): google.ads.googleads.v8.common.TargetRoasSimulationPointList;

                        /**
                         * Encodes the specified TargetRoasSimulationPointList message. Does not implicitly {@link google.ads.googleads.v8.common.TargetRoasSimulationPointList.verify|verify} messages.
                         * @param m TargetRoasSimulationPointList message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ITargetRoasSimulationPointList, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetRoasSimulationPointList message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ITargetRoasSimulationPointList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetRoasSimulationPointList message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.TargetRoasSimulationPointList;

                        /**
                         * Verifies a TargetRoasSimulationPointList message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetRoasSimulationPointList message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TargetRoasSimulationPointList
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.TargetRoasSimulationPointList;

                        /**
                         * Creates a plain object from a TargetRoasSimulationPointList message. Also converts values to other types if specified.
                         * @param m TargetRoasSimulationPointList
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.TargetRoasSimulationPointList, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetRoasSimulationPointList to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a PercentCpcBidSimulationPointList. */
                    interface IPercentCpcBidSimulationPointList {

                        /** PercentCpcBidSimulationPointList points */
                        points?: (google.ads.googleads.v8.common.IPercentCpcBidSimulationPoint[]|null);
                    }

                    /** Represents a PercentCpcBidSimulationPointList. */
                    class PercentCpcBidSimulationPointList implements IPercentCpcBidSimulationPointList {

                        /**
                         * Constructs a new PercentCpcBidSimulationPointList.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IPercentCpcBidSimulationPointList);

                        /** PercentCpcBidSimulationPointList points. */
                        public points: google.ads.googleads.v8.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.v8.common.IPercentCpcBidSimulationPointList): google.ads.googleads.v8.common.PercentCpcBidSimulationPointList;

                        /**
                         * Encodes the specified PercentCpcBidSimulationPointList message. Does not implicitly {@link google.ads.googleads.v8.common.PercentCpcBidSimulationPointList.verify|verify} messages.
                         * @param m PercentCpcBidSimulationPointList message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IPercentCpcBidSimulationPointList, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PercentCpcBidSimulationPointList message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IPercentCpcBidSimulationPointList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PercentCpcBidSimulationPointList message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.PercentCpcBidSimulationPointList;

                        /**
                         * Verifies a PercentCpcBidSimulationPointList message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PercentCpcBidSimulationPointList message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PercentCpcBidSimulationPointList
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.PercentCpcBidSimulationPointList;

                        /**
                         * Creates a plain object from a PercentCpcBidSimulationPointList message. Also converts values to other types if specified.
                         * @param m PercentCpcBidSimulationPointList
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.PercentCpcBidSimulationPointList, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PercentCpcBidSimulationPointList to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a BudgetSimulationPointList. */
                    interface IBudgetSimulationPointList {

                        /** BudgetSimulationPointList points */
                        points?: (google.ads.googleads.v8.common.IBudgetSimulationPoint[]|null);
                    }

                    /** Represents a BudgetSimulationPointList. */
                    class BudgetSimulationPointList implements IBudgetSimulationPointList {

                        /**
                         * Constructs a new BudgetSimulationPointList.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IBudgetSimulationPointList);

                        /** BudgetSimulationPointList points. */
                        public points: google.ads.googleads.v8.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.v8.common.IBudgetSimulationPointList): google.ads.googleads.v8.common.BudgetSimulationPointList;

                        /**
                         * Encodes the specified BudgetSimulationPointList message. Does not implicitly {@link google.ads.googleads.v8.common.BudgetSimulationPointList.verify|verify} messages.
                         * @param m BudgetSimulationPointList message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IBudgetSimulationPointList, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BudgetSimulationPointList message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IBudgetSimulationPointList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BudgetSimulationPointList message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.BudgetSimulationPointList;

                        /**
                         * Verifies a BudgetSimulationPointList message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BudgetSimulationPointList message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BudgetSimulationPointList
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.BudgetSimulationPointList;

                        /**
                         * Creates a plain object from a BudgetSimulationPointList message. Also converts values to other types if specified.
                         * @param m BudgetSimulationPointList
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.BudgetSimulationPointList, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BudgetSimulationPointList to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a TargetImpressionShareSimulationPointList. */
                    interface ITargetImpressionShareSimulationPointList {

                        /** TargetImpressionShareSimulationPointList points */
                        points?: (google.ads.googleads.v8.common.ITargetImpressionShareSimulationPoint[]|null);
                    }

                    /** Represents a TargetImpressionShareSimulationPointList. */
                    class TargetImpressionShareSimulationPointList implements ITargetImpressionShareSimulationPointList {

                        /**
                         * Constructs a new TargetImpressionShareSimulationPointList.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ITargetImpressionShareSimulationPointList);

                        /** TargetImpressionShareSimulationPointList points. */
                        public points: google.ads.googleads.v8.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.v8.common.ITargetImpressionShareSimulationPointList): google.ads.googleads.v8.common.TargetImpressionShareSimulationPointList;

                        /**
                         * Encodes the specified TargetImpressionShareSimulationPointList message. Does not implicitly {@link google.ads.googleads.v8.common.TargetImpressionShareSimulationPointList.verify|verify} messages.
                         * @param m TargetImpressionShareSimulationPointList message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ITargetImpressionShareSimulationPointList, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetImpressionShareSimulationPointList message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ITargetImpressionShareSimulationPointList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetImpressionShareSimulationPointList message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.TargetImpressionShareSimulationPointList;

                        /**
                         * Verifies a TargetImpressionShareSimulationPointList message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetImpressionShareSimulationPointList message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TargetImpressionShareSimulationPointList
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.TargetImpressionShareSimulationPointList;

                        /**
                         * Creates a plain object from a TargetImpressionShareSimulationPointList message. Also converts values to other types if specified.
                         * @param m TargetImpressionShareSimulationPointList
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.TargetImpressionShareSimulationPointList, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetImpressionShareSimulationPointList to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a BidModifierSimulationPoint. */
                    interface IBidModifierSimulationPoint {

                        /** BidModifierSimulationPoint bid_modifier */
                        bid_modifier?: (number|null);

                        /** BidModifierSimulationPoint biddable_conversions */
                        biddable_conversions?: (number|null);

                        /** BidModifierSimulationPoint biddable_conversions_value */
                        biddable_conversions_value?: (number|null);

                        /** BidModifierSimulationPoint clicks */
                        clicks?: (number|null);

                        /** BidModifierSimulationPoint cost_micros */
                        cost_micros?: (number|null);

                        /** BidModifierSimulationPoint impressions */
                        impressions?: (number|null);

                        /** BidModifierSimulationPoint top_slot_impressions */
                        top_slot_impressions?: (number|null);

                        /** BidModifierSimulationPoint parent_biddable_conversions */
                        parent_biddable_conversions?: (number|null);

                        /** BidModifierSimulationPoint parent_biddable_conversions_value */
                        parent_biddable_conversions_value?: (number|null);

                        /** BidModifierSimulationPoint parent_clicks */
                        parent_clicks?: (number|null);

                        /** BidModifierSimulationPoint parent_cost_micros */
                        parent_cost_micros?: (number|null);

                        /** BidModifierSimulationPoint parent_impressions */
                        parent_impressions?: (number|null);

                        /** BidModifierSimulationPoint parent_top_slot_impressions */
                        parent_top_slot_impressions?: (number|null);

                        /** BidModifierSimulationPoint parent_required_budget_micros */
                        parent_required_budget_micros?: (number|null);
                    }

                    /** Represents a BidModifierSimulationPoint. */
                    class BidModifierSimulationPoint implements IBidModifierSimulationPoint {

                        /**
                         * Constructs a new BidModifierSimulationPoint.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IBidModifierSimulationPoint);

                        /** BidModifierSimulationPoint bid_modifier. */
                        public bid_modifier?: (number|null);

                        /** BidModifierSimulationPoint biddable_conversions. */
                        public biddable_conversions?: (number|null);

                        /** BidModifierSimulationPoint biddable_conversions_value. */
                        public biddable_conversions_value?: (number|null);

                        /** BidModifierSimulationPoint clicks. */
                        public clicks?: (number|null);

                        /** BidModifierSimulationPoint cost_micros. */
                        public cost_micros?: (number|null);

                        /** BidModifierSimulationPoint impressions. */
                        public impressions?: (number|null);

                        /** BidModifierSimulationPoint top_slot_impressions. */
                        public top_slot_impressions?: (number|null);

                        /** BidModifierSimulationPoint parent_biddable_conversions. */
                        public parent_biddable_conversions?: (number|null);

                        /** BidModifierSimulationPoint parent_biddable_conversions_value. */
                        public parent_biddable_conversions_value?: (number|null);

                        /** BidModifierSimulationPoint parent_clicks. */
                        public parent_clicks?: (number|null);

                        /** BidModifierSimulationPoint parent_cost_micros. */
                        public parent_cost_micros?: (number|null);

                        /** BidModifierSimulationPoint parent_impressions. */
                        public parent_impressions?: (number|null);

                        /** BidModifierSimulationPoint parent_top_slot_impressions. */
                        public parent_top_slot_impressions?: (number|null);

                        /** BidModifierSimulationPoint parent_required_budget_micros. */
                        public parent_required_budget_micros?: (number|null);

                        /** BidModifierSimulationPoint _bid_modifier. */
                        public _bid_modifier?: "bid_modifier";

                        /** BidModifierSimulationPoint _biddable_conversions. */
                        public _biddable_conversions?: "biddable_conversions";

                        /** BidModifierSimulationPoint _biddable_conversions_value. */
                        public _biddable_conversions_value?: "biddable_conversions_value";

                        /** BidModifierSimulationPoint _clicks. */
                        public _clicks?: "clicks";

                        /** BidModifierSimulationPoint _cost_micros. */
                        public _cost_micros?: "cost_micros";

                        /** BidModifierSimulationPoint _impressions. */
                        public _impressions?: "impressions";

                        /** BidModifierSimulationPoint _top_slot_impressions. */
                        public _top_slot_impressions?: "top_slot_impressions";

                        /** BidModifierSimulationPoint _parent_biddable_conversions. */
                        public _parent_biddable_conversions?: "parent_biddable_conversions";

                        /** BidModifierSimulationPoint _parent_biddable_conversions_value. */
                        public _parent_biddable_conversions_value?: "parent_biddable_conversions_value";

                        /** BidModifierSimulationPoint _parent_clicks. */
                        public _parent_clicks?: "parent_clicks";

                        /** BidModifierSimulationPoint _parent_cost_micros. */
                        public _parent_cost_micros?: "parent_cost_micros";

                        /** BidModifierSimulationPoint _parent_impressions. */
                        public _parent_impressions?: "parent_impressions";

                        /** BidModifierSimulationPoint _parent_top_slot_impressions. */
                        public _parent_top_slot_impressions?: "parent_top_slot_impressions";

                        /** BidModifierSimulationPoint _parent_required_budget_micros. */
                        public _parent_required_budget_micros?: "parent_required_budget_micros";

                        /**
                         * Creates a new BidModifierSimulationPoint instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BidModifierSimulationPoint instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IBidModifierSimulationPoint): google.ads.googleads.v8.common.BidModifierSimulationPoint;

                        /**
                         * Encodes the specified BidModifierSimulationPoint message. Does not implicitly {@link google.ads.googleads.v8.common.BidModifierSimulationPoint.verify|verify} messages.
                         * @param m BidModifierSimulationPoint message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IBidModifierSimulationPoint, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BidModifierSimulationPoint message, length delimited. Does not implicitly {@link google.ads.googleads.v8.common.BidModifierSimulationPoint.verify|verify} messages.
                         * @param message BidModifierSimulationPoint message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.common.IBidModifierSimulationPoint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BidModifierSimulationPoint message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns BidModifierSimulationPoint
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.common.BidModifierSimulationPoint;

                        /**
                         * Decodes a BidModifierSimulationPoint message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BidModifierSimulationPoint
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.common.BidModifierSimulationPoint;

                        /**
                         * Verifies a BidModifierSimulationPoint message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BidModifierSimulationPoint message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BidModifierSimulationPoint
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.BidModifierSimulationPoint;

                        /**
                         * Creates a plain object from a BidModifierSimulationPoint message. Also converts values to other types if specified.
                         * @param m BidModifierSimulationPoint
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.BidModifierSimulationPoint, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BidModifierSimulationPoint to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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 _biddable_conversions. */
                        public _biddable_conversions?: "biddable_conversions";

                        /** CpcBidSimulationPoint _biddable_conversions_value. */
                        public _biddable_conversions_value?: "biddable_conversions_value";

                        /** CpcBidSimulationPoint _clicks. */
                        public _clicks?: "clicks";

                        /** CpcBidSimulationPoint _cost_micros. */
                        public _cost_micros?: "cost_micros";

                        /** CpcBidSimulationPoint _impressions. */
                        public _impressions?: "impressions";

                        /** CpcBidSimulationPoint _top_slot_impressions. */
                        public _top_slot_impressions?: "top_slot_impressions";

                        /** 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.v8.common.ICpcBidSimulationPoint): google.ads.googleads.v8.common.CpcBidSimulationPoint;

                        /**
                         * Encodes the specified CpcBidSimulationPoint message. Does not implicitly {@link google.ads.googleads.v8.common.CpcBidSimulationPoint.verify|verify} messages.
                         * @param m CpcBidSimulationPoint message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ICpcBidSimulationPoint, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CpcBidSimulationPoint message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ICpcBidSimulationPoint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CpcBidSimulationPoint message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.CpcBidSimulationPoint;

                        /**
                         * Verifies a CpcBidSimulationPoint message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CpcBidSimulationPoint message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CpcBidSimulationPoint
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.CpcBidSimulationPoint;

                        /**
                         * Creates a plain object from a CpcBidSimulationPoint message. Also converts values to other types if specified.
                         * @param m CpcBidSimulationPoint
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.CpcBidSimulationPoint, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CpcBidSimulationPoint to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** CpvBidSimulationPoint _cpv_bid_micros. */
                        public _cpv_bid_micros?: "cpv_bid_micros";

                        /** CpvBidSimulationPoint _cost_micros. */
                        public _cost_micros?: "cost_micros";

                        /** CpvBidSimulationPoint _impressions. */
                        public _impressions?: "impressions";

                        /** CpvBidSimulationPoint _views. */
                        public _views?: "views";

                        /**
                         * Creates a new CpvBidSimulationPoint instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CpvBidSimulationPoint instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ICpvBidSimulationPoint): google.ads.googleads.v8.common.CpvBidSimulationPoint;

                        /**
                         * Encodes the specified CpvBidSimulationPoint message. Does not implicitly {@link google.ads.googleads.v8.common.CpvBidSimulationPoint.verify|verify} messages.
                         * @param m CpvBidSimulationPoint message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ICpvBidSimulationPoint, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CpvBidSimulationPoint message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ICpvBidSimulationPoint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CpvBidSimulationPoint message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.CpvBidSimulationPoint;

                        /**
                         * Verifies a CpvBidSimulationPoint message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CpvBidSimulationPoint message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CpvBidSimulationPoint
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.CpvBidSimulationPoint;

                        /**
                         * Creates a plain object from a CpvBidSimulationPoint message. Also converts values to other types if specified.
                         * @param m CpvBidSimulationPoint
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.CpvBidSimulationPoint, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CpvBidSimulationPoint to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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 target_cpa_micros. */
                        public target_cpa_micros?: (number|null);

                        /** TargetCpaSimulationPoint target_cpa_scaling_modifier. */
                        public target_cpa_scaling_modifier?: (number|null);

                        /** TargetCpaSimulationPoint _biddable_conversions. */
                        public _biddable_conversions?: "biddable_conversions";

                        /** TargetCpaSimulationPoint _biddable_conversions_value. */
                        public _biddable_conversions_value?: "biddable_conversions_value";

                        /** TargetCpaSimulationPoint _clicks. */
                        public _clicks?: "clicks";

                        /** TargetCpaSimulationPoint _cost_micros. */
                        public _cost_micros?: "cost_micros";

                        /** TargetCpaSimulationPoint _impressions. */
                        public _impressions?: "impressions";

                        /** TargetCpaSimulationPoint _top_slot_impressions. */
                        public _top_slot_impressions?: "top_slot_impressions";

                        /** 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.v8.common.ITargetCpaSimulationPoint): google.ads.googleads.v8.common.TargetCpaSimulationPoint;

                        /**
                         * Encodes the specified TargetCpaSimulationPoint message. Does not implicitly {@link google.ads.googleads.v8.common.TargetCpaSimulationPoint.verify|verify} messages.
                         * @param m TargetCpaSimulationPoint message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ITargetCpaSimulationPoint, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetCpaSimulationPoint message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ITargetCpaSimulationPoint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetCpaSimulationPoint message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.TargetCpaSimulationPoint;

                        /**
                         * Verifies a TargetCpaSimulationPoint message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetCpaSimulationPoint message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TargetCpaSimulationPoint
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.TargetCpaSimulationPoint;

                        /**
                         * Creates a plain object from a TargetCpaSimulationPoint message. Also converts values to other types if specified.
                         * @param m TargetCpaSimulationPoint
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.TargetCpaSimulationPoint, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetCpaSimulationPoint to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** TargetRoasSimulationPoint _target_roas. */
                        public _target_roas?: "target_roas";

                        /** TargetRoasSimulationPoint _biddable_conversions. */
                        public _biddable_conversions?: "biddable_conversions";

                        /** TargetRoasSimulationPoint _biddable_conversions_value. */
                        public _biddable_conversions_value?: "biddable_conversions_value";

                        /** TargetRoasSimulationPoint _clicks. */
                        public _clicks?: "clicks";

                        /** TargetRoasSimulationPoint _cost_micros. */
                        public _cost_micros?: "cost_micros";

                        /** TargetRoasSimulationPoint _impressions. */
                        public _impressions?: "impressions";

                        /** TargetRoasSimulationPoint _top_slot_impressions. */
                        public _top_slot_impressions?: "top_slot_impressions";

                        /**
                         * Creates a new TargetRoasSimulationPoint instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetRoasSimulationPoint instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ITargetRoasSimulationPoint): google.ads.googleads.v8.common.TargetRoasSimulationPoint;

                        /**
                         * Encodes the specified TargetRoasSimulationPoint message. Does not implicitly {@link google.ads.googleads.v8.common.TargetRoasSimulationPoint.verify|verify} messages.
                         * @param m TargetRoasSimulationPoint message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ITargetRoasSimulationPoint, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetRoasSimulationPoint message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ITargetRoasSimulationPoint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetRoasSimulationPoint message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.TargetRoasSimulationPoint;

                        /**
                         * Verifies a TargetRoasSimulationPoint message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetRoasSimulationPoint message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TargetRoasSimulationPoint
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.TargetRoasSimulationPoint;

                        /**
                         * Creates a plain object from a TargetRoasSimulationPoint message. Also converts values to other types if specified.
                         * @param m TargetRoasSimulationPoint
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.TargetRoasSimulationPoint, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetRoasSimulationPoint to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** PercentCpcBidSimulationPoint _percent_cpc_bid_micros. */
                        public _percent_cpc_bid_micros?: "percent_cpc_bid_micros";

                        /** PercentCpcBidSimulationPoint _biddable_conversions. */
                        public _biddable_conversions?: "biddable_conversions";

                        /** PercentCpcBidSimulationPoint _biddable_conversions_value. */
                        public _biddable_conversions_value?: "biddable_conversions_value";

                        /** PercentCpcBidSimulationPoint _clicks. */
                        public _clicks?: "clicks";

                        /** PercentCpcBidSimulationPoint _cost_micros. */
                        public _cost_micros?: "cost_micros";

                        /** PercentCpcBidSimulationPoint _impressions. */
                        public _impressions?: "impressions";

                        /** PercentCpcBidSimulationPoint _top_slot_impressions. */
                        public _top_slot_impressions?: "top_slot_impressions";

                        /**
                         * Creates a new PercentCpcBidSimulationPoint instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PercentCpcBidSimulationPoint instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IPercentCpcBidSimulationPoint): google.ads.googleads.v8.common.PercentCpcBidSimulationPoint;

                        /**
                         * Encodes the specified PercentCpcBidSimulationPoint message. Does not implicitly {@link google.ads.googleads.v8.common.PercentCpcBidSimulationPoint.verify|verify} messages.
                         * @param m PercentCpcBidSimulationPoint message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IPercentCpcBidSimulationPoint, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PercentCpcBidSimulationPoint message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IPercentCpcBidSimulationPoint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PercentCpcBidSimulationPoint message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.PercentCpcBidSimulationPoint;

                        /**
                         * Verifies a PercentCpcBidSimulationPoint message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PercentCpcBidSimulationPoint message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PercentCpcBidSimulationPoint
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.PercentCpcBidSimulationPoint;

                        /**
                         * Creates a plain object from a PercentCpcBidSimulationPoint message. Also converts values to other types if specified.
                         * @param m PercentCpcBidSimulationPoint
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.PercentCpcBidSimulationPoint, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PercentCpcBidSimulationPoint to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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);
                    }

                    /** Represents a BudgetSimulationPoint. */
                    class BudgetSimulationPoint implements IBudgetSimulationPoint {

                        /**
                         * Constructs a new BudgetSimulationPoint.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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;

                        /**
                         * Creates a new BudgetSimulationPoint instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BudgetSimulationPoint instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IBudgetSimulationPoint): google.ads.googleads.v8.common.BudgetSimulationPoint;

                        /**
                         * Encodes the specified BudgetSimulationPoint message. Does not implicitly {@link google.ads.googleads.v8.common.BudgetSimulationPoint.verify|verify} messages.
                         * @param m BudgetSimulationPoint message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IBudgetSimulationPoint, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BudgetSimulationPoint message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IBudgetSimulationPoint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BudgetSimulationPoint message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.BudgetSimulationPoint;

                        /**
                         * Verifies a BudgetSimulationPoint message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BudgetSimulationPoint message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BudgetSimulationPoint
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.BudgetSimulationPoint;

                        /**
                         * Creates a plain object from a BudgetSimulationPoint message. Also converts values to other types if specified.
                         * @param m BudgetSimulationPoint
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.BudgetSimulationPoint, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BudgetSimulationPoint to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.ITargetImpressionShareSimulationPoint): google.ads.googleads.v8.common.TargetImpressionShareSimulationPoint;

                        /**
                         * Encodes the specified TargetImpressionShareSimulationPoint message. Does not implicitly {@link google.ads.googleads.v8.common.TargetImpressionShareSimulationPoint.verify|verify} messages.
                         * @param m TargetImpressionShareSimulationPoint message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ITargetImpressionShareSimulationPoint, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetImpressionShareSimulationPoint message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ITargetImpressionShareSimulationPoint, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetImpressionShareSimulationPoint message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.TargetImpressionShareSimulationPoint;

                        /**
                         * Verifies a TargetImpressionShareSimulationPoint message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetImpressionShareSimulationPoint message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TargetImpressionShareSimulationPoint
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.TargetImpressionShareSimulationPoint;

                        /**
                         * Creates a plain object from a TargetImpressionShareSimulationPoint message. Also converts values to other types if specified.
                         * @param m TargetImpressionShareSimulationPoint
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.TargetImpressionShareSimulationPoint, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetImpressionShareSimulationPoint to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a TagSnippet. */
                    interface ITagSnippet {

                        /** TagSnippet type */
                        type?: (google.ads.googleads.v8.enums.TrackingCodeTypeEnum.TrackingCodeType|keyof typeof google.ads.googleads.v8.enums.TrackingCodeTypeEnum.TrackingCodeType|null);

                        /** TagSnippet page_format */
                        page_format?: (google.ads.googleads.v8.enums.TrackingCodePageFormatEnum.TrackingCodePageFormat|keyof typeof google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ITagSnippet);

                        /** TagSnippet type. */
                        public type: (google.ads.googleads.v8.enums.TrackingCodeTypeEnum.TrackingCodeType|keyof typeof google.ads.googleads.v8.enums.TrackingCodeTypeEnum.TrackingCodeType);

                        /** TagSnippet page_format. */
                        public page_format: (google.ads.googleads.v8.enums.TrackingCodePageFormatEnum.TrackingCodePageFormat|keyof typeof google.ads.googleads.v8.enums.TrackingCodePageFormatEnum.TrackingCodePageFormat);

                        /** TagSnippet global_site_tag. */
                        public global_site_tag?: (string|null);

                        /** TagSnippet event_snippet. */
                        public event_snippet?: (string|null);

                        /** TagSnippet _global_site_tag. */
                        public _global_site_tag?: "global_site_tag";

                        /** TagSnippet _event_snippet. */
                        public _event_snippet?: "event_snippet";

                        /**
                         * Creates a new TagSnippet instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TagSnippet instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ITagSnippet): google.ads.googleads.v8.common.TagSnippet;

                        /**
                         * Encodes the specified TagSnippet message. Does not implicitly {@link google.ads.googleads.v8.common.TagSnippet.verify|verify} messages.
                         * @param m TagSnippet message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ITagSnippet, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TagSnippet message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ITagSnippet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TagSnippet message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.TagSnippet;

                        /**
                         * Verifies a TagSnippet message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TagSnippet message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TagSnippet
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.TagSnippet;

                        /**
                         * Creates a plain object from a TagSnippet message. Also converts values to other types if specified.
                         * @param m TagSnippet
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.TagSnippet, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TagSnippet to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a TargetingSetting. */
                    interface ITargetingSetting {

                        /** TargetingSetting target_restrictions */
                        target_restrictions?: (google.ads.googleads.v8.common.ITargetRestriction[]|null);

                        /** TargetingSetting target_restriction_operations */
                        target_restriction_operations?: (google.ads.googleads.v8.common.ITargetRestrictionOperation[]|null);
                    }

                    /** Represents a TargetingSetting. */
                    class TargetingSetting implements ITargetingSetting {

                        /**
                         * Constructs a new TargetingSetting.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ITargetingSetting);

                        /** TargetingSetting target_restrictions. */
                        public target_restrictions: google.ads.googleads.v8.common.ITargetRestriction[];

                        /** TargetingSetting target_restriction_operations. */
                        public target_restriction_operations: google.ads.googleads.v8.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.v8.common.ITargetingSetting): google.ads.googleads.v8.common.TargetingSetting;

                        /**
                         * Encodes the specified TargetingSetting message. Does not implicitly {@link google.ads.googleads.v8.common.TargetingSetting.verify|verify} messages.
                         * @param m TargetingSetting message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ITargetingSetting, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetingSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ITargetingSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetingSetting message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.TargetingSetting;

                        /**
                         * Verifies a TargetingSetting message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetingSetting message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TargetingSetting
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.TargetingSetting;

                        /**
                         * Creates a plain object from a TargetingSetting message. Also converts values to other types if specified.
                         * @param m TargetingSetting
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.TargetingSetting, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetingSetting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a TargetRestriction. */
                    interface ITargetRestriction {

                        /** TargetRestriction targeting_dimension */
                        targeting_dimension?: (google.ads.googleads.v8.enums.TargetingDimensionEnum.TargetingDimension|keyof typeof google.ads.googleads.v8.enums.TargetingDimensionEnum.TargetingDimension|null);

                        /** TargetRestriction bid_only */
                        bid_only?: (boolean|null);
                    }

                    /** Represents a TargetRestriction. */
                    class TargetRestriction implements ITargetRestriction {

                        /**
                         * Constructs a new TargetRestriction.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ITargetRestriction);

                        /** TargetRestriction targeting_dimension. */
                        public targeting_dimension: (google.ads.googleads.v8.enums.TargetingDimensionEnum.TargetingDimension|keyof typeof google.ads.googleads.v8.enums.TargetingDimensionEnum.TargetingDimension);

                        /** TargetRestriction bid_only. */
                        public bid_only?: (boolean|null);

                        /** TargetRestriction _bid_only. */
                        public _bid_only?: "bid_only";

                        /**
                         * Creates a new TargetRestriction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TargetRestriction instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ITargetRestriction): google.ads.googleads.v8.common.TargetRestriction;

                        /**
                         * Encodes the specified TargetRestriction message. Does not implicitly {@link google.ads.googleads.v8.common.TargetRestriction.verify|verify} messages.
                         * @param m TargetRestriction message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ITargetRestriction, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetRestriction message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ITargetRestriction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetRestriction message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.TargetRestriction;

                        /**
                         * Verifies a TargetRestriction message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetRestriction message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TargetRestriction
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.TargetRestriction;

                        /**
                         * Creates a plain object from a TargetRestriction message. Also converts values to other types if specified.
                         * @param m TargetRestriction
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.TargetRestriction, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetRestriction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a TargetRestrictionOperation. */
                    interface ITargetRestrictionOperation {

                        /** TargetRestrictionOperation operator */
                        operator?: (google.ads.googleads.v8.common.TargetRestrictionOperation.Operator|keyof typeof google.ads.googleads.v8.common.TargetRestrictionOperation.Operator|null);

                        /** TargetRestrictionOperation value */
                        value?: (google.ads.googleads.v8.common.ITargetRestriction|null);
                    }

                    /** Represents a TargetRestrictionOperation. */
                    class TargetRestrictionOperation implements ITargetRestrictionOperation {

                        /**
                         * Constructs a new TargetRestrictionOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ITargetRestrictionOperation);

                        /** TargetRestrictionOperation operator. */
                        public operator: (google.ads.googleads.v8.common.TargetRestrictionOperation.Operator|keyof typeof google.ads.googleads.v8.common.TargetRestrictionOperation.Operator);

                        /** TargetRestrictionOperation value. */
                        public value?: (google.ads.googleads.v8.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.v8.common.ITargetRestrictionOperation): google.ads.googleads.v8.common.TargetRestrictionOperation;

                        /**
                         * Encodes the specified TargetRestrictionOperation message. Does not implicitly {@link google.ads.googleads.v8.common.TargetRestrictionOperation.verify|verify} messages.
                         * @param m TargetRestrictionOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ITargetRestrictionOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetRestrictionOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ITargetRestrictionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetRestrictionOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.TargetRestrictionOperation;

                        /**
                         * Verifies a TargetRestrictionOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetRestrictionOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TargetRestrictionOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.TargetRestrictionOperation;

                        /**
                         * Creates a plain object from a TargetRestrictionOperation message. Also converts values to other types if specified.
                         * @param m TargetRestrictionOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.TargetRestrictionOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetRestrictionOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ITextLabel);

                        /** TextLabel background_color. */
                        public background_color?: (string|null);

                        /** TextLabel description. */
                        public description?: (string|null);

                        /** TextLabel _background_color. */
                        public _background_color?: "background_color";

                        /** TextLabel _description. */
                        public _description?: "description";

                        /**
                         * Creates a new TextLabel instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TextLabel instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ITextLabel): google.ads.googleads.v8.common.TextLabel;

                        /**
                         * Encodes the specified TextLabel message. Does not implicitly {@link google.ads.googleads.v8.common.TextLabel.verify|verify} messages.
                         * @param m TextLabel message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ITextLabel, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TextLabel message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ITextLabel, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TextLabel message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.TextLabel;

                        /**
                         * Verifies a TextLabel message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TextLabel message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TextLabel
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.TextLabel;

                        /**
                         * Creates a plain object from a TextLabel message. Also converts values to other types if specified.
                         * @param m TextLabel
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.TextLabel, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TextLabel to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** UrlCollection _url_collection_id. */
                        public _url_collection_id?: "url_collection_id";

                        /** UrlCollection _tracking_url_template. */
                        public _tracking_url_template?: "tracking_url_template";

                        /**
                         * Creates a new UrlCollection instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UrlCollection instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IUrlCollection): google.ads.googleads.v8.common.UrlCollection;

                        /**
                         * Encodes the specified UrlCollection message. Does not implicitly {@link google.ads.googleads.v8.common.UrlCollection.verify|verify} messages.
                         * @param m UrlCollection message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IUrlCollection, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UrlCollection message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IUrlCollection, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UrlCollection message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.UrlCollection;

                        /**
                         * Verifies an UrlCollection message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an UrlCollection message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UrlCollection
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.UrlCollection;

                        /**
                         * Creates a plain object from an UrlCollection message. Also converts values to other types if specified.
                         * @param m UrlCollection
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.UrlCollection, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UrlCollection to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ISimilarUserListInfo);

                        /** SimilarUserListInfo seed_user_list. */
                        public seed_user_list?: (string|null);

                        /** SimilarUserListInfo _seed_user_list. */
                        public _seed_user_list?: "seed_user_list";

                        /**
                         * Creates a new SimilarUserListInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SimilarUserListInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ISimilarUserListInfo): google.ads.googleads.v8.common.SimilarUserListInfo;

                        /**
                         * Encodes the specified SimilarUserListInfo message. Does not implicitly {@link google.ads.googleads.v8.common.SimilarUserListInfo.verify|verify} messages.
                         * @param m SimilarUserListInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ISimilarUserListInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SimilarUserListInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ISimilarUserListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SimilarUserListInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.SimilarUserListInfo;

                        /**
                         * Verifies a SimilarUserListInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SimilarUserListInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SimilarUserListInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.SimilarUserListInfo;

                        /**
                         * Creates a plain object from a SimilarUserListInfo message. Also converts values to other types if specified.
                         * @param m SimilarUserListInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.SimilarUserListInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SimilarUserListInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CrmBasedUserListInfo. */
                    interface ICrmBasedUserListInfo {

                        /** CrmBasedUserListInfo app_id */
                        app_id?: (string|null);

                        /** CrmBasedUserListInfo upload_key_type */
                        upload_key_type?: (google.ads.googleads.v8.enums.CustomerMatchUploadKeyTypeEnum.CustomerMatchUploadKeyType|keyof typeof google.ads.googleads.v8.enums.CustomerMatchUploadKeyTypeEnum.CustomerMatchUploadKeyType|null);

                        /** CrmBasedUserListInfo data_source_type */
                        data_source_type?: (google.ads.googleads.v8.enums.UserListCrmDataSourceTypeEnum.UserListCrmDataSourceType|keyof typeof google.ads.googleads.v8.enums.UserListCrmDataSourceTypeEnum.UserListCrmDataSourceType|null);
                    }

                    /** Represents a CrmBasedUserListInfo. */
                    class CrmBasedUserListInfo implements ICrmBasedUserListInfo {

                        /**
                         * Constructs a new CrmBasedUserListInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ICrmBasedUserListInfo);

                        /** CrmBasedUserListInfo app_id. */
                        public app_id?: (string|null);

                        /** CrmBasedUserListInfo upload_key_type. */
                        public upload_key_type: (google.ads.googleads.v8.enums.CustomerMatchUploadKeyTypeEnum.CustomerMatchUploadKeyType|keyof typeof google.ads.googleads.v8.enums.CustomerMatchUploadKeyTypeEnum.CustomerMatchUploadKeyType);

                        /** CrmBasedUserListInfo data_source_type. */
                        public data_source_type: (google.ads.googleads.v8.enums.UserListCrmDataSourceTypeEnum.UserListCrmDataSourceType|keyof typeof google.ads.googleads.v8.enums.UserListCrmDataSourceTypeEnum.UserListCrmDataSourceType);

                        /** CrmBasedUserListInfo _app_id. */
                        public _app_id?: "app_id";

                        /**
                         * Creates a new CrmBasedUserListInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CrmBasedUserListInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ICrmBasedUserListInfo): google.ads.googleads.v8.common.CrmBasedUserListInfo;

                        /**
                         * Encodes the specified CrmBasedUserListInfo message. Does not implicitly {@link google.ads.googleads.v8.common.CrmBasedUserListInfo.verify|verify} messages.
                         * @param m CrmBasedUserListInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ICrmBasedUserListInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CrmBasedUserListInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ICrmBasedUserListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CrmBasedUserListInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.CrmBasedUserListInfo;

                        /**
                         * Verifies a CrmBasedUserListInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CrmBasedUserListInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CrmBasedUserListInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.CrmBasedUserListInfo;

                        /**
                         * Creates a plain object from a CrmBasedUserListInfo message. Also converts values to other types if specified.
                         * @param m CrmBasedUserListInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.CrmBasedUserListInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CrmBasedUserListInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a UserListRuleInfo. */
                    interface IUserListRuleInfo {

                        /** UserListRuleInfo rule_type */
                        rule_type?: (google.ads.googleads.v8.enums.UserListRuleTypeEnum.UserListRuleType|keyof typeof google.ads.googleads.v8.enums.UserListRuleTypeEnum.UserListRuleType|null);

                        /** UserListRuleInfo rule_item_groups */
                        rule_item_groups?: (google.ads.googleads.v8.common.IUserListRuleItemGroupInfo[]|null);
                    }

                    /** Represents a UserListRuleInfo. */
                    class UserListRuleInfo implements IUserListRuleInfo {

                        /**
                         * Constructs a new UserListRuleInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IUserListRuleInfo);

                        /** UserListRuleInfo rule_type. */
                        public rule_type: (google.ads.googleads.v8.enums.UserListRuleTypeEnum.UserListRuleType|keyof typeof google.ads.googleads.v8.enums.UserListRuleTypeEnum.UserListRuleType);

                        /** UserListRuleInfo rule_item_groups. */
                        public rule_item_groups: google.ads.googleads.v8.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.v8.common.IUserListRuleInfo): google.ads.googleads.v8.common.UserListRuleInfo;

                        /**
                         * Encodes the specified UserListRuleInfo message. Does not implicitly {@link google.ads.googleads.v8.common.UserListRuleInfo.verify|verify} messages.
                         * @param m UserListRuleInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IUserListRuleInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListRuleInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IUserListRuleInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListRuleInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.UserListRuleInfo;

                        /**
                         * Verifies a UserListRuleInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListRuleInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserListRuleInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.UserListRuleInfo;

                        /**
                         * Creates a plain object from a UserListRuleInfo message. Also converts values to other types if specified.
                         * @param m UserListRuleInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.UserListRuleInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListRuleInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a UserListRuleItemGroupInfo. */
                    interface IUserListRuleItemGroupInfo {

                        /** UserListRuleItemGroupInfo rule_items */
                        rule_items?: (google.ads.googleads.v8.common.IUserListRuleItemInfo[]|null);
                    }

                    /** Represents a UserListRuleItemGroupInfo. */
                    class UserListRuleItemGroupInfo implements IUserListRuleItemGroupInfo {

                        /**
                         * Constructs a new UserListRuleItemGroupInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IUserListRuleItemGroupInfo);

                        /** UserListRuleItemGroupInfo rule_items. */
                        public rule_items: google.ads.googleads.v8.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.v8.common.IUserListRuleItemGroupInfo): google.ads.googleads.v8.common.UserListRuleItemGroupInfo;

                        /**
                         * Encodes the specified UserListRuleItemGroupInfo message. Does not implicitly {@link google.ads.googleads.v8.common.UserListRuleItemGroupInfo.verify|verify} messages.
                         * @param m UserListRuleItemGroupInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IUserListRuleItemGroupInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListRuleItemGroupInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IUserListRuleItemGroupInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListRuleItemGroupInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.UserListRuleItemGroupInfo;

                        /**
                         * Verifies a UserListRuleItemGroupInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListRuleItemGroupInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserListRuleItemGroupInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.UserListRuleItemGroupInfo;

                        /**
                         * Creates a plain object from a UserListRuleItemGroupInfo message. Also converts values to other types if specified.
                         * @param m UserListRuleItemGroupInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.UserListRuleItemGroupInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListRuleItemGroupInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a UserListRuleItemInfo. */
                    interface IUserListRuleItemInfo {

                        /** UserListRuleItemInfo name */
                        name?: (string|null);

                        /** UserListRuleItemInfo number_rule_item */
                        number_rule_item?: (google.ads.googleads.v8.common.IUserListNumberRuleItemInfo|null);

                        /** UserListRuleItemInfo string_rule_item */
                        string_rule_item?: (google.ads.googleads.v8.common.IUserListStringRuleItemInfo|null);

                        /** UserListRuleItemInfo date_rule_item */
                        date_rule_item?: (google.ads.googleads.v8.common.IUserListDateRuleItemInfo|null);
                    }

                    /** Represents a UserListRuleItemInfo. */
                    class UserListRuleItemInfo implements IUserListRuleItemInfo {

                        /**
                         * Constructs a new UserListRuleItemInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IUserListRuleItemInfo);

                        /** UserListRuleItemInfo name. */
                        public name?: (string|null);

                        /** UserListRuleItemInfo number_rule_item. */
                        public number_rule_item?: (google.ads.googleads.v8.common.IUserListNumberRuleItemInfo|null);

                        /** UserListRuleItemInfo string_rule_item. */
                        public string_rule_item?: (google.ads.googleads.v8.common.IUserListStringRuleItemInfo|null);

                        /** UserListRuleItemInfo date_rule_item. */
                        public date_rule_item?: (google.ads.googleads.v8.common.IUserListDateRuleItemInfo|null);

                        /** UserListRuleItemInfo _name. */
                        public _name?: "name";

                        /** 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.v8.common.IUserListRuleItemInfo): google.ads.googleads.v8.common.UserListRuleItemInfo;

                        /**
                         * Encodes the specified UserListRuleItemInfo message. Does not implicitly {@link google.ads.googleads.v8.common.UserListRuleItemInfo.verify|verify} messages.
                         * @param m UserListRuleItemInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IUserListRuleItemInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListRuleItemInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IUserListRuleItemInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListRuleItemInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.UserListRuleItemInfo;

                        /**
                         * Verifies a UserListRuleItemInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListRuleItemInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserListRuleItemInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.UserListRuleItemInfo;

                        /**
                         * Creates a plain object from a UserListRuleItemInfo message. Also converts values to other types if specified.
                         * @param m UserListRuleItemInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.UserListRuleItemInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListRuleItemInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a UserListDateRuleItemInfo. */
                    interface IUserListDateRuleItemInfo {

                        /** UserListDateRuleItemInfo operator */
                        operator?: (google.ads.googleads.v8.enums.UserListDateRuleItemOperatorEnum.UserListDateRuleItemOperator|keyof typeof google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IUserListDateRuleItemInfo);

                        /** UserListDateRuleItemInfo operator. */
                        public operator: (google.ads.googleads.v8.enums.UserListDateRuleItemOperatorEnum.UserListDateRuleItemOperator|keyof typeof google.ads.googleads.v8.enums.UserListDateRuleItemOperatorEnum.UserListDateRuleItemOperator);

                        /** UserListDateRuleItemInfo value. */
                        public value?: (string|null);

                        /** UserListDateRuleItemInfo offset_in_days. */
                        public offset_in_days?: (number|null);

                        /** UserListDateRuleItemInfo _value. */
                        public _value?: "value";

                        /** UserListDateRuleItemInfo _offset_in_days. */
                        public _offset_in_days?: "offset_in_days";

                        /**
                         * Creates a new UserListDateRuleItemInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListDateRuleItemInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IUserListDateRuleItemInfo): google.ads.googleads.v8.common.UserListDateRuleItemInfo;

                        /**
                         * Encodes the specified UserListDateRuleItemInfo message. Does not implicitly {@link google.ads.googleads.v8.common.UserListDateRuleItemInfo.verify|verify} messages.
                         * @param m UserListDateRuleItemInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IUserListDateRuleItemInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListDateRuleItemInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IUserListDateRuleItemInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListDateRuleItemInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.UserListDateRuleItemInfo;

                        /**
                         * Verifies a UserListDateRuleItemInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListDateRuleItemInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserListDateRuleItemInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.UserListDateRuleItemInfo;

                        /**
                         * Creates a plain object from a UserListDateRuleItemInfo message. Also converts values to other types if specified.
                         * @param m UserListDateRuleItemInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.UserListDateRuleItemInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListDateRuleItemInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a UserListNumberRuleItemInfo. */
                    interface IUserListNumberRuleItemInfo {

                        /** UserListNumberRuleItemInfo operator */
                        operator?: (google.ads.googleads.v8.enums.UserListNumberRuleItemOperatorEnum.UserListNumberRuleItemOperator|keyof typeof google.ads.googleads.v8.enums.UserListNumberRuleItemOperatorEnum.UserListNumberRuleItemOperator|null);

                        /** UserListNumberRuleItemInfo value */
                        value?: (number|null);
                    }

                    /** Represents a UserListNumberRuleItemInfo. */
                    class UserListNumberRuleItemInfo implements IUserListNumberRuleItemInfo {

                        /**
                         * Constructs a new UserListNumberRuleItemInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IUserListNumberRuleItemInfo);

                        /** UserListNumberRuleItemInfo operator. */
                        public operator: (google.ads.googleads.v8.enums.UserListNumberRuleItemOperatorEnum.UserListNumberRuleItemOperator|keyof typeof google.ads.googleads.v8.enums.UserListNumberRuleItemOperatorEnum.UserListNumberRuleItemOperator);

                        /** UserListNumberRuleItemInfo value. */
                        public value?: (number|null);

                        /** UserListNumberRuleItemInfo _value. */
                        public _value?: "value";

                        /**
                         * Creates a new UserListNumberRuleItemInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListNumberRuleItemInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IUserListNumberRuleItemInfo): google.ads.googleads.v8.common.UserListNumberRuleItemInfo;

                        /**
                         * Encodes the specified UserListNumberRuleItemInfo message. Does not implicitly {@link google.ads.googleads.v8.common.UserListNumberRuleItemInfo.verify|verify} messages.
                         * @param m UserListNumberRuleItemInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IUserListNumberRuleItemInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListNumberRuleItemInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IUserListNumberRuleItemInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListNumberRuleItemInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.UserListNumberRuleItemInfo;

                        /**
                         * Verifies a UserListNumberRuleItemInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListNumberRuleItemInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserListNumberRuleItemInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.UserListNumberRuleItemInfo;

                        /**
                         * Creates a plain object from a UserListNumberRuleItemInfo message. Also converts values to other types if specified.
                         * @param m UserListNumberRuleItemInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.UserListNumberRuleItemInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListNumberRuleItemInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a UserListStringRuleItemInfo. */
                    interface IUserListStringRuleItemInfo {

                        /** UserListStringRuleItemInfo operator */
                        operator?: (google.ads.googleads.v8.enums.UserListStringRuleItemOperatorEnum.UserListStringRuleItemOperator|keyof typeof google.ads.googleads.v8.enums.UserListStringRuleItemOperatorEnum.UserListStringRuleItemOperator|null);

                        /** UserListStringRuleItemInfo value */
                        value?: (string|null);
                    }

                    /** Represents a UserListStringRuleItemInfo. */
                    class UserListStringRuleItemInfo implements IUserListStringRuleItemInfo {

                        /**
                         * Constructs a new UserListStringRuleItemInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IUserListStringRuleItemInfo);

                        /** UserListStringRuleItemInfo operator. */
                        public operator: (google.ads.googleads.v8.enums.UserListStringRuleItemOperatorEnum.UserListStringRuleItemOperator|keyof typeof google.ads.googleads.v8.enums.UserListStringRuleItemOperatorEnum.UserListStringRuleItemOperator);

                        /** UserListStringRuleItemInfo value. */
                        public value?: (string|null);

                        /** UserListStringRuleItemInfo _value. */
                        public _value?: "value";

                        /**
                         * Creates a new UserListStringRuleItemInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListStringRuleItemInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IUserListStringRuleItemInfo): google.ads.googleads.v8.common.UserListStringRuleItemInfo;

                        /**
                         * Encodes the specified UserListStringRuleItemInfo message. Does not implicitly {@link google.ads.googleads.v8.common.UserListStringRuleItemInfo.verify|verify} messages.
                         * @param m UserListStringRuleItemInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IUserListStringRuleItemInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListStringRuleItemInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IUserListStringRuleItemInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListStringRuleItemInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.UserListStringRuleItemInfo;

                        /**
                         * Verifies a UserListStringRuleItemInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListStringRuleItemInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserListStringRuleItemInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.UserListStringRuleItemInfo;

                        /**
                         * Creates a plain object from a UserListStringRuleItemInfo message. Also converts values to other types if specified.
                         * @param m UserListStringRuleItemInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.UserListStringRuleItemInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListStringRuleItemInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CombinedRuleUserListInfo. */
                    interface ICombinedRuleUserListInfo {

                        /** CombinedRuleUserListInfo left_operand */
                        left_operand?: (google.ads.googleads.v8.common.IUserListRuleInfo|null);

                        /** CombinedRuleUserListInfo right_operand */
                        right_operand?: (google.ads.googleads.v8.common.IUserListRuleInfo|null);

                        /** CombinedRuleUserListInfo rule_operator */
                        rule_operator?: (google.ads.googleads.v8.enums.UserListCombinedRuleOperatorEnum.UserListCombinedRuleOperator|keyof typeof google.ads.googleads.v8.enums.UserListCombinedRuleOperatorEnum.UserListCombinedRuleOperator|null);
                    }

                    /** Represents a CombinedRuleUserListInfo. */
                    class CombinedRuleUserListInfo implements ICombinedRuleUserListInfo {

                        /**
                         * Constructs a new CombinedRuleUserListInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ICombinedRuleUserListInfo);

                        /** CombinedRuleUserListInfo left_operand. */
                        public left_operand?: (google.ads.googleads.v8.common.IUserListRuleInfo|null);

                        /** CombinedRuleUserListInfo right_operand. */
                        public right_operand?: (google.ads.googleads.v8.common.IUserListRuleInfo|null);

                        /** CombinedRuleUserListInfo rule_operator. */
                        public rule_operator: (google.ads.googleads.v8.enums.UserListCombinedRuleOperatorEnum.UserListCombinedRuleOperator|keyof typeof google.ads.googleads.v8.enums.UserListCombinedRuleOperatorEnum.UserListCombinedRuleOperator);

                        /**
                         * Creates a new CombinedRuleUserListInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CombinedRuleUserListInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ICombinedRuleUserListInfo): google.ads.googleads.v8.common.CombinedRuleUserListInfo;

                        /**
                         * Encodes the specified CombinedRuleUserListInfo message. Does not implicitly {@link google.ads.googleads.v8.common.CombinedRuleUserListInfo.verify|verify} messages.
                         * @param m CombinedRuleUserListInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ICombinedRuleUserListInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CombinedRuleUserListInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.common.CombinedRuleUserListInfo.verify|verify} messages.
                         * @param message CombinedRuleUserListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.common.ICombinedRuleUserListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CombinedRuleUserListInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns CombinedRuleUserListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.common.CombinedRuleUserListInfo;

                        /**
                         * Decodes a CombinedRuleUserListInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CombinedRuleUserListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.common.CombinedRuleUserListInfo;

                        /**
                         * Verifies a CombinedRuleUserListInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CombinedRuleUserListInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CombinedRuleUserListInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.CombinedRuleUserListInfo;

                        /**
                         * Creates a plain object from a CombinedRuleUserListInfo message. Also converts values to other types if specified.
                         * @param m CombinedRuleUserListInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.CombinedRuleUserListInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CombinedRuleUserListInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a DateSpecificRuleUserListInfo. */
                    interface IDateSpecificRuleUserListInfo {

                        /** DateSpecificRuleUserListInfo rule */
                        rule?: (google.ads.googleads.v8.common.IUserListRuleInfo|null);

                        /** DateSpecificRuleUserListInfo start_date */
                        start_date?: (string|null);

                        /** DateSpecificRuleUserListInfo end_date */
                        end_date?: (string|null);
                    }

                    /** Represents a DateSpecificRuleUserListInfo. */
                    class DateSpecificRuleUserListInfo implements IDateSpecificRuleUserListInfo {

                        /**
                         * Constructs a new DateSpecificRuleUserListInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IDateSpecificRuleUserListInfo);

                        /** DateSpecificRuleUserListInfo rule. */
                        public rule?: (google.ads.googleads.v8.common.IUserListRuleInfo|null);

                        /** DateSpecificRuleUserListInfo start_date. */
                        public start_date?: (string|null);

                        /** DateSpecificRuleUserListInfo end_date. */
                        public end_date?: (string|null);

                        /** DateSpecificRuleUserListInfo _start_date. */
                        public _start_date?: "start_date";

                        /** DateSpecificRuleUserListInfo _end_date. */
                        public _end_date?: "end_date";

                        /**
                         * Creates a new DateSpecificRuleUserListInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DateSpecificRuleUserListInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IDateSpecificRuleUserListInfo): google.ads.googleads.v8.common.DateSpecificRuleUserListInfo;

                        /**
                         * Encodes the specified DateSpecificRuleUserListInfo message. Does not implicitly {@link google.ads.googleads.v8.common.DateSpecificRuleUserListInfo.verify|verify} messages.
                         * @param m DateSpecificRuleUserListInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IDateSpecificRuleUserListInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DateSpecificRuleUserListInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.common.DateSpecificRuleUserListInfo.verify|verify} messages.
                         * @param message DateSpecificRuleUserListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.common.IDateSpecificRuleUserListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DateSpecificRuleUserListInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns DateSpecificRuleUserListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.common.DateSpecificRuleUserListInfo;

                        /**
                         * Decodes a DateSpecificRuleUserListInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DateSpecificRuleUserListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.common.DateSpecificRuleUserListInfo;

                        /**
                         * Verifies a DateSpecificRuleUserListInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DateSpecificRuleUserListInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns DateSpecificRuleUserListInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.DateSpecificRuleUserListInfo;

                        /**
                         * Creates a plain object from a DateSpecificRuleUserListInfo message. Also converts values to other types if specified.
                         * @param m DateSpecificRuleUserListInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.DateSpecificRuleUserListInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DateSpecificRuleUserListInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an ExpressionRuleUserListInfo. */
                    interface IExpressionRuleUserListInfo {

                        /** ExpressionRuleUserListInfo rule */
                        rule?: (google.ads.googleads.v8.common.IUserListRuleInfo|null);
                    }

                    /** Represents an ExpressionRuleUserListInfo. */
                    class ExpressionRuleUserListInfo implements IExpressionRuleUserListInfo {

                        /**
                         * Constructs a new ExpressionRuleUserListInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IExpressionRuleUserListInfo);

                        /** ExpressionRuleUserListInfo rule. */
                        public rule?: (google.ads.googleads.v8.common.IUserListRuleInfo|null);

                        /**
                         * Creates a new ExpressionRuleUserListInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExpressionRuleUserListInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IExpressionRuleUserListInfo): google.ads.googleads.v8.common.ExpressionRuleUserListInfo;

                        /**
                         * Encodes the specified ExpressionRuleUserListInfo message. Does not implicitly {@link google.ads.googleads.v8.common.ExpressionRuleUserListInfo.verify|verify} messages.
                         * @param m ExpressionRuleUserListInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IExpressionRuleUserListInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExpressionRuleUserListInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.common.ExpressionRuleUserListInfo.verify|verify} messages.
                         * @param message ExpressionRuleUserListInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.common.IExpressionRuleUserListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExpressionRuleUserListInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns ExpressionRuleUserListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.common.ExpressionRuleUserListInfo;

                        /**
                         * Decodes an ExpressionRuleUserListInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExpressionRuleUserListInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.common.ExpressionRuleUserListInfo;

                        /**
                         * Verifies an ExpressionRuleUserListInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an ExpressionRuleUserListInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ExpressionRuleUserListInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.ExpressionRuleUserListInfo;

                        /**
                         * Creates a plain object from an ExpressionRuleUserListInfo message. Also converts values to other types if specified.
                         * @param m ExpressionRuleUserListInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.ExpressionRuleUserListInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExpressionRuleUserListInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a RuleBasedUserListInfo. */
                    interface IRuleBasedUserListInfo {

                        /** RuleBasedUserListInfo prepopulation_status */
                        prepopulation_status?: (google.ads.googleads.v8.enums.UserListPrepopulationStatusEnum.UserListPrepopulationStatus|keyof typeof google.ads.googleads.v8.enums.UserListPrepopulationStatusEnum.UserListPrepopulationStatus|null);

                        /** RuleBasedUserListInfo combined_rule_user_list */
                        combined_rule_user_list?: (google.ads.googleads.v8.common.ICombinedRuleUserListInfo|null);

                        /** RuleBasedUserListInfo date_specific_rule_user_list */
                        date_specific_rule_user_list?: (google.ads.googleads.v8.common.IDateSpecificRuleUserListInfo|null);

                        /** RuleBasedUserListInfo expression_rule_user_list */
                        expression_rule_user_list?: (google.ads.googleads.v8.common.IExpressionRuleUserListInfo|null);
                    }

                    /** Represents a RuleBasedUserListInfo. */
                    class RuleBasedUserListInfo implements IRuleBasedUserListInfo {

                        /**
                         * Constructs a new RuleBasedUserListInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IRuleBasedUserListInfo);

                        /** RuleBasedUserListInfo prepopulation_status. */
                        public prepopulation_status: (google.ads.googleads.v8.enums.UserListPrepopulationStatusEnum.UserListPrepopulationStatus|keyof typeof google.ads.googleads.v8.enums.UserListPrepopulationStatusEnum.UserListPrepopulationStatus);

                        /** RuleBasedUserListInfo combined_rule_user_list. */
                        public combined_rule_user_list?: (google.ads.googleads.v8.common.ICombinedRuleUserListInfo|null);

                        /** RuleBasedUserListInfo date_specific_rule_user_list. */
                        public date_specific_rule_user_list?: (google.ads.googleads.v8.common.IDateSpecificRuleUserListInfo|null);

                        /** RuleBasedUserListInfo expression_rule_user_list. */
                        public expression_rule_user_list?: (google.ads.googleads.v8.common.IExpressionRuleUserListInfo|null);

                        /** RuleBasedUserListInfo rule_based_user_list. */
                        public rule_based_user_list?: ("combined_rule_user_list"|"date_specific_rule_user_list"|"expression_rule_user_list");

                        /**
                         * Creates a new RuleBasedUserListInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RuleBasedUserListInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.IRuleBasedUserListInfo): google.ads.googleads.v8.common.RuleBasedUserListInfo;

                        /**
                         * Encodes the specified RuleBasedUserListInfo message. Does not implicitly {@link google.ads.googleads.v8.common.RuleBasedUserListInfo.verify|verify} messages.
                         * @param m RuleBasedUserListInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IRuleBasedUserListInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RuleBasedUserListInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IRuleBasedUserListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RuleBasedUserListInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.RuleBasedUserListInfo;

                        /**
                         * Verifies a RuleBasedUserListInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RuleBasedUserListInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns RuleBasedUserListInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.RuleBasedUserListInfo;

                        /**
                         * Creates a plain object from a RuleBasedUserListInfo message. Also converts values to other types if specified.
                         * @param m RuleBasedUserListInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.RuleBasedUserListInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RuleBasedUserListInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a LogicalUserListInfo. */
                    interface ILogicalUserListInfo {

                        /** LogicalUserListInfo rules */
                        rules?: (google.ads.googleads.v8.common.IUserListLogicalRuleInfo[]|null);
                    }

                    /** Represents a LogicalUserListInfo. */
                    class LogicalUserListInfo implements ILogicalUserListInfo {

                        /**
                         * Constructs a new LogicalUserListInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ILogicalUserListInfo);

                        /** LogicalUserListInfo rules. */
                        public rules: google.ads.googleads.v8.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.v8.common.ILogicalUserListInfo): google.ads.googleads.v8.common.LogicalUserListInfo;

                        /**
                         * Encodes the specified LogicalUserListInfo message. Does not implicitly {@link google.ads.googleads.v8.common.LogicalUserListInfo.verify|verify} messages.
                         * @param m LogicalUserListInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ILogicalUserListInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LogicalUserListInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ILogicalUserListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LogicalUserListInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.LogicalUserListInfo;

                        /**
                         * Verifies a LogicalUserListInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LogicalUserListInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns LogicalUserListInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.LogicalUserListInfo;

                        /**
                         * Creates a plain object from a LogicalUserListInfo message. Also converts values to other types if specified.
                         * @param m LogicalUserListInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.LogicalUserListInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LogicalUserListInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a UserListLogicalRuleInfo. */
                    interface IUserListLogicalRuleInfo {

                        /** UserListLogicalRuleInfo operator */
                        operator?: (google.ads.googleads.v8.enums.UserListLogicalRuleOperatorEnum.UserListLogicalRuleOperator|keyof typeof google.ads.googleads.v8.enums.UserListLogicalRuleOperatorEnum.UserListLogicalRuleOperator|null);

                        /** UserListLogicalRuleInfo rule_operands */
                        rule_operands?: (google.ads.googleads.v8.common.ILogicalUserListOperandInfo[]|null);
                    }

                    /** Represents a UserListLogicalRuleInfo. */
                    class UserListLogicalRuleInfo implements IUserListLogicalRuleInfo {

                        /**
                         * Constructs a new UserListLogicalRuleInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IUserListLogicalRuleInfo);

                        /** UserListLogicalRuleInfo operator. */
                        public operator: (google.ads.googleads.v8.enums.UserListLogicalRuleOperatorEnum.UserListLogicalRuleOperator|keyof typeof google.ads.googleads.v8.enums.UserListLogicalRuleOperatorEnum.UserListLogicalRuleOperator);

                        /** UserListLogicalRuleInfo rule_operands. */
                        public rule_operands: google.ads.googleads.v8.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.v8.common.IUserListLogicalRuleInfo): google.ads.googleads.v8.common.UserListLogicalRuleInfo;

                        /**
                         * Encodes the specified UserListLogicalRuleInfo message. Does not implicitly {@link google.ads.googleads.v8.common.UserListLogicalRuleInfo.verify|verify} messages.
                         * @param m UserListLogicalRuleInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IUserListLogicalRuleInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListLogicalRuleInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IUserListLogicalRuleInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListLogicalRuleInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.UserListLogicalRuleInfo;

                        /**
                         * Verifies a UserListLogicalRuleInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListLogicalRuleInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserListLogicalRuleInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.UserListLogicalRuleInfo;

                        /**
                         * Creates a plain object from a UserListLogicalRuleInfo message. Also converts values to other types if specified.
                         * @param m UserListLogicalRuleInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.UserListLogicalRuleInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListLogicalRuleInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.ILogicalUserListOperandInfo);

                        /** LogicalUserListOperandInfo user_list. */
                        public user_list?: (string|null);

                        /** LogicalUserListOperandInfo _user_list. */
                        public _user_list?: "user_list";

                        /**
                         * Creates a new LogicalUserListOperandInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LogicalUserListOperandInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.common.ILogicalUserListOperandInfo): google.ads.googleads.v8.common.LogicalUserListOperandInfo;

                        /**
                         * Encodes the specified LogicalUserListOperandInfo message. Does not implicitly {@link google.ads.googleads.v8.common.LogicalUserListOperandInfo.verify|verify} messages.
                         * @param m LogicalUserListOperandInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.ILogicalUserListOperandInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LogicalUserListOperandInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.ILogicalUserListOperandInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LogicalUserListOperandInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.LogicalUserListOperandInfo;

                        /**
                         * Verifies a LogicalUserListOperandInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LogicalUserListOperandInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns LogicalUserListOperandInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.LogicalUserListOperandInfo;

                        /**
                         * Creates a plain object from a LogicalUserListOperandInfo message. Also converts values to other types if specified.
                         * @param m LogicalUserListOperandInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.LogicalUserListOperandInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LogicalUserListOperandInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a BasicUserListInfo. */
                    interface IBasicUserListInfo {

                        /** BasicUserListInfo actions */
                        actions?: (google.ads.googleads.v8.common.IUserListActionInfo[]|null);
                    }

                    /** Represents a BasicUserListInfo. */
                    class BasicUserListInfo implements IBasicUserListInfo {

                        /**
                         * Constructs a new BasicUserListInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.common.IBasicUserListInfo);

                        /** BasicUserListInfo actions. */
                        public actions: google.ads.googleads.v8.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.v8.common.IBasicUserListInfo): google.ads.googleads.v8.common.BasicUserListInfo;

                        /**
                         * Encodes the specified BasicUserListInfo message. Does not implicitly {@link google.ads.googleads.v8.common.BasicUserListInfo.verify|verify} messages.
                         * @param m BasicUserListInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IBasicUserListInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BasicUserListInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IBasicUserListInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BasicUserListInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.BasicUserListInfo;

                        /**
                         * Verifies a BasicUserListInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BasicUserListInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BasicUserListInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.BasicUserListInfo;

                        /**
                         * Creates a plain object from a BasicUserListInfo message. Also converts values to other types if specified.
                         * @param m BasicUserListInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.BasicUserListInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BasicUserListInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.IUserListActionInfo): google.ads.googleads.v8.common.UserListActionInfo;

                        /**
                         * Encodes the specified UserListActionInfo message. Does not implicitly {@link google.ads.googleads.v8.common.UserListActionInfo.verify|verify} messages.
                         * @param m UserListActionInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IUserListActionInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListActionInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IUserListActionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListActionInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.UserListActionInfo;

                        /**
                         * Verifies a UserListActionInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListActionInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserListActionInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.UserListActionInfo;

                        /**
                         * Creates a plain object from a UserListActionInfo message. Also converts values to other types if specified.
                         * @param m UserListActionInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.UserListActionInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListActionInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.IValue): google.ads.googleads.v8.common.Value;

                        /**
                         * Encodes the specified Value message. Does not implicitly {@link google.ads.googleads.v8.common.Value.verify|verify} messages.
                         * @param m Value message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.common.IValue, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Value message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.common.IValue, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Value message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.common.Value;

                        /**
                         * Verifies a Value message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Value message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns Value
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.common.Value;

                        /**
                         * Creates a plain object from a Value message. Also converts values to other types if specified.
                         * @param m Value
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.common.Value, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Value to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }
                }

                /** Namespace enums. */
                namespace enums {

                    /** Properties of a PolicyTopicEntryTypeEnum. */
                    interface IPolicyTopicEntryTypeEnum {
                    }

                    /** Represents a PolicyTopicEntryTypeEnum. */
                    class PolicyTopicEntryTypeEnum implements IPolicyTopicEntryTypeEnum {

                        /**
                         * Constructs a new PolicyTopicEntryTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IPolicyTopicEntryTypeEnum): google.ads.googleads.v8.enums.PolicyTopicEntryTypeEnum;

                        /**
                         * Encodes the specified PolicyTopicEntryTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.PolicyTopicEntryTypeEnum.verify|verify} messages.
                         * @param m PolicyTopicEntryTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IPolicyTopicEntryTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyTopicEntryTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IPolicyTopicEntryTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyTopicEntryTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.PolicyTopicEntryTypeEnum;

                        /**
                         * Verifies a PolicyTopicEntryTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PolicyTopicEntryTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PolicyTopicEntryTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.PolicyTopicEntryTypeEnum;

                        /**
                         * Creates a plain object from a PolicyTopicEntryTypeEnum message. Also converts values to other types if specified.
                         * @param m PolicyTopicEntryTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.PolicyTopicEntryTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PolicyTopicEntryTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IPolicyTopicEvidenceDestinationMismatchUrlTypeEnum): google.ads.googleads.v8.enums.PolicyTopicEvidenceDestinationMismatchUrlTypeEnum;

                        /**
                         * Encodes the specified PolicyTopicEvidenceDestinationMismatchUrlTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.PolicyTopicEvidenceDestinationMismatchUrlTypeEnum.verify|verify} messages.
                         * @param m PolicyTopicEvidenceDestinationMismatchUrlTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IPolicyTopicEvidenceDestinationMismatchUrlTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyTopicEvidenceDestinationMismatchUrlTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IPolicyTopicEvidenceDestinationMismatchUrlTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyTopicEvidenceDestinationMismatchUrlTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.PolicyTopicEvidenceDestinationMismatchUrlTypeEnum;

                        /**
                         * Verifies a PolicyTopicEvidenceDestinationMismatchUrlTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PolicyTopicEvidenceDestinationMismatchUrlTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PolicyTopicEvidenceDestinationMismatchUrlTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.PolicyTopicEvidenceDestinationMismatchUrlTypeEnum;

                        /**
                         * Creates a plain object from a PolicyTopicEvidenceDestinationMismatchUrlTypeEnum message. Also converts values to other types if specified.
                         * @param m PolicyTopicEvidenceDestinationMismatchUrlTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.PolicyTopicEvidenceDestinationMismatchUrlTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PolicyTopicEvidenceDestinationMismatchUrlTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IPolicyTopicEvidenceDestinationNotWorkingDeviceEnum): google.ads.googleads.v8.enums.PolicyTopicEvidenceDestinationNotWorkingDeviceEnum;

                        /**
                         * Encodes the specified PolicyTopicEvidenceDestinationNotWorkingDeviceEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.PolicyTopicEvidenceDestinationNotWorkingDeviceEnum.verify|verify} messages.
                         * @param m PolicyTopicEvidenceDestinationNotWorkingDeviceEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IPolicyTopicEvidenceDestinationNotWorkingDeviceEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyTopicEvidenceDestinationNotWorkingDeviceEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IPolicyTopicEvidenceDestinationNotWorkingDeviceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyTopicEvidenceDestinationNotWorkingDeviceEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.PolicyTopicEvidenceDestinationNotWorkingDeviceEnum;

                        /**
                         * Verifies a PolicyTopicEvidenceDestinationNotWorkingDeviceEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PolicyTopicEvidenceDestinationNotWorkingDeviceEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PolicyTopicEvidenceDestinationNotWorkingDeviceEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.PolicyTopicEvidenceDestinationNotWorkingDeviceEnum;

                        /**
                         * Creates a plain object from a PolicyTopicEvidenceDestinationNotWorkingDeviceEnum message. Also converts values to other types if specified.
                         * @param m PolicyTopicEvidenceDestinationNotWorkingDeviceEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.PolicyTopicEvidenceDestinationNotWorkingDeviceEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PolicyTopicEvidenceDestinationNotWorkingDeviceEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IPolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum): google.ads.googleads.v8.enums.PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum;

                        /**
                         * Encodes the specified PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum.verify|verify} messages.
                         * @param m PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IPolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IPolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum;

                        /**
                         * Verifies a PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum;

                        /**
                         * Creates a plain object from a PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum message. Also converts values to other types if specified.
                         * @param m PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace PolicyTopicEvidenceDestinationNotWorkingDnsErrorTypeEnum {

                        /** PolicyTopicEvidenceDestinationNotWorkingDnsErrorType enum. */
                        enum PolicyTopicEvidenceDestinationNotWorkingDnsErrorType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            HOSTNAME_NOT_FOUND = 2,
                            GOOGLE_CRAWLER_DNS_ISSUE = 3
                        }
                    }

                    /** Properties of a PolicyApprovalStatusEnum. */
                    interface IPolicyApprovalStatusEnum {
                    }

                    /** Represents a PolicyApprovalStatusEnum. */
                    class PolicyApprovalStatusEnum implements IPolicyApprovalStatusEnum {

                        /**
                         * Constructs a new PolicyApprovalStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IPolicyApprovalStatusEnum): google.ads.googleads.v8.enums.PolicyApprovalStatusEnum;

                        /**
                         * Encodes the specified PolicyApprovalStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.PolicyApprovalStatusEnum.verify|verify} messages.
                         * @param m PolicyApprovalStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IPolicyApprovalStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyApprovalStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IPolicyApprovalStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyApprovalStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.PolicyApprovalStatusEnum;

                        /**
                         * Verifies a PolicyApprovalStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PolicyApprovalStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PolicyApprovalStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.PolicyApprovalStatusEnum;

                        /**
                         * Creates a plain object from a PolicyApprovalStatusEnum message. Also converts values to other types if specified.
                         * @param m PolicyApprovalStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.PolicyApprovalStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PolicyApprovalStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IPolicyReviewStatusEnum): google.ads.googleads.v8.enums.PolicyReviewStatusEnum;

                        /**
                         * Encodes the specified PolicyReviewStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.PolicyReviewStatusEnum.verify|verify} messages.
                         * @param m PolicyReviewStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IPolicyReviewStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyReviewStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IPolicyReviewStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyReviewStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.PolicyReviewStatusEnum;

                        /**
                         * Verifies a PolicyReviewStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PolicyReviewStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PolicyReviewStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.PolicyReviewStatusEnum;

                        /**
                         * Creates a plain object from a PolicyReviewStatusEnum message. Also converts values to other types if specified.
                         * @param m PolicyReviewStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.PolicyReviewStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PolicyReviewStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAssetPerformanceLabelEnum): google.ads.googleads.v8.enums.AssetPerformanceLabelEnum;

                        /**
                         * Encodes the specified AssetPerformanceLabelEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AssetPerformanceLabelEnum.verify|verify} messages.
                         * @param m AssetPerformanceLabelEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAssetPerformanceLabelEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetPerformanceLabelEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAssetPerformanceLabelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetPerformanceLabelEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AssetPerformanceLabelEnum;

                        /**
                         * Verifies an AssetPerformanceLabelEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AssetPerformanceLabelEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AssetPerformanceLabelEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AssetPerformanceLabelEnum;

                        /**
                         * Creates a plain object from an AssetPerformanceLabelEnum message. Also converts values to other types if specified.
                         * @param m AssetPerformanceLabelEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AssetPerformanceLabelEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetPerformanceLabelEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace AssetPerformanceLabelEnum {

                        /** AssetPerformanceLabel enum. */
                        enum AssetPerformanceLabel {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PENDING = 2,
                            LEARNING = 3,
                            LOW = 4,
                            GOOD = 5,
                            BEST = 6
                        }
                    }

                    /** Properties of a ServedAssetFieldTypeEnum. */
                    interface IServedAssetFieldTypeEnum {
                    }

                    /** Represents a ServedAssetFieldTypeEnum. */
                    class ServedAssetFieldTypeEnum implements IServedAssetFieldTypeEnum {

                        /**
                         * Constructs a new ServedAssetFieldTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IServedAssetFieldTypeEnum): google.ads.googleads.v8.enums.ServedAssetFieldTypeEnum;

                        /**
                         * Encodes the specified ServedAssetFieldTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ServedAssetFieldTypeEnum.verify|verify} messages.
                         * @param m ServedAssetFieldTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IServedAssetFieldTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ServedAssetFieldTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IServedAssetFieldTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ServedAssetFieldTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ServedAssetFieldTypeEnum;

                        /**
                         * Verifies a ServedAssetFieldTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ServedAssetFieldTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ServedAssetFieldTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ServedAssetFieldTypeEnum;

                        /**
                         * Creates a plain object from a ServedAssetFieldTypeEnum message. Also converts values to other types if specified.
                         * @param m ServedAssetFieldTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ServedAssetFieldTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ServedAssetFieldTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a CallConversionReportingStateEnum. */
                    interface ICallConversionReportingStateEnum {
                    }

                    /** Represents a CallConversionReportingStateEnum. */
                    class CallConversionReportingStateEnum implements ICallConversionReportingStateEnum {

                        /**
                         * Constructs a new CallConversionReportingStateEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ICallConversionReportingStateEnum): google.ads.googleads.v8.enums.CallConversionReportingStateEnum;

                        /**
                         * Encodes the specified CallConversionReportingStateEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CallConversionReportingStateEnum.verify|verify} messages.
                         * @param m CallConversionReportingStateEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICallConversionReportingStateEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CallConversionReportingStateEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ICallConversionReportingStateEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CallConversionReportingStateEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.CallConversionReportingStateEnum;

                        /**
                         * Verifies a CallConversionReportingStateEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CallConversionReportingStateEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CallConversionReportingStateEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CallConversionReportingStateEnum;

                        /**
                         * Creates a plain object from a CallConversionReportingStateEnum message. Also converts values to other types if specified.
                         * @param m CallConversionReportingStateEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CallConversionReportingStateEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CallConversionReportingStateEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 DisplayAdFormatSettingEnum. */
                    interface IDisplayAdFormatSettingEnum {
                    }

                    /** Represents a DisplayAdFormatSettingEnum. */
                    class DisplayAdFormatSettingEnum implements IDisplayAdFormatSettingEnum {

                        /**
                         * Constructs a new DisplayAdFormatSettingEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IDisplayAdFormatSettingEnum): google.ads.googleads.v8.enums.DisplayAdFormatSettingEnum;

                        /**
                         * Encodes the specified DisplayAdFormatSettingEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.DisplayAdFormatSettingEnum.verify|verify} messages.
                         * @param m DisplayAdFormatSettingEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IDisplayAdFormatSettingEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DisplayAdFormatSettingEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IDisplayAdFormatSettingEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DisplayAdFormatSettingEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.DisplayAdFormatSettingEnum;

                        /**
                         * Verifies a DisplayAdFormatSettingEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DisplayAdFormatSettingEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns DisplayAdFormatSettingEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.DisplayAdFormatSettingEnum;

                        /**
                         * Creates a plain object from a DisplayAdFormatSettingEnum message. Also converts values to other types if specified.
                         * @param m DisplayAdFormatSettingEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.DisplayAdFormatSettingEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DisplayAdFormatSettingEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IDisplayUploadProductTypeEnum): google.ads.googleads.v8.enums.DisplayUploadProductTypeEnum;

                        /**
                         * Encodes the specified DisplayUploadProductTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.DisplayUploadProductTypeEnum.verify|verify} messages.
                         * @param m DisplayUploadProductTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IDisplayUploadProductTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DisplayUploadProductTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IDisplayUploadProductTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DisplayUploadProductTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.DisplayUploadProductTypeEnum;

                        /**
                         * Verifies a DisplayUploadProductTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DisplayUploadProductTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns DisplayUploadProductTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.DisplayUploadProductTypeEnum;

                        /**
                         * Creates a plain object from a DisplayUploadProductTypeEnum message. Also converts values to other types if specified.
                         * @param m DisplayUploadProductTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.DisplayUploadProductTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DisplayUploadProductTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ILegacyAppInstallAdAppStoreEnum): google.ads.googleads.v8.enums.LegacyAppInstallAdAppStoreEnum;

                        /**
                         * Encodes the specified LegacyAppInstallAdAppStoreEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.LegacyAppInstallAdAppStoreEnum.verify|verify} messages.
                         * @param m LegacyAppInstallAdAppStoreEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ILegacyAppInstallAdAppStoreEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LegacyAppInstallAdAppStoreEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ILegacyAppInstallAdAppStoreEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LegacyAppInstallAdAppStoreEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.LegacyAppInstallAdAppStoreEnum;

                        /**
                         * Verifies a LegacyAppInstallAdAppStoreEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LegacyAppInstallAdAppStoreEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns LegacyAppInstallAdAppStoreEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.LegacyAppInstallAdAppStoreEnum;

                        /**
                         * Creates a plain object from a LegacyAppInstallAdAppStoreEnum message. Also converts values to other types if specified.
                         * @param m LegacyAppInstallAdAppStoreEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.LegacyAppInstallAdAppStoreEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LegacyAppInstallAdAppStoreEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IMimeTypeEnum): google.ads.googleads.v8.enums.MimeTypeEnum;

                        /**
                         * Encodes the specified MimeTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.MimeTypeEnum.verify|verify} messages.
                         * @param m MimeTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IMimeTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MimeTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IMimeTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MimeTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.MimeTypeEnum;

                        /**
                         * Verifies a MimeTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MimeTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MimeTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.MimeTypeEnum;

                        /**
                         * Creates a plain object from a MimeTypeEnum message. Also converts values to other types if specified.
                         * @param m MimeTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.MimeTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MimeTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 an AgeRangeTypeEnum. */
                    interface IAgeRangeTypeEnum {
                    }

                    /** Represents an AgeRangeTypeEnum. */
                    class AgeRangeTypeEnum implements IAgeRangeTypeEnum {

                        /**
                         * Constructs a new AgeRangeTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAgeRangeTypeEnum): google.ads.googleads.v8.enums.AgeRangeTypeEnum;

                        /**
                         * Encodes the specified AgeRangeTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AgeRangeTypeEnum.verify|verify} messages.
                         * @param m AgeRangeTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAgeRangeTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AgeRangeTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAgeRangeTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AgeRangeTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AgeRangeTypeEnum;

                        /**
                         * Verifies an AgeRangeTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AgeRangeTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AgeRangeTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AgeRangeTypeEnum;

                        /**
                         * Creates a plain object from an AgeRangeTypeEnum message. Also converts values to other types if specified.
                         * @param m AgeRangeTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AgeRangeTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AgeRangeTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAppPaymentModelTypeEnum): google.ads.googleads.v8.enums.AppPaymentModelTypeEnum;

                        /**
                         * Encodes the specified AppPaymentModelTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AppPaymentModelTypeEnum.verify|verify} messages.
                         * @param m AppPaymentModelTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAppPaymentModelTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AppPaymentModelTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAppPaymentModelTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AppPaymentModelTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AppPaymentModelTypeEnum;

                        /**
                         * Verifies an AppPaymentModelTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AppPaymentModelTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AppPaymentModelTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AppPaymentModelTypeEnum;

                        /**
                         * Creates a plain object from an AppPaymentModelTypeEnum message. Also converts values to other types if specified.
                         * @param m AppPaymentModelTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AppPaymentModelTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AppPaymentModelTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace AppPaymentModelTypeEnum {

                        /** AppPaymentModelType enum. */
                        enum AppPaymentModelType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PAID = 30
                        }
                    }

                    /** Properties of a ContentLabelTypeEnum. */
                    interface IContentLabelTypeEnum {
                    }

                    /** Represents a ContentLabelTypeEnum. */
                    class ContentLabelTypeEnum implements IContentLabelTypeEnum {

                        /**
                         * Constructs a new ContentLabelTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IContentLabelTypeEnum): google.ads.googleads.v8.enums.ContentLabelTypeEnum;

                        /**
                         * Encodes the specified ContentLabelTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ContentLabelTypeEnum.verify|verify} messages.
                         * @param m ContentLabelTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IContentLabelTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ContentLabelTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IContentLabelTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ContentLabelTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ContentLabelTypeEnum;

                        /**
                         * Verifies a ContentLabelTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ContentLabelTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ContentLabelTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ContentLabelTypeEnum;

                        /**
                         * Creates a plain object from a ContentLabelTypeEnum message. Also converts values to other types if specified.
                         * @param m ContentLabelTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ContentLabelTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ContentLabelTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a DayOfWeekEnum. */
                    interface IDayOfWeekEnum {
                    }

                    /** Represents a DayOfWeekEnum. */
                    class DayOfWeekEnum implements IDayOfWeekEnum {

                        /**
                         * Constructs a new DayOfWeekEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IDayOfWeekEnum): google.ads.googleads.v8.enums.DayOfWeekEnum;

                        /**
                         * Encodes the specified DayOfWeekEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.DayOfWeekEnum.verify|verify} messages.
                         * @param m DayOfWeekEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IDayOfWeekEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DayOfWeekEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IDayOfWeekEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DayOfWeekEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.DayOfWeekEnum;

                        /**
                         * Verifies a DayOfWeekEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DayOfWeekEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns DayOfWeekEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.DayOfWeekEnum;

                        /**
                         * Creates a plain object from a DayOfWeekEnum message. Also converts values to other types if specified.
                         * @param m DayOfWeekEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.DayOfWeekEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DayOfWeekEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IDeviceEnum): google.ads.googleads.v8.enums.DeviceEnum;

                        /**
                         * Encodes the specified DeviceEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.DeviceEnum.verify|verify} messages.
                         * @param m DeviceEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IDeviceEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DeviceEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IDeviceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DeviceEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.DeviceEnum;

                        /**
                         * Verifies a DeviceEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DeviceEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns DeviceEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.DeviceEnum;

                        /**
                         * Creates a plain object from a DeviceEnum message. Also converts values to other types if specified.
                         * @param m DeviceEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.DeviceEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DeviceEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IGenderTypeEnum): google.ads.googleads.v8.enums.GenderTypeEnum;

                        /**
                         * Encodes the specified GenderTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.GenderTypeEnum.verify|verify} messages.
                         * @param m GenderTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IGenderTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenderTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IGenderTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenderTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.GenderTypeEnum;

                        /**
                         * Verifies a GenderTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenderTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GenderTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.GenderTypeEnum;

                        /**
                         * Creates a plain object from a GenderTypeEnum message. Also converts values to other types if specified.
                         * @param m GenderTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.GenderTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenderTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IHotelDateSelectionTypeEnum): google.ads.googleads.v8.enums.HotelDateSelectionTypeEnum;

                        /**
                         * Encodes the specified HotelDateSelectionTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.HotelDateSelectionTypeEnum.verify|verify} messages.
                         * @param m HotelDateSelectionTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IHotelDateSelectionTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelDateSelectionTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IHotelDateSelectionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelDateSelectionTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.HotelDateSelectionTypeEnum;

                        /**
                         * Verifies a HotelDateSelectionTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelDateSelectionTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns HotelDateSelectionTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.HotelDateSelectionTypeEnum;

                        /**
                         * Creates a plain object from a HotelDateSelectionTypeEnum message. Also converts values to other types if specified.
                         * @param m HotelDateSelectionTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.HotelDateSelectionTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelDateSelectionTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IIncomeRangeTypeEnum): google.ads.googleads.v8.enums.IncomeRangeTypeEnum;

                        /**
                         * Encodes the specified IncomeRangeTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.IncomeRangeTypeEnum.verify|verify} messages.
                         * @param m IncomeRangeTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IIncomeRangeTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified IncomeRangeTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IIncomeRangeTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an IncomeRangeTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.IncomeRangeTypeEnum;

                        /**
                         * Verifies an IncomeRangeTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an IncomeRangeTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns IncomeRangeTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.IncomeRangeTypeEnum;

                        /**
                         * Creates a plain object from an IncomeRangeTypeEnum message. Also converts values to other types if specified.
                         * @param m IncomeRangeTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.IncomeRangeTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this IncomeRangeTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IInteractionTypeEnum): google.ads.googleads.v8.enums.InteractionTypeEnum;

                        /**
                         * Encodes the specified InteractionTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.InteractionTypeEnum.verify|verify} messages.
                         * @param m InteractionTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IInteractionTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified InteractionTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IInteractionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an InteractionTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.InteractionTypeEnum;

                        /**
                         * Verifies an InteractionTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an InteractionTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns InteractionTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.InteractionTypeEnum;

                        /**
                         * Creates a plain object from an InteractionTypeEnum message. Also converts values to other types if specified.
                         * @param m InteractionTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.InteractionTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this InteractionTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IKeywordMatchTypeEnum): google.ads.googleads.v8.enums.KeywordMatchTypeEnum;

                        /**
                         * Encodes the specified KeywordMatchTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.KeywordMatchTypeEnum.verify|verify} messages.
                         * @param m KeywordMatchTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IKeywordMatchTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordMatchTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IKeywordMatchTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordMatchTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.KeywordMatchTypeEnum;

                        /**
                         * Verifies a KeywordMatchTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordMatchTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordMatchTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.KeywordMatchTypeEnum;

                        /**
                         * Creates a plain object from a KeywordMatchTypeEnum message. Also converts values to other types if specified.
                         * @param m KeywordMatchTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.KeywordMatchTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordMatchTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IListingGroupTypeEnum): google.ads.googleads.v8.enums.ListingGroupTypeEnum;

                        /**
                         * Encodes the specified ListingGroupTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ListingGroupTypeEnum.verify|verify} messages.
                         * @param m ListingGroupTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IListingGroupTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListingGroupTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IListingGroupTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListingGroupTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ListingGroupTypeEnum;

                        /**
                         * Verifies a ListingGroupTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListingGroupTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ListingGroupTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ListingGroupTypeEnum;

                        /**
                         * Creates a plain object from a ListingGroupTypeEnum message. Also converts values to other types if specified.
                         * @param m ListingGroupTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ListingGroupTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListingGroupTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ILocationGroupRadiusUnitsEnum): google.ads.googleads.v8.enums.LocationGroupRadiusUnitsEnum;

                        /**
                         * Encodes the specified LocationGroupRadiusUnitsEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.LocationGroupRadiusUnitsEnum.verify|verify} messages.
                         * @param m LocationGroupRadiusUnitsEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ILocationGroupRadiusUnitsEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocationGroupRadiusUnitsEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ILocationGroupRadiusUnitsEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocationGroupRadiusUnitsEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.LocationGroupRadiusUnitsEnum;

                        /**
                         * Verifies a LocationGroupRadiusUnitsEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocationGroupRadiusUnitsEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns LocationGroupRadiusUnitsEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.LocationGroupRadiusUnitsEnum;

                        /**
                         * Creates a plain object from a LocationGroupRadiusUnitsEnum message. Also converts values to other types if specified.
                         * @param m LocationGroupRadiusUnitsEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.LocationGroupRadiusUnitsEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocationGroupRadiusUnitsEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IMinuteOfHourEnum): google.ads.googleads.v8.enums.MinuteOfHourEnum;

                        /**
                         * Encodes the specified MinuteOfHourEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.MinuteOfHourEnum.verify|verify} messages.
                         * @param m MinuteOfHourEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IMinuteOfHourEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MinuteOfHourEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IMinuteOfHourEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MinuteOfHourEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.MinuteOfHourEnum;

                        /**
                         * Verifies a MinuteOfHourEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MinuteOfHourEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MinuteOfHourEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.MinuteOfHourEnum;

                        /**
                         * Creates a plain object from a MinuteOfHourEnum message. Also converts values to other types if specified.
                         * @param m MinuteOfHourEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.MinuteOfHourEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MinuteOfHourEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IParentalStatusTypeEnum): google.ads.googleads.v8.enums.ParentalStatusTypeEnum;

                        /**
                         * Encodes the specified ParentalStatusTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ParentalStatusTypeEnum.verify|verify} messages.
                         * @param m ParentalStatusTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IParentalStatusTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ParentalStatusTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IParentalStatusTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ParentalStatusTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ParentalStatusTypeEnum;

                        /**
                         * Verifies a ParentalStatusTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ParentalStatusTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ParentalStatusTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ParentalStatusTypeEnum;

                        /**
                         * Creates a plain object from a ParentalStatusTypeEnum message. Also converts values to other types if specified.
                         * @param m ParentalStatusTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ParentalStatusTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ParentalStatusTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace ParentalStatusTypeEnum {

                        /** ParentalStatusType enum. */
                        enum ParentalStatusType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PARENT = 300,
                            NOT_A_PARENT = 301,
                            UNDETERMINED = 302
                        }
                    }

                    /** Properties of a PreferredContentTypeEnum. */
                    interface IPreferredContentTypeEnum {
                    }

                    /** Represents a PreferredContentTypeEnum. */
                    class PreferredContentTypeEnum implements IPreferredContentTypeEnum {

                        /**
                         * Constructs a new PreferredContentTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IPreferredContentTypeEnum);

                        /**
                         * Creates a new PreferredContentTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PreferredContentTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IPreferredContentTypeEnum): google.ads.googleads.v8.enums.PreferredContentTypeEnum;

                        /**
                         * Encodes the specified PreferredContentTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.PreferredContentTypeEnum.verify|verify} messages.
                         * @param m PreferredContentTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IPreferredContentTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PreferredContentTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.PreferredContentTypeEnum.verify|verify} messages.
                         * @param message PreferredContentTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IPreferredContentTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PreferredContentTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns PreferredContentTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.PreferredContentTypeEnum;

                        /**
                         * Decodes a PreferredContentTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PreferredContentTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.PreferredContentTypeEnum;

                        /**
                         * Verifies a PreferredContentTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PreferredContentTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PreferredContentTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.PreferredContentTypeEnum;

                        /**
                         * Creates a plain object from a PreferredContentTypeEnum message. Also converts values to other types if specified.
                         * @param m PreferredContentTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.PreferredContentTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PreferredContentTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace PreferredContentTypeEnum {

                        /** PreferredContentType enum. */
                        enum PreferredContentType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            YOUTUBE_TOP_CONTENT = 400
                        }
                    }

                    /** Properties of a ProductBiddingCategoryLevelEnum. */
                    interface IProductBiddingCategoryLevelEnum {
                    }

                    /** Represents a ProductBiddingCategoryLevelEnum. */
                    class ProductBiddingCategoryLevelEnum implements IProductBiddingCategoryLevelEnum {

                        /**
                         * Constructs a new ProductBiddingCategoryLevelEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IProductBiddingCategoryLevelEnum);

                        /**
                         * Creates a new ProductBiddingCategoryLevelEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductBiddingCategoryLevelEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IProductBiddingCategoryLevelEnum): google.ads.googleads.v8.enums.ProductBiddingCategoryLevelEnum;

                        /**
                         * Encodes the specified ProductBiddingCategoryLevelEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ProductBiddingCategoryLevelEnum.verify|verify} messages.
                         * @param m ProductBiddingCategoryLevelEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IProductBiddingCategoryLevelEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductBiddingCategoryLevelEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.ProductBiddingCategoryLevelEnum.verify|verify} messages.
                         * @param message ProductBiddingCategoryLevelEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IProductBiddingCategoryLevelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductBiddingCategoryLevelEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns ProductBiddingCategoryLevelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.ProductBiddingCategoryLevelEnum;

                        /**
                         * Decodes a ProductBiddingCategoryLevelEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductBiddingCategoryLevelEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.ProductBiddingCategoryLevelEnum;

                        /**
                         * Verifies a ProductBiddingCategoryLevelEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductBiddingCategoryLevelEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ProductBiddingCategoryLevelEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ProductBiddingCategoryLevelEnum;

                        /**
                         * Creates a plain object from a ProductBiddingCategoryLevelEnum message. Also converts values to other types if specified.
                         * @param m ProductBiddingCategoryLevelEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ProductBiddingCategoryLevelEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductBiddingCategoryLevelEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace ProductBiddingCategoryLevelEnum {

                        /** ProductBiddingCategoryLevel enum. */
                        enum ProductBiddingCategoryLevel {
                            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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IProductChannelEnum): google.ads.googleads.v8.enums.ProductChannelEnum;

                        /**
                         * Encodes the specified ProductChannelEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ProductChannelEnum.verify|verify} messages.
                         * @param m ProductChannelEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IProductChannelEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductChannelEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IProductChannelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductChannelEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ProductChannelEnum;

                        /**
                         * Verifies a ProductChannelEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductChannelEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ProductChannelEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ProductChannelEnum;

                        /**
                         * Creates a plain object from a ProductChannelEnum message. Also converts values to other types if specified.
                         * @param m ProductChannelEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ProductChannelEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductChannelEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IProductChannelExclusivityEnum): google.ads.googleads.v8.enums.ProductChannelExclusivityEnum;

                        /**
                         * Encodes the specified ProductChannelExclusivityEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ProductChannelExclusivityEnum.verify|verify} messages.
                         * @param m ProductChannelExclusivityEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IProductChannelExclusivityEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductChannelExclusivityEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IProductChannelExclusivityEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductChannelExclusivityEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ProductChannelExclusivityEnum;

                        /**
                         * Verifies a ProductChannelExclusivityEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductChannelExclusivityEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ProductChannelExclusivityEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ProductChannelExclusivityEnum;

                        /**
                         * Creates a plain object from a ProductChannelExclusivityEnum message. Also converts values to other types if specified.
                         * @param m ProductChannelExclusivityEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ProductChannelExclusivityEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductChannelExclusivityEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IProductConditionEnum): google.ads.googleads.v8.enums.ProductConditionEnum;

                        /**
                         * Encodes the specified ProductConditionEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ProductConditionEnum.verify|verify} messages.
                         * @param m ProductConditionEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IProductConditionEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductConditionEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IProductConditionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductConditionEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ProductConditionEnum;

                        /**
                         * Verifies a ProductConditionEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductConditionEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ProductConditionEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ProductConditionEnum;

                        /**
                         * Creates a plain object from a ProductConditionEnum message. Also converts values to other types if specified.
                         * @param m ProductConditionEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ProductConditionEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductConditionEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IProductCustomAttributeIndexEnum): google.ads.googleads.v8.enums.ProductCustomAttributeIndexEnum;

                        /**
                         * Encodes the specified ProductCustomAttributeIndexEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ProductCustomAttributeIndexEnum.verify|verify} messages.
                         * @param m ProductCustomAttributeIndexEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IProductCustomAttributeIndexEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductCustomAttributeIndexEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IProductCustomAttributeIndexEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductCustomAttributeIndexEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ProductCustomAttributeIndexEnum;

                        /**
                         * Verifies a ProductCustomAttributeIndexEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductCustomAttributeIndexEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ProductCustomAttributeIndexEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ProductCustomAttributeIndexEnum;

                        /**
                         * Creates a plain object from a ProductCustomAttributeIndexEnum message. Also converts values to other types if specified.
                         * @param m ProductCustomAttributeIndexEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ProductCustomAttributeIndexEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductCustomAttributeIndexEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IProductTypeLevelEnum): google.ads.googleads.v8.enums.ProductTypeLevelEnum;

                        /**
                         * Encodes the specified ProductTypeLevelEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ProductTypeLevelEnum.verify|verify} messages.
                         * @param m ProductTypeLevelEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IProductTypeLevelEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductTypeLevelEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IProductTypeLevelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductTypeLevelEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ProductTypeLevelEnum;

                        /**
                         * Verifies a ProductTypeLevelEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductTypeLevelEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ProductTypeLevelEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ProductTypeLevelEnum;

                        /**
                         * Creates a plain object from a ProductTypeLevelEnum message. Also converts values to other types if specified.
                         * @param m ProductTypeLevelEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ProductTypeLevelEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductTypeLevelEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IProximityRadiusUnitsEnum): google.ads.googleads.v8.enums.ProximityRadiusUnitsEnum;

                        /**
                         * Encodes the specified ProximityRadiusUnitsEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ProximityRadiusUnitsEnum.verify|verify} messages.
                         * @param m ProximityRadiusUnitsEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IProximityRadiusUnitsEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProximityRadiusUnitsEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IProximityRadiusUnitsEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProximityRadiusUnitsEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ProximityRadiusUnitsEnum;

                        /**
                         * Verifies a ProximityRadiusUnitsEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProximityRadiusUnitsEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ProximityRadiusUnitsEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ProximityRadiusUnitsEnum;

                        /**
                         * Creates a plain object from a ProximityRadiusUnitsEnum message. Also converts values to other types if specified.
                         * @param m ProximityRadiusUnitsEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ProximityRadiusUnitsEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProximityRadiusUnitsEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IWebpageConditionOperandEnum): google.ads.googleads.v8.enums.WebpageConditionOperandEnum;

                        /**
                         * Encodes the specified WebpageConditionOperandEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.WebpageConditionOperandEnum.verify|verify} messages.
                         * @param m WebpageConditionOperandEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IWebpageConditionOperandEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified WebpageConditionOperandEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IWebpageConditionOperandEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a WebpageConditionOperandEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.WebpageConditionOperandEnum;

                        /**
                         * Verifies a WebpageConditionOperandEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a WebpageConditionOperandEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns WebpageConditionOperandEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.WebpageConditionOperandEnum;

                        /**
                         * Creates a plain object from a WebpageConditionOperandEnum message. Also converts values to other types if specified.
                         * @param m WebpageConditionOperandEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.WebpageConditionOperandEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this WebpageConditionOperandEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IWebpageConditionOperatorEnum): google.ads.googleads.v8.enums.WebpageConditionOperatorEnum;

                        /**
                         * Encodes the specified WebpageConditionOperatorEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.WebpageConditionOperatorEnum.verify|verify} messages.
                         * @param m WebpageConditionOperatorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IWebpageConditionOperatorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified WebpageConditionOperatorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IWebpageConditionOperatorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a WebpageConditionOperatorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.WebpageConditionOperatorEnum;

                        /**
                         * Verifies a WebpageConditionOperatorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a WebpageConditionOperatorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns WebpageConditionOperatorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.WebpageConditionOperatorEnum;

                        /**
                         * Creates a plain object from a WebpageConditionOperatorEnum message. Also converts values to other types if specified.
                         * @param m WebpageConditionOperatorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.WebpageConditionOperatorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this WebpageConditionOperatorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace WebpageConditionOperatorEnum {

                        /** WebpageConditionOperator enum. */
                        enum WebpageConditionOperator {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            EQUALS = 2,
                            CONTAINS = 3
                        }
                    }

                    /** Properties of a LeadFormCallToActionTypeEnum. */
                    interface ILeadFormCallToActionTypeEnum {
                    }

                    /** Represents a LeadFormCallToActionTypeEnum. */
                    class LeadFormCallToActionTypeEnum implements ILeadFormCallToActionTypeEnum {

                        /**
                         * Constructs a new LeadFormCallToActionTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ILeadFormCallToActionTypeEnum): google.ads.googleads.v8.enums.LeadFormCallToActionTypeEnum;

                        /**
                         * Encodes the specified LeadFormCallToActionTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.LeadFormCallToActionTypeEnum.verify|verify} messages.
                         * @param m LeadFormCallToActionTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ILeadFormCallToActionTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LeadFormCallToActionTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ILeadFormCallToActionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LeadFormCallToActionTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.LeadFormCallToActionTypeEnum;

                        /**
                         * Verifies a LeadFormCallToActionTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LeadFormCallToActionTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns LeadFormCallToActionTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.LeadFormCallToActionTypeEnum;

                        /**
                         * Creates a plain object from a LeadFormCallToActionTypeEnum message. Also converts values to other types if specified.
                         * @param m LeadFormCallToActionTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.LeadFormCallToActionTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LeadFormCallToActionTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ILeadFormDesiredIntentEnum): google.ads.googleads.v8.enums.LeadFormDesiredIntentEnum;

                        /**
                         * Encodes the specified LeadFormDesiredIntentEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.LeadFormDesiredIntentEnum.verify|verify} messages.
                         * @param m LeadFormDesiredIntentEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ILeadFormDesiredIntentEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LeadFormDesiredIntentEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ILeadFormDesiredIntentEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LeadFormDesiredIntentEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.LeadFormDesiredIntentEnum;

                        /**
                         * Verifies a LeadFormDesiredIntentEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LeadFormDesiredIntentEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns LeadFormDesiredIntentEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.LeadFormDesiredIntentEnum;

                        /**
                         * Creates a plain object from a LeadFormDesiredIntentEnum message. Also converts values to other types if specified.
                         * @param m LeadFormDesiredIntentEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.LeadFormDesiredIntentEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LeadFormDesiredIntentEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ILeadFormFieldUserInputTypeEnum): google.ads.googleads.v8.enums.LeadFormFieldUserInputTypeEnum;

                        /**
                         * Encodes the specified LeadFormFieldUserInputTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.LeadFormFieldUserInputTypeEnum.verify|verify} messages.
                         * @param m LeadFormFieldUserInputTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ILeadFormFieldUserInputTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LeadFormFieldUserInputTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ILeadFormFieldUserInputTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LeadFormFieldUserInputTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.LeadFormFieldUserInputTypeEnum;

                        /**
                         * Verifies a LeadFormFieldUserInputTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LeadFormFieldUserInputTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns LeadFormFieldUserInputTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.LeadFormFieldUserInputTypeEnum;

                        /**
                         * Creates a plain object from a LeadFormFieldUserInputTypeEnum message. Also converts values to other types if specified.
                         * @param m LeadFormFieldUserInputTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.LeadFormFieldUserInputTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LeadFormFieldUserInputTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace LeadFormFieldUserInputTypeEnum {

                        /** LeadFormFieldUserInputType enum. */
                        enum LeadFormFieldUserInputType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            FULL_NAME = 2,
                            EMAIL = 3,
                            PHONE_NUMBER = 4,
                            POSTAL_CODE = 5,
                            CITY = 9,
                            REGION = 10,
                            COUNTRY = 11,
                            WORK_EMAIL = 12,
                            COMPANY_NAME = 13,
                            WORK_PHONE = 14,
                            JOB_TITLE = 15,
                            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,
                            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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ILeadFormPostSubmitCallToActionTypeEnum): google.ads.googleads.v8.enums.LeadFormPostSubmitCallToActionTypeEnum;

                        /**
                         * Encodes the specified LeadFormPostSubmitCallToActionTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.LeadFormPostSubmitCallToActionTypeEnum.verify|verify} messages.
                         * @param m LeadFormPostSubmitCallToActionTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ILeadFormPostSubmitCallToActionTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LeadFormPostSubmitCallToActionTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ILeadFormPostSubmitCallToActionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LeadFormPostSubmitCallToActionTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.LeadFormPostSubmitCallToActionTypeEnum;

                        /**
                         * Verifies a LeadFormPostSubmitCallToActionTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LeadFormPostSubmitCallToActionTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns LeadFormPostSubmitCallToActionTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.LeadFormPostSubmitCallToActionTypeEnum;

                        /**
                         * Creates a plain object from a LeadFormPostSubmitCallToActionTypeEnum message. Also converts values to other types if specified.
                         * @param m LeadFormPostSubmitCallToActionTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.LeadFormPostSubmitCallToActionTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LeadFormPostSubmitCallToActionTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace LeadFormPostSubmitCallToActionTypeEnum {

                        /** LeadFormPostSubmitCallToActionType enum. */
                        enum LeadFormPostSubmitCallToActionType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            VISIT_SITE = 2,
                            DOWNLOAD = 3,
                            LEARN_MORE = 4,
                            SHOP_NOW = 5
                        }
                    }

                    /** Properties of a PromotionExtensionDiscountModifierEnum. */
                    interface IPromotionExtensionDiscountModifierEnum {
                    }

                    /** Represents a PromotionExtensionDiscountModifierEnum. */
                    class PromotionExtensionDiscountModifierEnum implements IPromotionExtensionDiscountModifierEnum {

                        /**
                         * Constructs a new PromotionExtensionDiscountModifierEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IPromotionExtensionDiscountModifierEnum): google.ads.googleads.v8.enums.PromotionExtensionDiscountModifierEnum;

                        /**
                         * Encodes the specified PromotionExtensionDiscountModifierEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.PromotionExtensionDiscountModifierEnum.verify|verify} messages.
                         * @param m PromotionExtensionDiscountModifierEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IPromotionExtensionDiscountModifierEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PromotionExtensionDiscountModifierEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IPromotionExtensionDiscountModifierEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PromotionExtensionDiscountModifierEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.PromotionExtensionDiscountModifierEnum;

                        /**
                         * Verifies a PromotionExtensionDiscountModifierEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PromotionExtensionDiscountModifierEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PromotionExtensionDiscountModifierEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.PromotionExtensionDiscountModifierEnum;

                        /**
                         * Creates a plain object from a PromotionExtensionDiscountModifierEnum message. Also converts values to other types if specified.
                         * @param m PromotionExtensionDiscountModifierEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.PromotionExtensionDiscountModifierEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PromotionExtensionDiscountModifierEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IPromotionExtensionOccasionEnum): google.ads.googleads.v8.enums.PromotionExtensionOccasionEnum;

                        /**
                         * Encodes the specified PromotionExtensionOccasionEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.PromotionExtensionOccasionEnum.verify|verify} messages.
                         * @param m PromotionExtensionOccasionEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IPromotionExtensionOccasionEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PromotionExtensionOccasionEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IPromotionExtensionOccasionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PromotionExtensionOccasionEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.PromotionExtensionOccasionEnum;

                        /**
                         * Verifies a PromotionExtensionOccasionEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PromotionExtensionOccasionEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PromotionExtensionOccasionEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.PromotionExtensionOccasionEnum;

                        /**
                         * Creates a plain object from a PromotionExtensionOccasionEnum message. Also converts values to other types if specified.
                         * @param m PromotionExtensionOccasionEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.PromotionExtensionOccasionEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PromotionExtensionOccasionEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 a TargetImpressionShareLocationEnum. */
                    interface ITargetImpressionShareLocationEnum {
                    }

                    /** Represents a TargetImpressionShareLocationEnum. */
                    class TargetImpressionShareLocationEnum implements ITargetImpressionShareLocationEnum {

                        /**
                         * Constructs a new TargetImpressionShareLocationEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ITargetImpressionShareLocationEnum): google.ads.googleads.v8.enums.TargetImpressionShareLocationEnum;

                        /**
                         * Encodes the specified TargetImpressionShareLocationEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.TargetImpressionShareLocationEnum.verify|verify} messages.
                         * @param m TargetImpressionShareLocationEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ITargetImpressionShareLocationEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetImpressionShareLocationEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ITargetImpressionShareLocationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetImpressionShareLocationEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.TargetImpressionShareLocationEnum;

                        /**
                         * Verifies a TargetImpressionShareLocationEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetImpressionShareLocationEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TargetImpressionShareLocationEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.TargetImpressionShareLocationEnum;

                        /**
                         * Creates a plain object from a TargetImpressionShareLocationEnum message. Also converts values to other types if specified.
                         * @param m TargetImpressionShareLocationEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.TargetImpressionShareLocationEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetImpressionShareLocationEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 an AdvertisingChannelSubTypeEnum. */
                    interface IAdvertisingChannelSubTypeEnum {
                    }

                    /** Represents an AdvertisingChannelSubTypeEnum. */
                    class AdvertisingChannelSubTypeEnum implements IAdvertisingChannelSubTypeEnum {

                        /**
                         * Constructs a new AdvertisingChannelSubTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAdvertisingChannelSubTypeEnum): google.ads.googleads.v8.enums.AdvertisingChannelSubTypeEnum;

                        /**
                         * Encodes the specified AdvertisingChannelSubTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AdvertisingChannelSubTypeEnum.verify|verify} messages.
                         * @param m AdvertisingChannelSubTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAdvertisingChannelSubTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdvertisingChannelSubTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAdvertisingChannelSubTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdvertisingChannelSubTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AdvertisingChannelSubTypeEnum;

                        /**
                         * Verifies an AdvertisingChannelSubTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdvertisingChannelSubTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdvertisingChannelSubTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AdvertisingChannelSubTypeEnum;

                        /**
                         * Creates a plain object from an AdvertisingChannelSubTypeEnum message. Also converts values to other types if specified.
                         * @param m AdvertisingChannelSubTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AdvertisingChannelSubTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdvertisingChannelSubTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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_OUTSTREAM = 9,
                            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
                        }
                    }

                    /** Properties of an AdvertisingChannelTypeEnum. */
                    interface IAdvertisingChannelTypeEnum {
                    }

                    /** Represents an AdvertisingChannelTypeEnum. */
                    class AdvertisingChannelTypeEnum implements IAdvertisingChannelTypeEnum {

                        /**
                         * Constructs a new AdvertisingChannelTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAdvertisingChannelTypeEnum): google.ads.googleads.v8.enums.AdvertisingChannelTypeEnum;

                        /**
                         * Encodes the specified AdvertisingChannelTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AdvertisingChannelTypeEnum.verify|verify} messages.
                         * @param m AdvertisingChannelTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAdvertisingChannelTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdvertisingChannelTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAdvertisingChannelTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdvertisingChannelTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AdvertisingChannelTypeEnum;

                        /**
                         * Verifies an AdvertisingChannelTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdvertisingChannelTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdvertisingChannelTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AdvertisingChannelTypeEnum;

                        /**
                         * Creates a plain object from an AdvertisingChannelTypeEnum message. Also converts values to other types if specified.
                         * @param m AdvertisingChannelTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AdvertisingChannelTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdvertisingChannelTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a CriterionCategoryChannelAvailabilityModeEnum. */
                    interface ICriterionCategoryChannelAvailabilityModeEnum {
                    }

                    /** Represents a CriterionCategoryChannelAvailabilityModeEnum. */
                    class CriterionCategoryChannelAvailabilityModeEnum implements ICriterionCategoryChannelAvailabilityModeEnum {

                        /**
                         * Constructs a new CriterionCategoryChannelAvailabilityModeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ICriterionCategoryChannelAvailabilityModeEnum): google.ads.googleads.v8.enums.CriterionCategoryChannelAvailabilityModeEnum;

                        /**
                         * Encodes the specified CriterionCategoryChannelAvailabilityModeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CriterionCategoryChannelAvailabilityModeEnum.verify|verify} messages.
                         * @param m CriterionCategoryChannelAvailabilityModeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICriterionCategoryChannelAvailabilityModeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CriterionCategoryChannelAvailabilityModeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ICriterionCategoryChannelAvailabilityModeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CriterionCategoryChannelAvailabilityModeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.CriterionCategoryChannelAvailabilityModeEnum;

                        /**
                         * Verifies a CriterionCategoryChannelAvailabilityModeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CriterionCategoryChannelAvailabilityModeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CriterionCategoryChannelAvailabilityModeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CriterionCategoryChannelAvailabilityModeEnum;

                        /**
                         * Creates a plain object from a CriterionCategoryChannelAvailabilityModeEnum message. Also converts values to other types if specified.
                         * @param m CriterionCategoryChannelAvailabilityModeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CriterionCategoryChannelAvailabilityModeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CriterionCategoryChannelAvailabilityModeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ICriterionCategoryLocaleAvailabilityModeEnum): google.ads.googleads.v8.enums.CriterionCategoryLocaleAvailabilityModeEnum;

                        /**
                         * Encodes the specified CriterionCategoryLocaleAvailabilityModeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CriterionCategoryLocaleAvailabilityModeEnum.verify|verify} messages.
                         * @param m CriterionCategoryLocaleAvailabilityModeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICriterionCategoryLocaleAvailabilityModeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CriterionCategoryLocaleAvailabilityModeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ICriterionCategoryLocaleAvailabilityModeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CriterionCategoryLocaleAvailabilityModeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.CriterionCategoryLocaleAvailabilityModeEnum;

                        /**
                         * Verifies a CriterionCategoryLocaleAvailabilityModeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CriterionCategoryLocaleAvailabilityModeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CriterionCategoryLocaleAvailabilityModeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CriterionCategoryLocaleAvailabilityModeEnum;

                        /**
                         * Creates a plain object from a CriterionCategoryLocaleAvailabilityModeEnum message. Also converts values to other types if specified.
                         * @param m CriterionCategoryLocaleAvailabilityModeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CriterionCategoryLocaleAvailabilityModeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CriterionCategoryLocaleAvailabilityModeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 MonthOfYearEnum. */
                    interface IMonthOfYearEnum {
                    }

                    /** Represents a MonthOfYearEnum. */
                    class MonthOfYearEnum implements IMonthOfYearEnum {

                        /**
                         * Constructs a new MonthOfYearEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IMonthOfYearEnum): google.ads.googleads.v8.enums.MonthOfYearEnum;

                        /**
                         * Encodes the specified MonthOfYearEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.MonthOfYearEnum.verify|verify} messages.
                         * @param m MonthOfYearEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IMonthOfYearEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MonthOfYearEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IMonthOfYearEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MonthOfYearEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.MonthOfYearEnum;

                        /**
                         * Verifies a MonthOfYearEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MonthOfYearEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MonthOfYearEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.MonthOfYearEnum;

                        /**
                         * Creates a plain object from a MonthOfYearEnum message. Also converts values to other types if specified.
                         * @param m MonthOfYearEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.MonthOfYearEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MonthOfYearEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 AppStoreEnum. */
                    interface IAppStoreEnum {
                    }

                    /** Represents an AppStoreEnum. */
                    class AppStoreEnum implements IAppStoreEnum {

                        /**
                         * Constructs a new AppStoreEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IAppStoreEnum);

                        /**
                         * Creates a new AppStoreEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AppStoreEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IAppStoreEnum): google.ads.googleads.v8.enums.AppStoreEnum;

                        /**
                         * Encodes the specified AppStoreEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AppStoreEnum.verify|verify} messages.
                         * @param m AppStoreEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAppStoreEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AppStoreEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.AppStoreEnum.verify|verify} messages.
                         * @param message AppStoreEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IAppStoreEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AppStoreEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns AppStoreEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.AppStoreEnum;

                        /**
                         * Decodes an AppStoreEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AppStoreEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.AppStoreEnum;

                        /**
                         * Verifies an AppStoreEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AppStoreEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AppStoreEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AppStoreEnum;

                        /**
                         * Creates a plain object from an AppStoreEnum message. Also converts values to other types if specified.
                         * @param m AppStoreEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AppStoreEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AppStoreEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace AppStoreEnum {

                        /** AppStore enum. */
                        enum AppStore {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            APPLE_ITUNES = 2,
                            GOOGLE_PLAY = 3
                        }
                    }

                    /** Properties of a PriceExtensionPriceQualifierEnum. */
                    interface IPriceExtensionPriceQualifierEnum {
                    }

                    /** Represents a PriceExtensionPriceQualifierEnum. */
                    class PriceExtensionPriceQualifierEnum implements IPriceExtensionPriceQualifierEnum {

                        /**
                         * Constructs a new PriceExtensionPriceQualifierEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IPriceExtensionPriceQualifierEnum): google.ads.googleads.v8.enums.PriceExtensionPriceQualifierEnum;

                        /**
                         * Encodes the specified PriceExtensionPriceQualifierEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.PriceExtensionPriceQualifierEnum.verify|verify} messages.
                         * @param m PriceExtensionPriceQualifierEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IPriceExtensionPriceQualifierEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PriceExtensionPriceQualifierEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IPriceExtensionPriceQualifierEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PriceExtensionPriceQualifierEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.PriceExtensionPriceQualifierEnum;

                        /**
                         * Verifies a PriceExtensionPriceQualifierEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PriceExtensionPriceQualifierEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PriceExtensionPriceQualifierEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.PriceExtensionPriceQualifierEnum;

                        /**
                         * Creates a plain object from a PriceExtensionPriceQualifierEnum message. Also converts values to other types if specified.
                         * @param m PriceExtensionPriceQualifierEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.PriceExtensionPriceQualifierEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PriceExtensionPriceQualifierEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IPriceExtensionPriceUnitEnum): google.ads.googleads.v8.enums.PriceExtensionPriceUnitEnum;

                        /**
                         * Encodes the specified PriceExtensionPriceUnitEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.PriceExtensionPriceUnitEnum.verify|verify} messages.
                         * @param m PriceExtensionPriceUnitEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IPriceExtensionPriceUnitEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PriceExtensionPriceUnitEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IPriceExtensionPriceUnitEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PriceExtensionPriceUnitEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.PriceExtensionPriceUnitEnum;

                        /**
                         * Verifies a PriceExtensionPriceUnitEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PriceExtensionPriceUnitEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PriceExtensionPriceUnitEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.PriceExtensionPriceUnitEnum;

                        /**
                         * Creates a plain object from a PriceExtensionPriceUnitEnum message. Also converts values to other types if specified.
                         * @param m PriceExtensionPriceUnitEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.PriceExtensionPriceUnitEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PriceExtensionPriceUnitEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IPriceExtensionTypeEnum): google.ads.googleads.v8.enums.PriceExtensionTypeEnum;

                        /**
                         * Encodes the specified PriceExtensionTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.PriceExtensionTypeEnum.verify|verify} messages.
                         * @param m PriceExtensionTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IPriceExtensionTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PriceExtensionTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IPriceExtensionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PriceExtensionTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.PriceExtensionTypeEnum;

                        /**
                         * Verifies a PriceExtensionTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PriceExtensionTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PriceExtensionTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.PriceExtensionTypeEnum;

                        /**
                         * Creates a plain object from a PriceExtensionTypeEnum message. Also converts values to other types if specified.
                         * @param m PriceExtensionTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.PriceExtensionTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PriceExtensionTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 FeedItemSetStringFilterTypeEnum. */
                    interface IFeedItemSetStringFilterTypeEnum {
                    }

                    /** Represents a FeedItemSetStringFilterTypeEnum. */
                    class FeedItemSetStringFilterTypeEnum implements IFeedItemSetStringFilterTypeEnum {

                        /**
                         * Constructs a new FeedItemSetStringFilterTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IFeedItemSetStringFilterTypeEnum);

                        /**
                         * Creates a new FeedItemSetStringFilterTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedItemSetStringFilterTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IFeedItemSetStringFilterTypeEnum): google.ads.googleads.v8.enums.FeedItemSetStringFilterTypeEnum;

                        /**
                         * Encodes the specified FeedItemSetStringFilterTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.FeedItemSetStringFilterTypeEnum.verify|verify} messages.
                         * @param m FeedItemSetStringFilterTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IFeedItemSetStringFilterTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemSetStringFilterTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.FeedItemSetStringFilterTypeEnum.verify|verify} messages.
                         * @param message FeedItemSetStringFilterTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IFeedItemSetStringFilterTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemSetStringFilterTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedItemSetStringFilterTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.FeedItemSetStringFilterTypeEnum;

                        /**
                         * Decodes a FeedItemSetStringFilterTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedItemSetStringFilterTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.FeedItemSetStringFilterTypeEnum;

                        /**
                         * Verifies a FeedItemSetStringFilterTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemSetStringFilterTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedItemSetStringFilterTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.FeedItemSetStringFilterTypeEnum;

                        /**
                         * Creates a plain object from a FeedItemSetStringFilterTypeEnum message. Also converts values to other types if specified.
                         * @param m FeedItemSetStringFilterTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.FeedItemSetStringFilterTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemSetStringFilterTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace FeedItemSetStringFilterTypeEnum {

                        /** FeedItemSetStringFilterType enum. */
                        enum FeedItemSetStringFilterType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            EXACT = 2
                        }
                    }

                    /** Properties of an AppUrlOperatingSystemTypeEnum. */
                    interface IAppUrlOperatingSystemTypeEnum {
                    }

                    /** Represents an AppUrlOperatingSystemTypeEnum. */
                    class AppUrlOperatingSystemTypeEnum implements IAppUrlOperatingSystemTypeEnum {

                        /**
                         * Constructs a new AppUrlOperatingSystemTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAppUrlOperatingSystemTypeEnum): google.ads.googleads.v8.enums.AppUrlOperatingSystemTypeEnum;

                        /**
                         * Encodes the specified AppUrlOperatingSystemTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AppUrlOperatingSystemTypeEnum.verify|verify} messages.
                         * @param m AppUrlOperatingSystemTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAppUrlOperatingSystemTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AppUrlOperatingSystemTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAppUrlOperatingSystemTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AppUrlOperatingSystemTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AppUrlOperatingSystemTypeEnum;

                        /**
                         * Verifies an AppUrlOperatingSystemTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AppUrlOperatingSystemTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AppUrlOperatingSystemTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AppUrlOperatingSystemTypeEnum;

                        /**
                         * Creates a plain object from an AppUrlOperatingSystemTypeEnum message. Also converts values to other types if specified.
                         * @param m AppUrlOperatingSystemTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AppUrlOperatingSystemTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AppUrlOperatingSystemTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IFrequencyCapEventTypeEnum): google.ads.googleads.v8.enums.FrequencyCapEventTypeEnum;

                        /**
                         * Encodes the specified FrequencyCapEventTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.FrequencyCapEventTypeEnum.verify|verify} messages.
                         * @param m FrequencyCapEventTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IFrequencyCapEventTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FrequencyCapEventTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IFrequencyCapEventTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FrequencyCapEventTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.FrequencyCapEventTypeEnum;

                        /**
                         * Verifies a FrequencyCapEventTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FrequencyCapEventTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FrequencyCapEventTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.FrequencyCapEventTypeEnum;

                        /**
                         * Creates a plain object from a FrequencyCapEventTypeEnum message. Also converts values to other types if specified.
                         * @param m FrequencyCapEventTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.FrequencyCapEventTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FrequencyCapEventTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IFrequencyCapLevelEnum): google.ads.googleads.v8.enums.FrequencyCapLevelEnum;

                        /**
                         * Encodes the specified FrequencyCapLevelEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.FrequencyCapLevelEnum.verify|verify} messages.
                         * @param m FrequencyCapLevelEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IFrequencyCapLevelEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FrequencyCapLevelEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IFrequencyCapLevelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FrequencyCapLevelEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.FrequencyCapLevelEnum;

                        /**
                         * Verifies a FrequencyCapLevelEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FrequencyCapLevelEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FrequencyCapLevelEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.FrequencyCapLevelEnum;

                        /**
                         * Creates a plain object from a FrequencyCapLevelEnum message. Also converts values to other types if specified.
                         * @param m FrequencyCapLevelEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.FrequencyCapLevelEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FrequencyCapLevelEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IFrequencyCapTimeUnitEnum): google.ads.googleads.v8.enums.FrequencyCapTimeUnitEnum;

                        /**
                         * Encodes the specified FrequencyCapTimeUnitEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.FrequencyCapTimeUnitEnum.verify|verify} messages.
                         * @param m FrequencyCapTimeUnitEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IFrequencyCapTimeUnitEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FrequencyCapTimeUnitEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IFrequencyCapTimeUnitEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FrequencyCapTimeUnitEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.FrequencyCapTimeUnitEnum;

                        /**
                         * Verifies a FrequencyCapTimeUnitEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FrequencyCapTimeUnitEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FrequencyCapTimeUnitEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.FrequencyCapTimeUnitEnum;

                        /**
                         * Creates a plain object from a FrequencyCapTimeUnitEnum message. Also converts values to other types if specified.
                         * @param m FrequencyCapTimeUnitEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.FrequencyCapTimeUnitEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FrequencyCapTimeUnitEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IKeywordPlanAggregateMetricTypeEnum): google.ads.googleads.v8.enums.KeywordPlanAggregateMetricTypeEnum;

                        /**
                         * Encodes the specified KeywordPlanAggregateMetricTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.KeywordPlanAggregateMetricTypeEnum.verify|verify} messages.
                         * @param m KeywordPlanAggregateMetricTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IKeywordPlanAggregateMetricTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanAggregateMetricTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IKeywordPlanAggregateMetricTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanAggregateMetricTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.KeywordPlanAggregateMetricTypeEnum;

                        /**
                         * Verifies a KeywordPlanAggregateMetricTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanAggregateMetricTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanAggregateMetricTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.KeywordPlanAggregateMetricTypeEnum;

                        /**
                         * Creates a plain object from a KeywordPlanAggregateMetricTypeEnum message. Also converts values to other types if specified.
                         * @param m KeywordPlanAggregateMetricTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.KeywordPlanAggregateMetricTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanAggregateMetricTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IKeywordPlanCompetitionLevelEnum): google.ads.googleads.v8.enums.KeywordPlanCompetitionLevelEnum;

                        /**
                         * Encodes the specified KeywordPlanCompetitionLevelEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.KeywordPlanCompetitionLevelEnum.verify|verify} messages.
                         * @param m KeywordPlanCompetitionLevelEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IKeywordPlanCompetitionLevelEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanCompetitionLevelEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IKeywordPlanCompetitionLevelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanCompetitionLevelEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.KeywordPlanCompetitionLevelEnum;

                        /**
                         * Verifies a KeywordPlanCompetitionLevelEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanCompetitionLevelEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanCompetitionLevelEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.KeywordPlanCompetitionLevelEnum;

                        /**
                         * Creates a plain object from a KeywordPlanCompetitionLevelEnum message. Also converts values to other types if specified.
                         * @param m KeywordPlanCompetitionLevelEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.KeywordPlanCompetitionLevelEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanCompetitionLevelEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IKeywordPlanConceptGroupTypeEnum): google.ads.googleads.v8.enums.KeywordPlanConceptGroupTypeEnum;

                        /**
                         * Encodes the specified KeywordPlanConceptGroupTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.KeywordPlanConceptGroupTypeEnum.verify|verify} messages.
                         * @param m KeywordPlanConceptGroupTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IKeywordPlanConceptGroupTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanConceptGroupTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IKeywordPlanConceptGroupTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanConceptGroupTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.KeywordPlanConceptGroupTypeEnum;

                        /**
                         * Verifies a KeywordPlanConceptGroupTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanConceptGroupTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanConceptGroupTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.KeywordPlanConceptGroupTypeEnum;

                        /**
                         * Creates a plain object from a KeywordPlanConceptGroupTypeEnum message. Also converts values to other types if specified.
                         * @param m KeywordPlanConceptGroupTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.KeywordPlanConceptGroupTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanConceptGroupTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace KeywordPlanConceptGroupTypeEnum {

                        /** KeywordPlanConceptGroupType enum. */
                        enum KeywordPlanConceptGroupType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            BRAND = 2,
                            OTHER_BRANDS = 3,
                            NON_BRAND = 4
                        }
                    }

                    /** Properties of a MatchingFunctionContextTypeEnum. */
                    interface IMatchingFunctionContextTypeEnum {
                    }

                    /** Represents a MatchingFunctionContextTypeEnum. */
                    class MatchingFunctionContextTypeEnum implements IMatchingFunctionContextTypeEnum {

                        /**
                         * Constructs a new MatchingFunctionContextTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IMatchingFunctionContextTypeEnum);

                        /**
                         * Creates a new MatchingFunctionContextTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MatchingFunctionContextTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IMatchingFunctionContextTypeEnum): google.ads.googleads.v8.enums.MatchingFunctionContextTypeEnum;

                        /**
                         * Encodes the specified MatchingFunctionContextTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.MatchingFunctionContextTypeEnum.verify|verify} messages.
                         * @param m MatchingFunctionContextTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IMatchingFunctionContextTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MatchingFunctionContextTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.MatchingFunctionContextTypeEnum.verify|verify} messages.
                         * @param message MatchingFunctionContextTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IMatchingFunctionContextTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MatchingFunctionContextTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MatchingFunctionContextTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.MatchingFunctionContextTypeEnum;

                        /**
                         * Decodes a MatchingFunctionContextTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MatchingFunctionContextTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.MatchingFunctionContextTypeEnum;

                        /**
                         * Verifies a MatchingFunctionContextTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MatchingFunctionContextTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MatchingFunctionContextTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.MatchingFunctionContextTypeEnum;

                        /**
                         * Creates a plain object from a MatchingFunctionContextTypeEnum message. Also converts values to other types if specified.
                         * @param m MatchingFunctionContextTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.MatchingFunctionContextTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MatchingFunctionContextTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace MatchingFunctionContextTypeEnum {

                        /** MatchingFunctionContextType enum. */
                        enum MatchingFunctionContextType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            FEED_ITEM_ID = 2,
                            DEVICE_NAME = 3,
                            FEED_ITEM_SET_ID = 4
                        }
                    }

                    /** Properties of a MatchingFunctionOperatorEnum. */
                    interface IMatchingFunctionOperatorEnum {
                    }

                    /** Represents a MatchingFunctionOperatorEnum. */
                    class MatchingFunctionOperatorEnum implements IMatchingFunctionOperatorEnum {

                        /**
                         * Constructs a new MatchingFunctionOperatorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IMatchingFunctionOperatorEnum);

                        /**
                         * Creates a new MatchingFunctionOperatorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MatchingFunctionOperatorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IMatchingFunctionOperatorEnum): google.ads.googleads.v8.enums.MatchingFunctionOperatorEnum;

                        /**
                         * Encodes the specified MatchingFunctionOperatorEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.MatchingFunctionOperatorEnum.verify|verify} messages.
                         * @param m MatchingFunctionOperatorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IMatchingFunctionOperatorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MatchingFunctionOperatorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.MatchingFunctionOperatorEnum.verify|verify} messages.
                         * @param message MatchingFunctionOperatorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IMatchingFunctionOperatorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MatchingFunctionOperatorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MatchingFunctionOperatorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.MatchingFunctionOperatorEnum;

                        /**
                         * Decodes a MatchingFunctionOperatorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MatchingFunctionOperatorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.MatchingFunctionOperatorEnum;

                        /**
                         * Verifies a MatchingFunctionOperatorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MatchingFunctionOperatorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MatchingFunctionOperatorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.MatchingFunctionOperatorEnum;

                        /**
                         * Creates a plain object from a MatchingFunctionOperatorEnum message. Also converts values to other types if specified.
                         * @param m MatchingFunctionOperatorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.MatchingFunctionOperatorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MatchingFunctionOperatorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace MatchingFunctionOperatorEnum {

                        /** MatchingFunctionOperator enum. */
                        enum MatchingFunctionOperator {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            IN = 2,
                            IDENTITY = 3,
                            EQUALS = 4,
                            AND = 5,
                            CONTAINS_ANY = 6
                        }
                    }

                    /** Properties of an InteractionEventTypeEnum. */
                    interface IInteractionEventTypeEnum {
                    }

                    /** Represents an InteractionEventTypeEnum. */
                    class InteractionEventTypeEnum implements IInteractionEventTypeEnum {

                        /**
                         * Constructs a new InteractionEventTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IInteractionEventTypeEnum): google.ads.googleads.v8.enums.InteractionEventTypeEnum;

                        /**
                         * Encodes the specified InteractionEventTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.InteractionEventTypeEnum.verify|verify} messages.
                         * @param m InteractionEventTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IInteractionEventTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified InteractionEventTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IInteractionEventTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an InteractionEventTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.InteractionEventTypeEnum;

                        /**
                         * Verifies an InteractionEventTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an InteractionEventTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns InteractionEventTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.InteractionEventTypeEnum;

                        /**
                         * Creates a plain object from an InteractionEventTypeEnum message. Also converts values to other types if specified.
                         * @param m InteractionEventTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.InteractionEventTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this InteractionEventTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IQualityScoreBucketEnum): google.ads.googleads.v8.enums.QualityScoreBucketEnum;

                        /**
                         * Encodes the specified QualityScoreBucketEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.QualityScoreBucketEnum.verify|verify} messages.
                         * @param m QualityScoreBucketEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IQualityScoreBucketEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified QualityScoreBucketEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IQualityScoreBucketEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a QualityScoreBucketEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.QualityScoreBucketEnum;

                        /**
                         * Verifies a QualityScoreBucketEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a QualityScoreBucketEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns QualityScoreBucketEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.QualityScoreBucketEnum;

                        /**
                         * Creates a plain object from a QualityScoreBucketEnum message. Also converts values to other types if specified.
                         * @param m QualityScoreBucketEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.QualityScoreBucketEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this QualityScoreBucketEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IUserIdentifierSourceEnum): google.ads.googleads.v8.enums.UserIdentifierSourceEnum;

                        /**
                         * Encodes the specified UserIdentifierSourceEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.UserIdentifierSourceEnum.verify|verify} messages.
                         * @param m UserIdentifierSourceEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IUserIdentifierSourceEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserIdentifierSourceEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IUserIdentifierSourceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserIdentifierSourceEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.UserIdentifierSourceEnum;

                        /**
                         * Verifies a UserIdentifierSourceEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserIdentifierSourceEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserIdentifierSourceEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.UserIdentifierSourceEnum;

                        /**
                         * Creates a plain object from a UserIdentifierSourceEnum message. Also converts values to other types if specified.
                         * @param m UserIdentifierSourceEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.UserIdentifierSourceEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserIdentifierSourceEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAdDestinationTypeEnum): google.ads.googleads.v8.enums.AdDestinationTypeEnum;

                        /**
                         * Encodes the specified AdDestinationTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AdDestinationTypeEnum.verify|verify} messages.
                         * @param m AdDestinationTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAdDestinationTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdDestinationTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAdDestinationTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdDestinationTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AdDestinationTypeEnum;

                        /**
                         * Verifies an AdDestinationTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdDestinationTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdDestinationTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AdDestinationTypeEnum;

                        /**
                         * Creates a plain object from an AdDestinationTypeEnum message. Also converts values to other types if specified.
                         * @param m AdDestinationTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AdDestinationTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdDestinationTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 AdNetworkTypeEnum. */
                    interface IAdNetworkTypeEnum {
                    }

                    /** Represents an AdNetworkTypeEnum. */
                    class AdNetworkTypeEnum implements IAdNetworkTypeEnum {

                        /**
                         * Constructs a new AdNetworkTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAdNetworkTypeEnum): google.ads.googleads.v8.enums.AdNetworkTypeEnum;

                        /**
                         * Encodes the specified AdNetworkTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AdNetworkTypeEnum.verify|verify} messages.
                         * @param m AdNetworkTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAdNetworkTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdNetworkTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAdNetworkTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdNetworkTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AdNetworkTypeEnum;

                        /**
                         * Verifies an AdNetworkTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdNetworkTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdNetworkTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AdNetworkTypeEnum;

                        /**
                         * Creates a plain object from an AdNetworkTypeEnum message. Also converts values to other types if specified.
                         * @param m AdNetworkTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AdNetworkTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdNetworkTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace AdNetworkTypeEnum {

                        /** AdNetworkType enum. */
                        enum AdNetworkType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            SEARCH = 2,
                            SEARCH_PARTNERS = 3,
                            CONTENT = 4,
                            YOUTUBE_SEARCH = 5,
                            YOUTUBE_WATCH = 6,
                            MIXED = 7
                        }
                    }

                    /** Properties of a BudgetCampaignAssociationStatusEnum. */
                    interface IBudgetCampaignAssociationStatusEnum {
                    }

                    /** Represents a BudgetCampaignAssociationStatusEnum. */
                    class BudgetCampaignAssociationStatusEnum implements IBudgetCampaignAssociationStatusEnum {

                        /**
                         * Constructs a new BudgetCampaignAssociationStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IBudgetCampaignAssociationStatusEnum): google.ads.googleads.v8.enums.BudgetCampaignAssociationStatusEnum;

                        /**
                         * Encodes the specified BudgetCampaignAssociationStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.BudgetCampaignAssociationStatusEnum.verify|verify} messages.
                         * @param m BudgetCampaignAssociationStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IBudgetCampaignAssociationStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BudgetCampaignAssociationStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IBudgetCampaignAssociationStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BudgetCampaignAssociationStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.BudgetCampaignAssociationStatusEnum;

                        /**
                         * Verifies a BudgetCampaignAssociationStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BudgetCampaignAssociationStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BudgetCampaignAssociationStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.BudgetCampaignAssociationStatusEnum;

                        /**
                         * Creates a plain object from a BudgetCampaignAssociationStatusEnum message. Also converts values to other types if specified.
                         * @param m BudgetCampaignAssociationStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.BudgetCampaignAssociationStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BudgetCampaignAssociationStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IClickTypeEnum): google.ads.googleads.v8.enums.ClickTypeEnum;

                        /**
                         * Encodes the specified ClickTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ClickTypeEnum.verify|verify} messages.
                         * @param m ClickTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IClickTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ClickTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IClickTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ClickTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ClickTypeEnum;

                        /**
                         * Verifies a ClickTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ClickTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ClickTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ClickTypeEnum;

                        /**
                         * Creates a plain object from a ClickTypeEnum message. Also converts values to other types if specified.
                         * @param m ClickTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ClickTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ClickTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a ConversionActionCategoryEnum. */
                    interface IConversionActionCategoryEnum {
                    }

                    /** Represents a ConversionActionCategoryEnum. */
                    class ConversionActionCategoryEnum implements IConversionActionCategoryEnum {

                        /**
                         * Constructs a new ConversionActionCategoryEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IConversionActionCategoryEnum): google.ads.googleads.v8.enums.ConversionActionCategoryEnum;

                        /**
                         * Encodes the specified ConversionActionCategoryEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ConversionActionCategoryEnum.verify|verify} messages.
                         * @param m ConversionActionCategoryEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IConversionActionCategoryEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionActionCategoryEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IConversionActionCategoryEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionActionCategoryEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ConversionActionCategoryEnum;

                        /**
                         * Verifies a ConversionActionCategoryEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionActionCategoryEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionActionCategoryEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ConversionActionCategoryEnum;

                        /**
                         * Creates a plain object from a ConversionActionCategoryEnum message. Also converts values to other types if specified.
                         * @param m ConversionActionCategoryEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ConversionActionCategoryEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionActionCategoryEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace ConversionActionCategoryEnum {

                        /** ConversionActionCategory enum. */
                        enum ConversionActionCategory {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DEFAULT = 2,
                            PAGE_VIEW = 3,
                            PURCHASE = 4,
                            SIGNUP = 5,
                            LEAD = 6,
                            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
                        }
                    }

                    /** Properties of a ConversionAttributionEventTypeEnum. */
                    interface IConversionAttributionEventTypeEnum {
                    }

                    /** Represents a ConversionAttributionEventTypeEnum. */
                    class ConversionAttributionEventTypeEnum implements IConversionAttributionEventTypeEnum {

                        /**
                         * Constructs a new ConversionAttributionEventTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IConversionAttributionEventTypeEnum): google.ads.googleads.v8.enums.ConversionAttributionEventTypeEnum;

                        /**
                         * Encodes the specified ConversionAttributionEventTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ConversionAttributionEventTypeEnum.verify|verify} messages.
                         * @param m ConversionAttributionEventTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IConversionAttributionEventTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionAttributionEventTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IConversionAttributionEventTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionAttributionEventTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ConversionAttributionEventTypeEnum;

                        /**
                         * Verifies a ConversionAttributionEventTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionAttributionEventTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionAttributionEventTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ConversionAttributionEventTypeEnum;

                        /**
                         * Creates a plain object from a ConversionAttributionEventTypeEnum message. Also converts values to other types if specified.
                         * @param m ConversionAttributionEventTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ConversionAttributionEventTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionAttributionEventTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace ConversionAttributionEventTypeEnum {

                        /** ConversionAttributionEventType enum. */
                        enum ConversionAttributionEventType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            IMPRESSION = 2,
                            INTERACTION = 3
                        }
                    }

                    /** Properties of a ConversionLagBucketEnum. */
                    interface IConversionLagBucketEnum {
                    }

                    /** Represents a ConversionLagBucketEnum. */
                    class ConversionLagBucketEnum implements IConversionLagBucketEnum {

                        /**
                         * Constructs a new ConversionLagBucketEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IConversionLagBucketEnum): google.ads.googleads.v8.enums.ConversionLagBucketEnum;

                        /**
                         * Encodes the specified ConversionLagBucketEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ConversionLagBucketEnum.verify|verify} messages.
                         * @param m ConversionLagBucketEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IConversionLagBucketEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionLagBucketEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IConversionLagBucketEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionLagBucketEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ConversionLagBucketEnum;

                        /**
                         * Verifies a ConversionLagBucketEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionLagBucketEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionLagBucketEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ConversionLagBucketEnum;

                        /**
                         * Creates a plain object from a ConversionLagBucketEnum message. Also converts values to other types if specified.
                         * @param m ConversionLagBucketEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ConversionLagBucketEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionLagBucketEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IConversionOrAdjustmentLagBucketEnum): google.ads.googleads.v8.enums.ConversionOrAdjustmentLagBucketEnum;

                        /**
                         * Encodes the specified ConversionOrAdjustmentLagBucketEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ConversionOrAdjustmentLagBucketEnum.verify|verify} messages.
                         * @param m ConversionOrAdjustmentLagBucketEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IConversionOrAdjustmentLagBucketEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionOrAdjustmentLagBucketEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IConversionOrAdjustmentLagBucketEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionOrAdjustmentLagBucketEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ConversionOrAdjustmentLagBucketEnum;

                        /**
                         * Verifies a ConversionOrAdjustmentLagBucketEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionOrAdjustmentLagBucketEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionOrAdjustmentLagBucketEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ConversionOrAdjustmentLagBucketEnum;

                        /**
                         * Creates a plain object from a ConversionOrAdjustmentLagBucketEnum message. Also converts values to other types if specified.
                         * @param m ConversionOrAdjustmentLagBucketEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ConversionOrAdjustmentLagBucketEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionOrAdjustmentLagBucketEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IConversionValueRulePrimaryDimensionEnum): google.ads.googleads.v8.enums.ConversionValueRulePrimaryDimensionEnum;

                        /**
                         * Encodes the specified ConversionValueRulePrimaryDimensionEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ConversionValueRulePrimaryDimensionEnum.verify|verify} messages.
                         * @param m ConversionValueRulePrimaryDimensionEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IConversionValueRulePrimaryDimensionEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionValueRulePrimaryDimensionEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IConversionValueRulePrimaryDimensionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionValueRulePrimaryDimensionEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ConversionValueRulePrimaryDimensionEnum;

                        /**
                         * Verifies a ConversionValueRulePrimaryDimensionEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionValueRulePrimaryDimensionEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionValueRulePrimaryDimensionEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ConversionValueRulePrimaryDimensionEnum;

                        /**
                         * Creates a plain object from a ConversionValueRulePrimaryDimensionEnum message. Also converts values to other types if specified.
                         * @param m ConversionValueRulePrimaryDimensionEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ConversionValueRulePrimaryDimensionEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionValueRulePrimaryDimensionEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of an ExternalConversionSourceEnum. */
                    interface IExternalConversionSourceEnum {
                    }

                    /** Represents an ExternalConversionSourceEnum. */
                    class ExternalConversionSourceEnum implements IExternalConversionSourceEnum {

                        /**
                         * Constructs a new ExternalConversionSourceEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IExternalConversionSourceEnum): google.ads.googleads.v8.enums.ExternalConversionSourceEnum;

                        /**
                         * Encodes the specified ExternalConversionSourceEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ExternalConversionSourceEnum.verify|verify} messages.
                         * @param m ExternalConversionSourceEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IExternalConversionSourceEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExternalConversionSourceEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IExternalConversionSourceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExternalConversionSourceEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ExternalConversionSourceEnum;

                        /**
                         * Verifies an ExternalConversionSourceEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an ExternalConversionSourceEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ExternalConversionSourceEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ExternalConversionSourceEnum;

                        /**
                         * Creates a plain object from an ExternalConversionSourceEnum message. Also converts values to other types if specified.
                         * @param m ExternalConversionSourceEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ExternalConversionSourceEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExternalConversionSourceEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a HotelPriceBucketEnum. */
                    interface IHotelPriceBucketEnum {
                    }

                    /** Represents a HotelPriceBucketEnum. */
                    class HotelPriceBucketEnum implements IHotelPriceBucketEnum {

                        /**
                         * Constructs a new HotelPriceBucketEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IHotelPriceBucketEnum): google.ads.googleads.v8.enums.HotelPriceBucketEnum;

                        /**
                         * Encodes the specified HotelPriceBucketEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.HotelPriceBucketEnum.verify|verify} messages.
                         * @param m HotelPriceBucketEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IHotelPriceBucketEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelPriceBucketEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IHotelPriceBucketEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelPriceBucketEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.HotelPriceBucketEnum;

                        /**
                         * Verifies a HotelPriceBucketEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelPriceBucketEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns HotelPriceBucketEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.HotelPriceBucketEnum;

                        /**
                         * Creates a plain object from a HotelPriceBucketEnum message. Also converts values to other types if specified.
                         * @param m HotelPriceBucketEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.HotelPriceBucketEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelPriceBucketEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IHotelRateTypeEnum): google.ads.googleads.v8.enums.HotelRateTypeEnum;

                        /**
                         * Encodes the specified HotelRateTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.HotelRateTypeEnum.verify|verify} messages.
                         * @param m HotelRateTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IHotelRateTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelRateTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IHotelRateTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelRateTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.HotelRateTypeEnum;

                        /**
                         * Verifies a HotelRateTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelRateTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns HotelRateTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.HotelRateTypeEnum;

                        /**
                         * Creates a plain object from a HotelRateTypeEnum message. Also converts values to other types if specified.
                         * @param m HotelRateTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.HotelRateTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelRateTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace HotelRateTypeEnum {

                        /** HotelRateType enum. */
                        enum HotelRateType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            UNAVAILABLE = 2,
                            PUBLIC_RATE = 3,
                            QUALIFIED_RATE = 4,
                            PRIVATE_RATE = 5
                        }
                    }

                    /** Properties of a PlaceholderTypeEnum. */
                    interface IPlaceholderTypeEnum {
                    }

                    /** Represents a PlaceholderTypeEnum. */
                    class PlaceholderTypeEnum implements IPlaceholderTypeEnum {

                        /**
                         * Constructs a new PlaceholderTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IPlaceholderTypeEnum);

                        /**
                         * Creates a new PlaceholderTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PlaceholderTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IPlaceholderTypeEnum): google.ads.googleads.v8.enums.PlaceholderTypeEnum;

                        /**
                         * Encodes the specified PlaceholderTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.PlaceholderTypeEnum.verify|verify} messages.
                         * @param m PlaceholderTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IPlaceholderTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PlaceholderTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.PlaceholderTypeEnum.verify|verify} messages.
                         * @param message PlaceholderTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IPlaceholderTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PlaceholderTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns PlaceholderTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.PlaceholderTypeEnum;

                        /**
                         * Decodes a PlaceholderTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PlaceholderTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.PlaceholderTypeEnum;

                        /**
                         * Verifies a PlaceholderTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PlaceholderTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PlaceholderTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.PlaceholderTypeEnum;

                        /**
                         * Creates a plain object from a PlaceholderTypeEnum message. Also converts values to other types if specified.
                         * @param m PlaceholderTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.PlaceholderTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PlaceholderTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace PlaceholderTypeEnum {

                        /** PlaceholderType enum. */
                        enum PlaceholderType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            SITELINK = 2,
                            CALL = 3,
                            APP = 4,
                            LOCATION = 5,
                            AFFILIATE_LOCATION = 6,
                            CALLOUT = 7,
                            STRUCTURED_SNIPPET = 8,
                            MESSAGE = 9,
                            PRICE = 10,
                            PROMOTION = 11,
                            AD_CUSTOMIZER = 12,
                            DYNAMIC_EDUCATION = 13,
                            DYNAMIC_FLIGHT = 14,
                            DYNAMIC_CUSTOM = 15,
                            DYNAMIC_HOTEL = 16,
                            DYNAMIC_REAL_ESTATE = 17,
                            DYNAMIC_TRAVEL = 18,
                            DYNAMIC_LOCAL = 19,
                            DYNAMIC_JOB = 20,
                            IMAGE = 21
                        }
                    }

                    /** Properties of a RecommendationTypeEnum. */
                    interface IRecommendationTypeEnum {
                    }

                    /** Represents a RecommendationTypeEnum. */
                    class RecommendationTypeEnum implements IRecommendationTypeEnum {

                        /**
                         * Constructs a new RecommendationTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IRecommendationTypeEnum): google.ads.googleads.v8.enums.RecommendationTypeEnum;

                        /**
                         * Encodes the specified RecommendationTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.RecommendationTypeEnum.verify|verify} messages.
                         * @param m RecommendationTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IRecommendationTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RecommendationTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IRecommendationTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RecommendationTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.RecommendationTypeEnum;

                        /**
                         * Verifies a RecommendationTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RecommendationTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns RecommendationTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.RecommendationTypeEnum;

                        /**
                         * Creates a plain object from a RecommendationTypeEnum message. Also converts values to other types if specified.
                         * @param m RecommendationTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.RecommendationTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RecommendationTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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,
                            CALLOUT_EXTENSION = 11,
                            SITELINK_EXTENSION = 12,
                            CALL_EXTENSION = 13,
                            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
                        }
                    }

                    /** Properties of a SearchEngineResultsPageTypeEnum. */
                    interface ISearchEngineResultsPageTypeEnum {
                    }

                    /** Represents a SearchEngineResultsPageTypeEnum. */
                    class SearchEngineResultsPageTypeEnum implements ISearchEngineResultsPageTypeEnum {

                        /**
                         * Constructs a new SearchEngineResultsPageTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ISearchEngineResultsPageTypeEnum): google.ads.googleads.v8.enums.SearchEngineResultsPageTypeEnum;

                        /**
                         * Encodes the specified SearchEngineResultsPageTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.SearchEngineResultsPageTypeEnum.verify|verify} messages.
                         * @param m SearchEngineResultsPageTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ISearchEngineResultsPageTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchEngineResultsPageTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ISearchEngineResultsPageTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchEngineResultsPageTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.SearchEngineResultsPageTypeEnum;

                        /**
                         * Verifies a SearchEngineResultsPageTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchEngineResultsPageTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SearchEngineResultsPageTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.SearchEngineResultsPageTypeEnum;

                        /**
                         * Creates a plain object from a SearchEngineResultsPageTypeEnum message. Also converts values to other types if specified.
                         * @param m SearchEngineResultsPageTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.SearchEngineResultsPageTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchEngineResultsPageTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace SearchEngineResultsPageTypeEnum {

                        /** SearchEngineResultsPageType enum. */
                        enum SearchEngineResultsPageType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ADS_ONLY = 2,
                            ORGANIC_ONLY = 3,
                            ADS_AND_ORGANIC = 4
                        }
                    }

                    /** Properties of a SearchTermMatchTypeEnum. */
                    interface ISearchTermMatchTypeEnum {
                    }

                    /** Represents a SearchTermMatchTypeEnum. */
                    class SearchTermMatchTypeEnum implements ISearchTermMatchTypeEnum {

                        /**
                         * Constructs a new SearchTermMatchTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ISearchTermMatchTypeEnum): google.ads.googleads.v8.enums.SearchTermMatchTypeEnum;

                        /**
                         * Encodes the specified SearchTermMatchTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.SearchTermMatchTypeEnum.verify|verify} messages.
                         * @param m SearchTermMatchTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ISearchTermMatchTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchTermMatchTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ISearchTermMatchTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchTermMatchTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.SearchTermMatchTypeEnum;

                        /**
                         * Verifies a SearchTermMatchTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchTermMatchTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SearchTermMatchTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.SearchTermMatchTypeEnum;

                        /**
                         * Creates a plain object from a SearchTermMatchTypeEnum message. Also converts values to other types if specified.
                         * @param m SearchTermMatchTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.SearchTermMatchTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchTermMatchTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace SearchTermMatchTypeEnum {

                        /** SearchTermMatchType enum. */
                        enum SearchTermMatchType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            BROAD = 2,
                            EXACT = 3,
                            PHRASE = 4,
                            NEAR_EXACT = 5,
                            NEAR_PHRASE = 6
                        }
                    }

                    /** Properties of a SlotEnum. */
                    interface ISlotEnum {
                    }

                    /** Represents a SlotEnum. */
                    class SlotEnum implements ISlotEnum {

                        /**
                         * Constructs a new SlotEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ISlotEnum): google.ads.googleads.v8.enums.SlotEnum;

                        /**
                         * Encodes the specified SlotEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.SlotEnum.verify|verify} messages.
                         * @param m SlotEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ISlotEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SlotEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ISlotEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SlotEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.SlotEnum;

                        /**
                         * Verifies a SlotEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SlotEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SlotEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.SlotEnum;

                        /**
                         * Creates a plain object from a SlotEnum message. Also converts values to other types if specified.
                         * @param m SlotEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.SlotEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SlotEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 TrackingCodePageFormatEnum. */
                    interface ITrackingCodePageFormatEnum {
                    }

                    /** Represents a TrackingCodePageFormatEnum. */
                    class TrackingCodePageFormatEnum implements ITrackingCodePageFormatEnum {

                        /**
                         * Constructs a new TrackingCodePageFormatEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ITrackingCodePageFormatEnum): google.ads.googleads.v8.enums.TrackingCodePageFormatEnum;

                        /**
                         * Encodes the specified TrackingCodePageFormatEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.TrackingCodePageFormatEnum.verify|verify} messages.
                         * @param m TrackingCodePageFormatEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ITrackingCodePageFormatEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TrackingCodePageFormatEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ITrackingCodePageFormatEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TrackingCodePageFormatEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.TrackingCodePageFormatEnum;

                        /**
                         * Verifies a TrackingCodePageFormatEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TrackingCodePageFormatEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TrackingCodePageFormatEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.TrackingCodePageFormatEnum;

                        /**
                         * Creates a plain object from a TrackingCodePageFormatEnum message. Also converts values to other types if specified.
                         * @param m TrackingCodePageFormatEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.TrackingCodePageFormatEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TrackingCodePageFormatEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ITrackingCodeTypeEnum): google.ads.googleads.v8.enums.TrackingCodeTypeEnum;

                        /**
                         * Encodes the specified TrackingCodeTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.TrackingCodeTypeEnum.verify|verify} messages.
                         * @param m TrackingCodeTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ITrackingCodeTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TrackingCodeTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ITrackingCodeTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TrackingCodeTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.TrackingCodeTypeEnum;

                        /**
                         * Verifies a TrackingCodeTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TrackingCodeTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TrackingCodeTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.TrackingCodeTypeEnum;

                        /**
                         * Creates a plain object from a TrackingCodeTypeEnum message. Also converts values to other types if specified.
                         * @param m TrackingCodeTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.TrackingCodeTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TrackingCodeTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ITargetingDimensionEnum): google.ads.googleads.v8.enums.TargetingDimensionEnum;

                        /**
                         * Encodes the specified TargetingDimensionEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.TargetingDimensionEnum.verify|verify} messages.
                         * @param m TargetingDimensionEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ITargetingDimensionEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetingDimensionEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ITargetingDimensionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetingDimensionEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.TargetingDimensionEnum;

                        /**
                         * Verifies a TargetingDimensionEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetingDimensionEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TargetingDimensionEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.TargetingDimensionEnum;

                        /**
                         * Creates a plain object from a TargetingDimensionEnum message. Also converts values to other types if specified.
                         * @param m TargetingDimensionEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.TargetingDimensionEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetingDimensionEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 CustomerMatchUploadKeyTypeEnum. */
                    interface ICustomerMatchUploadKeyTypeEnum {
                    }

                    /** Represents a CustomerMatchUploadKeyTypeEnum. */
                    class CustomerMatchUploadKeyTypeEnum implements ICustomerMatchUploadKeyTypeEnum {

                        /**
                         * Constructs a new CustomerMatchUploadKeyTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ICustomerMatchUploadKeyTypeEnum): google.ads.googleads.v8.enums.CustomerMatchUploadKeyTypeEnum;

                        /**
                         * Encodes the specified CustomerMatchUploadKeyTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CustomerMatchUploadKeyTypeEnum.verify|verify} messages.
                         * @param m CustomerMatchUploadKeyTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICustomerMatchUploadKeyTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerMatchUploadKeyTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ICustomerMatchUploadKeyTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerMatchUploadKeyTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.CustomerMatchUploadKeyTypeEnum;

                        /**
                         * Verifies a CustomerMatchUploadKeyTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerMatchUploadKeyTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerMatchUploadKeyTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CustomerMatchUploadKeyTypeEnum;

                        /**
                         * Creates a plain object from a CustomerMatchUploadKeyTypeEnum message. Also converts values to other types if specified.
                         * @param m CustomerMatchUploadKeyTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CustomerMatchUploadKeyTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerMatchUploadKeyTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace CustomerMatchUploadKeyTypeEnum {

                        /** CustomerMatchUploadKeyType enum. */
                        enum CustomerMatchUploadKeyType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CONTACT_INFO = 2,
                            CRM_ID = 3,
                            MOBILE_ADVERTISING_ID = 4
                        }
                    }

                    /** Properties of a UserListCombinedRuleOperatorEnum. */
                    interface IUserListCombinedRuleOperatorEnum {
                    }

                    /** Represents a UserListCombinedRuleOperatorEnum. */
                    class UserListCombinedRuleOperatorEnum implements IUserListCombinedRuleOperatorEnum {

                        /**
                         * Constructs a new UserListCombinedRuleOperatorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IUserListCombinedRuleOperatorEnum);

                        /**
                         * Creates a new UserListCombinedRuleOperatorEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserListCombinedRuleOperatorEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IUserListCombinedRuleOperatorEnum): google.ads.googleads.v8.enums.UserListCombinedRuleOperatorEnum;

                        /**
                         * Encodes the specified UserListCombinedRuleOperatorEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.UserListCombinedRuleOperatorEnum.verify|verify} messages.
                         * @param m UserListCombinedRuleOperatorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IUserListCombinedRuleOperatorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListCombinedRuleOperatorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.UserListCombinedRuleOperatorEnum.verify|verify} messages.
                         * @param message UserListCombinedRuleOperatorEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IUserListCombinedRuleOperatorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListCombinedRuleOperatorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns UserListCombinedRuleOperatorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.UserListCombinedRuleOperatorEnum;

                        /**
                         * Decodes a UserListCombinedRuleOperatorEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserListCombinedRuleOperatorEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.UserListCombinedRuleOperatorEnum;

                        /**
                         * Verifies a UserListCombinedRuleOperatorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListCombinedRuleOperatorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserListCombinedRuleOperatorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.UserListCombinedRuleOperatorEnum;

                        /**
                         * Creates a plain object from a UserListCombinedRuleOperatorEnum message. Also converts values to other types if specified.
                         * @param m UserListCombinedRuleOperatorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.UserListCombinedRuleOperatorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListCombinedRuleOperatorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace UserListCombinedRuleOperatorEnum {

                        /** UserListCombinedRuleOperator enum. */
                        enum UserListCombinedRuleOperator {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AND = 2,
                            AND_NOT = 3
                        }
                    }

                    /** Properties of a UserListCrmDataSourceTypeEnum. */
                    interface IUserListCrmDataSourceTypeEnum {
                    }

                    /** Represents a UserListCrmDataSourceTypeEnum. */
                    class UserListCrmDataSourceTypeEnum implements IUserListCrmDataSourceTypeEnum {

                        /**
                         * Constructs a new UserListCrmDataSourceTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IUserListCrmDataSourceTypeEnum): google.ads.googleads.v8.enums.UserListCrmDataSourceTypeEnum;

                        /**
                         * Encodes the specified UserListCrmDataSourceTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.UserListCrmDataSourceTypeEnum.verify|verify} messages.
                         * @param m UserListCrmDataSourceTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IUserListCrmDataSourceTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListCrmDataSourceTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IUserListCrmDataSourceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListCrmDataSourceTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.UserListCrmDataSourceTypeEnum;

                        /**
                         * Verifies a UserListCrmDataSourceTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListCrmDataSourceTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserListCrmDataSourceTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.UserListCrmDataSourceTypeEnum;

                        /**
                         * Creates a plain object from a UserListCrmDataSourceTypeEnum message. Also converts values to other types if specified.
                         * @param m UserListCrmDataSourceTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.UserListCrmDataSourceTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListCrmDataSourceTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace UserListCrmDataSourceTypeEnum {

                        /** UserListCrmDataSourceType enum. */
                        enum UserListCrmDataSourceType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            FIRST_PARTY = 2,
                            THIRD_PARTY_CREDIT_BUREAU = 3,
                            THIRD_PARTY_VOTER_FILE = 4
                        }
                    }

                    /** Properties of a UserListDateRuleItemOperatorEnum. */
                    interface IUserListDateRuleItemOperatorEnum {
                    }

                    /** Represents a UserListDateRuleItemOperatorEnum. */
                    class UserListDateRuleItemOperatorEnum implements IUserListDateRuleItemOperatorEnum {

                        /**
                         * Constructs a new UserListDateRuleItemOperatorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IUserListDateRuleItemOperatorEnum): google.ads.googleads.v8.enums.UserListDateRuleItemOperatorEnum;

                        /**
                         * Encodes the specified UserListDateRuleItemOperatorEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.UserListDateRuleItemOperatorEnum.verify|verify} messages.
                         * @param m UserListDateRuleItemOperatorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IUserListDateRuleItemOperatorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListDateRuleItemOperatorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IUserListDateRuleItemOperatorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListDateRuleItemOperatorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.UserListDateRuleItemOperatorEnum;

                        /**
                         * Verifies a UserListDateRuleItemOperatorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListDateRuleItemOperatorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserListDateRuleItemOperatorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.UserListDateRuleItemOperatorEnum;

                        /**
                         * Creates a plain object from a UserListDateRuleItemOperatorEnum message. Also converts values to other types if specified.
                         * @param m UserListDateRuleItemOperatorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.UserListDateRuleItemOperatorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListDateRuleItemOperatorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace UserListDateRuleItemOperatorEnum {

                        /** UserListDateRuleItemOperator enum. */
                        enum UserListDateRuleItemOperator {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            EQUALS = 2,
                            NOT_EQUALS = 3,
                            BEFORE = 4,
                            AFTER = 5
                        }
                    }

                    /** Properties of a UserListLogicalRuleOperatorEnum. */
                    interface IUserListLogicalRuleOperatorEnum {
                    }

                    /** Represents a UserListLogicalRuleOperatorEnum. */
                    class UserListLogicalRuleOperatorEnum implements IUserListLogicalRuleOperatorEnum {

                        /**
                         * Constructs a new UserListLogicalRuleOperatorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IUserListLogicalRuleOperatorEnum): google.ads.googleads.v8.enums.UserListLogicalRuleOperatorEnum;

                        /**
                         * Encodes the specified UserListLogicalRuleOperatorEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.UserListLogicalRuleOperatorEnum.verify|verify} messages.
                         * @param m UserListLogicalRuleOperatorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IUserListLogicalRuleOperatorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListLogicalRuleOperatorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IUserListLogicalRuleOperatorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListLogicalRuleOperatorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.UserListLogicalRuleOperatorEnum;

                        /**
                         * Verifies a UserListLogicalRuleOperatorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListLogicalRuleOperatorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserListLogicalRuleOperatorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.UserListLogicalRuleOperatorEnum;

                        /**
                         * Creates a plain object from a UserListLogicalRuleOperatorEnum message. Also converts values to other types if specified.
                         * @param m UserListLogicalRuleOperatorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.UserListLogicalRuleOperatorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListLogicalRuleOperatorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IUserListNumberRuleItemOperatorEnum): google.ads.googleads.v8.enums.UserListNumberRuleItemOperatorEnum;

                        /**
                         * Encodes the specified UserListNumberRuleItemOperatorEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.UserListNumberRuleItemOperatorEnum.verify|verify} messages.
                         * @param m UserListNumberRuleItemOperatorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IUserListNumberRuleItemOperatorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListNumberRuleItemOperatorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IUserListNumberRuleItemOperatorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListNumberRuleItemOperatorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.UserListNumberRuleItemOperatorEnum;

                        /**
                         * Verifies a UserListNumberRuleItemOperatorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListNumberRuleItemOperatorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserListNumberRuleItemOperatorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.UserListNumberRuleItemOperatorEnum;

                        /**
                         * Creates a plain object from a UserListNumberRuleItemOperatorEnum message. Also converts values to other types if specified.
                         * @param m UserListNumberRuleItemOperatorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.UserListNumberRuleItemOperatorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListNumberRuleItemOperatorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IUserListPrepopulationStatusEnum): google.ads.googleads.v8.enums.UserListPrepopulationStatusEnum;

                        /**
                         * Encodes the specified UserListPrepopulationStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.UserListPrepopulationStatusEnum.verify|verify} messages.
                         * @param m UserListPrepopulationStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IUserListPrepopulationStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListPrepopulationStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IUserListPrepopulationStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListPrepopulationStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.UserListPrepopulationStatusEnum;

                        /**
                         * Verifies a UserListPrepopulationStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListPrepopulationStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserListPrepopulationStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.UserListPrepopulationStatusEnum;

                        /**
                         * Creates a plain object from a UserListPrepopulationStatusEnum message. Also converts values to other types if specified.
                         * @param m UserListPrepopulationStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.UserListPrepopulationStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListPrepopulationStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IUserListRuleTypeEnum): google.ads.googleads.v8.enums.UserListRuleTypeEnum;

                        /**
                         * Encodes the specified UserListRuleTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.UserListRuleTypeEnum.verify|verify} messages.
                         * @param m UserListRuleTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IUserListRuleTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListRuleTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IUserListRuleTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListRuleTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.UserListRuleTypeEnum;

                        /**
                         * Verifies a UserListRuleTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListRuleTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserListRuleTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.UserListRuleTypeEnum;

                        /**
                         * Creates a plain object from a UserListRuleTypeEnum message. Also converts values to other types if specified.
                         * @param m UserListRuleTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.UserListRuleTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListRuleTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IUserListStringRuleItemOperatorEnum): google.ads.googleads.v8.enums.UserListStringRuleItemOperatorEnum;

                        /**
                         * Encodes the specified UserListStringRuleItemOperatorEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.UserListStringRuleItemOperatorEnum.verify|verify} messages.
                         * @param m UserListStringRuleItemOperatorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IUserListStringRuleItemOperatorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListStringRuleItemOperatorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IUserListStringRuleItemOperatorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListStringRuleItemOperatorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.UserListStringRuleItemOperatorEnum;

                        /**
                         * Verifies a UserListStringRuleItemOperatorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListStringRuleItemOperatorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserListStringRuleItemOperatorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.UserListStringRuleItemOperatorEnum;

                        /**
                         * Creates a plain object from a UserListStringRuleItemOperatorEnum message. Also converts values to other types if specified.
                         * @param m UserListStringRuleItemOperatorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.UserListStringRuleItemOperatorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListStringRuleItemOperatorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAccessInvitationStatusEnum): google.ads.googleads.v8.enums.AccessInvitationStatusEnum;

                        /**
                         * Encodes the specified AccessInvitationStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AccessInvitationStatusEnum.verify|verify} messages.
                         * @param m AccessInvitationStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAccessInvitationStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccessInvitationStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAccessInvitationStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccessInvitationStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AccessInvitationStatusEnum;

                        /**
                         * Verifies an AccessInvitationStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AccessInvitationStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AccessInvitationStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AccessInvitationStatusEnum;

                        /**
                         * Creates a plain object from an AccessInvitationStatusEnum message. Also converts values to other types if specified.
                         * @param m AccessInvitationStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AccessInvitationStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccessInvitationStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAccessReasonEnum): google.ads.googleads.v8.enums.AccessReasonEnum;

                        /**
                         * Encodes the specified AccessReasonEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AccessReasonEnum.verify|verify} messages.
                         * @param m AccessReasonEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAccessReasonEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccessReasonEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAccessReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccessReasonEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AccessReasonEnum;

                        /**
                         * Verifies an AccessReasonEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AccessReasonEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AccessReasonEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AccessReasonEnum;

                        /**
                         * Creates a plain object from an AccessReasonEnum message. Also converts values to other types if specified.
                         * @param m AccessReasonEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AccessReasonEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccessReasonEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAccessRoleEnum): google.ads.googleads.v8.enums.AccessRoleEnum;

                        /**
                         * Encodes the specified AccessRoleEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AccessRoleEnum.verify|verify} messages.
                         * @param m AccessRoleEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAccessRoleEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccessRoleEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAccessRoleEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccessRoleEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AccessRoleEnum;

                        /**
                         * Verifies an AccessRoleEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AccessRoleEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AccessRoleEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AccessRoleEnum;

                        /**
                         * Creates a plain object from an AccessRoleEnum message. Also converts values to other types if specified.
                         * @param m AccessRoleEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AccessRoleEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccessRoleEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAccountBudgetProposalStatusEnum): google.ads.googleads.v8.enums.AccountBudgetProposalStatusEnum;

                        /**
                         * Encodes the specified AccountBudgetProposalStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AccountBudgetProposalStatusEnum.verify|verify} messages.
                         * @param m AccountBudgetProposalStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAccountBudgetProposalStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccountBudgetProposalStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAccountBudgetProposalStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccountBudgetProposalStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AccountBudgetProposalStatusEnum;

                        /**
                         * Verifies an AccountBudgetProposalStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AccountBudgetProposalStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AccountBudgetProposalStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AccountBudgetProposalStatusEnum;

                        /**
                         * Creates a plain object from an AccountBudgetProposalStatusEnum message. Also converts values to other types if specified.
                         * @param m AccountBudgetProposalStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AccountBudgetProposalStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccountBudgetProposalStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAccountBudgetProposalTypeEnum): google.ads.googleads.v8.enums.AccountBudgetProposalTypeEnum;

                        /**
                         * Encodes the specified AccountBudgetProposalTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AccountBudgetProposalTypeEnum.verify|verify} messages.
                         * @param m AccountBudgetProposalTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAccountBudgetProposalTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccountBudgetProposalTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAccountBudgetProposalTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccountBudgetProposalTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AccountBudgetProposalTypeEnum;

                        /**
                         * Verifies an AccountBudgetProposalTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AccountBudgetProposalTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AccountBudgetProposalTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AccountBudgetProposalTypeEnum;

                        /**
                         * Creates a plain object from an AccountBudgetProposalTypeEnum message. Also converts values to other types if specified.
                         * @param m AccountBudgetProposalTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AccountBudgetProposalTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccountBudgetProposalTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAccountBudgetStatusEnum): google.ads.googleads.v8.enums.AccountBudgetStatusEnum;

                        /**
                         * Encodes the specified AccountBudgetStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AccountBudgetStatusEnum.verify|verify} messages.
                         * @param m AccountBudgetStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAccountBudgetStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccountBudgetStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAccountBudgetStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccountBudgetStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AccountBudgetStatusEnum;

                        /**
                         * Verifies an AccountBudgetStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AccountBudgetStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AccountBudgetStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AccountBudgetStatusEnum;

                        /**
                         * Creates a plain object from an AccountBudgetStatusEnum message. Also converts values to other types if specified.
                         * @param m AccountBudgetStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AccountBudgetStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccountBudgetStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAccountLinkStatusEnum): google.ads.googleads.v8.enums.AccountLinkStatusEnum;

                        /**
                         * Encodes the specified AccountLinkStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AccountLinkStatusEnum.verify|verify} messages.
                         * @param m AccountLinkStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAccountLinkStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccountLinkStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAccountLinkStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccountLinkStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AccountLinkStatusEnum;

                        /**
                         * Verifies an AccountLinkStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AccountLinkStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AccountLinkStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AccountLinkStatusEnum;

                        /**
                         * Creates a plain object from an AccountLinkStatusEnum message. Also converts values to other types if specified.
                         * @param m AccountLinkStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AccountLinkStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccountLinkStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 AdCustomizerPlaceholderFieldEnum. */
                    interface IAdCustomizerPlaceholderFieldEnum {
                    }

                    /** Represents an AdCustomizerPlaceholderFieldEnum. */
                    class AdCustomizerPlaceholderFieldEnum implements IAdCustomizerPlaceholderFieldEnum {

                        /**
                         * Constructs a new AdCustomizerPlaceholderFieldEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IAdCustomizerPlaceholderFieldEnum);

                        /**
                         * Creates a new AdCustomizerPlaceholderFieldEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdCustomizerPlaceholderFieldEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IAdCustomizerPlaceholderFieldEnum): google.ads.googleads.v8.enums.AdCustomizerPlaceholderFieldEnum;

                        /**
                         * Encodes the specified AdCustomizerPlaceholderFieldEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AdCustomizerPlaceholderFieldEnum.verify|verify} messages.
                         * @param m AdCustomizerPlaceholderFieldEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAdCustomizerPlaceholderFieldEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdCustomizerPlaceholderFieldEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.AdCustomizerPlaceholderFieldEnum.verify|verify} messages.
                         * @param message AdCustomizerPlaceholderFieldEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IAdCustomizerPlaceholderFieldEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdCustomizerPlaceholderFieldEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns AdCustomizerPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.AdCustomizerPlaceholderFieldEnum;

                        /**
                         * Decodes an AdCustomizerPlaceholderFieldEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdCustomizerPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.AdCustomizerPlaceholderFieldEnum;

                        /**
                         * Verifies an AdCustomizerPlaceholderFieldEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdCustomizerPlaceholderFieldEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdCustomizerPlaceholderFieldEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AdCustomizerPlaceholderFieldEnum;

                        /**
                         * Creates a plain object from an AdCustomizerPlaceholderFieldEnum message. Also converts values to other types if specified.
                         * @param m AdCustomizerPlaceholderFieldEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AdCustomizerPlaceholderFieldEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdCustomizerPlaceholderFieldEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace AdCustomizerPlaceholderFieldEnum {

                        /** AdCustomizerPlaceholderField enum. */
                        enum AdCustomizerPlaceholderField {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INTEGER = 2,
                            PRICE = 3,
                            DATE = 4,
                            STRING = 5
                        }
                    }

                    /** Properties of an AdGroupAdRotationModeEnum. */
                    interface IAdGroupAdRotationModeEnum {
                    }

                    /** Represents an AdGroupAdRotationModeEnum. */
                    class AdGroupAdRotationModeEnum implements IAdGroupAdRotationModeEnum {

                        /**
                         * Constructs a new AdGroupAdRotationModeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAdGroupAdRotationModeEnum): google.ads.googleads.v8.enums.AdGroupAdRotationModeEnum;

                        /**
                         * Encodes the specified AdGroupAdRotationModeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AdGroupAdRotationModeEnum.verify|verify} messages.
                         * @param m AdGroupAdRotationModeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAdGroupAdRotationModeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAdRotationModeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAdGroupAdRotationModeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAdRotationModeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AdGroupAdRotationModeEnum;

                        /**
                         * Verifies an AdGroupAdRotationModeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupAdRotationModeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupAdRotationModeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AdGroupAdRotationModeEnum;

                        /**
                         * Creates a plain object from an AdGroupAdRotationModeEnum message. Also converts values to other types if specified.
                         * @param m AdGroupAdRotationModeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AdGroupAdRotationModeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAdRotationModeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAdGroupAdStatusEnum): google.ads.googleads.v8.enums.AdGroupAdStatusEnum;

                        /**
                         * Encodes the specified AdGroupAdStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AdGroupAdStatusEnum.verify|verify} messages.
                         * @param m AdGroupAdStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAdGroupAdStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAdStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAdGroupAdStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAdStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AdGroupAdStatusEnum;

                        /**
                         * Verifies an AdGroupAdStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupAdStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupAdStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AdGroupAdStatusEnum;

                        /**
                         * Creates a plain object from an AdGroupAdStatusEnum message. Also converts values to other types if specified.
                         * @param m AdGroupAdStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AdGroupAdStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAdStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAdGroupCriterionApprovalStatusEnum): google.ads.googleads.v8.enums.AdGroupCriterionApprovalStatusEnum;

                        /**
                         * Encodes the specified AdGroupCriterionApprovalStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AdGroupCriterionApprovalStatusEnum.verify|verify} messages.
                         * @param m AdGroupCriterionApprovalStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAdGroupCriterionApprovalStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupCriterionApprovalStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAdGroupCriterionApprovalStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupCriterionApprovalStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AdGroupCriterionApprovalStatusEnum;

                        /**
                         * Verifies an AdGroupCriterionApprovalStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupCriterionApprovalStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupCriterionApprovalStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AdGroupCriterionApprovalStatusEnum;

                        /**
                         * Creates a plain object from an AdGroupCriterionApprovalStatusEnum message. Also converts values to other types if specified.
                         * @param m AdGroupCriterionApprovalStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AdGroupCriterionApprovalStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupCriterionApprovalStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace AdGroupCriterionApprovalStatusEnum {

                        /** AdGroupCriterionApprovalStatus enum. */
                        enum AdGroupCriterionApprovalStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            APPROVED = 2,
                            DISAPPROVED = 3,
                            PENDING_REVIEW = 4,
                            UNDER_REVIEW = 5
                        }
                    }

                    /** Properties of an AdGroupCriterionStatusEnum. */
                    interface IAdGroupCriterionStatusEnum {
                    }

                    /** Represents an AdGroupCriterionStatusEnum. */
                    class AdGroupCriterionStatusEnum implements IAdGroupCriterionStatusEnum {

                        /**
                         * Constructs a new AdGroupCriterionStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAdGroupCriterionStatusEnum): google.ads.googleads.v8.enums.AdGroupCriterionStatusEnum;

                        /**
                         * Encodes the specified AdGroupCriterionStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AdGroupCriterionStatusEnum.verify|verify} messages.
                         * @param m AdGroupCriterionStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAdGroupCriterionStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupCriterionStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAdGroupCriterionStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupCriterionStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AdGroupCriterionStatusEnum;

                        /**
                         * Verifies an AdGroupCriterionStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupCriterionStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupCriterionStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AdGroupCriterionStatusEnum;

                        /**
                         * Creates a plain object from an AdGroupCriterionStatusEnum message. Also converts values to other types if specified.
                         * @param m AdGroupCriterionStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AdGroupCriterionStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupCriterionStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace AdGroupCriterionStatusEnum {

                        /** AdGroupCriterionStatus enum. */
                        enum AdGroupCriterionStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            PAUSED = 3,
                            REMOVED = 4
                        }
                    }

                    /** Properties of an AdGroupStatusEnum. */
                    interface IAdGroupStatusEnum {
                    }

                    /** Represents an AdGroupStatusEnum. */
                    class AdGroupStatusEnum implements IAdGroupStatusEnum {

                        /**
                         * Constructs a new AdGroupStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAdGroupStatusEnum): google.ads.googleads.v8.enums.AdGroupStatusEnum;

                        /**
                         * Encodes the specified AdGroupStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AdGroupStatusEnum.verify|verify} messages.
                         * @param m AdGroupStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAdGroupStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAdGroupStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AdGroupStatusEnum;

                        /**
                         * Verifies an AdGroupStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AdGroupStatusEnum;

                        /**
                         * Creates a plain object from an AdGroupStatusEnum message. Also converts values to other types if specified.
                         * @param m AdGroupStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AdGroupStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAdGroupTypeEnum): google.ads.googleads.v8.enums.AdGroupTypeEnum;

                        /**
                         * Encodes the specified AdGroupTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AdGroupTypeEnum.verify|verify} messages.
                         * @param m AdGroupTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAdGroupTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAdGroupTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AdGroupTypeEnum;

                        /**
                         * Verifies an AdGroupTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AdGroupTypeEnum;

                        /**
                         * Creates a plain object from an AdGroupTypeEnum message. Also converts values to other types if specified.
                         * @param m AdGroupTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AdGroupTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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,
                            VIDEO_OUTSTREAM = 12,
                            SEARCH_DYNAMIC_ADS = 13,
                            SHOPPING_COMPARISON_LISTING_ADS = 14,
                            PROMOTED_HOTEL_ADS = 15,
                            VIDEO_RESPONSIVE = 16,
                            VIDEO_EFFICIENT_REACH = 17,
                            SMART_CAMPAIGN_ADS = 18
                        }
                    }

                    /** Properties of an AdServingOptimizationStatusEnum. */
                    interface IAdServingOptimizationStatusEnum {
                    }

                    /** Represents an AdServingOptimizationStatusEnum. */
                    class AdServingOptimizationStatusEnum implements IAdServingOptimizationStatusEnum {

                        /**
                         * Constructs a new AdServingOptimizationStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAdServingOptimizationStatusEnum): google.ads.googleads.v8.enums.AdServingOptimizationStatusEnum;

                        /**
                         * Encodes the specified AdServingOptimizationStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AdServingOptimizationStatusEnum.verify|verify} messages.
                         * @param m AdServingOptimizationStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAdServingOptimizationStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdServingOptimizationStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAdServingOptimizationStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdServingOptimizationStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AdServingOptimizationStatusEnum;

                        /**
                         * Verifies an AdServingOptimizationStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdServingOptimizationStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdServingOptimizationStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AdServingOptimizationStatusEnum;

                        /**
                         * Creates a plain object from an AdServingOptimizationStatusEnum message. Also converts values to other types if specified.
                         * @param m AdServingOptimizationStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AdServingOptimizationStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdServingOptimizationStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAdStrengthEnum): google.ads.googleads.v8.enums.AdStrengthEnum;

                        /**
                         * Encodes the specified AdStrengthEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AdStrengthEnum.verify|verify} messages.
                         * @param m AdStrengthEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAdStrengthEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdStrengthEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAdStrengthEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdStrengthEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AdStrengthEnum;

                        /**
                         * Verifies an AdStrengthEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdStrengthEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdStrengthEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AdStrengthEnum;

                        /**
                         * Creates a plain object from an AdStrengthEnum message. Also converts values to other types if specified.
                         * @param m AdStrengthEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AdStrengthEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdStrengthEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 AdTypeEnum. */
                    interface IAdTypeEnum {
                    }

                    /** Represents an AdTypeEnum. */
                    class AdTypeEnum implements IAdTypeEnum {

                        /**
                         * Constructs a new AdTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAdTypeEnum): google.ads.googleads.v8.enums.AdTypeEnum;

                        /**
                         * Encodes the specified AdTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AdTypeEnum.verify|verify} messages.
                         * @param m AdTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAdTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAdTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AdTypeEnum;

                        /**
                         * Verifies an AdTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AdTypeEnum;

                        /**
                         * Creates a plain object from an AdTypeEnum message. Also converts values to other types if specified.
                         * @param m AdTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AdTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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,
                            GMAIL_AD = 13,
                            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_OUTSTREAM_AD = 27,
                            VIDEO_TRUEVIEW_DISCOVERY_AD = 28,
                            VIDEO_TRUEVIEW_IN_STREAM_AD = 29,
                            VIDEO_RESPONSIVE_AD = 30,
                            SMART_CAMPAIGN_AD = 31,
                            CALL_AD = 32
                        }
                    }

                    /** Properties of an AffiliateLocationFeedRelationshipTypeEnum. */
                    interface IAffiliateLocationFeedRelationshipTypeEnum {
                    }

                    /** Represents an AffiliateLocationFeedRelationshipTypeEnum. */
                    class AffiliateLocationFeedRelationshipTypeEnum implements IAffiliateLocationFeedRelationshipTypeEnum {

                        /**
                         * Constructs a new AffiliateLocationFeedRelationshipTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IAffiliateLocationFeedRelationshipTypeEnum);

                        /**
                         * Creates a new AffiliateLocationFeedRelationshipTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AffiliateLocationFeedRelationshipTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IAffiliateLocationFeedRelationshipTypeEnum): google.ads.googleads.v8.enums.AffiliateLocationFeedRelationshipTypeEnum;

                        /**
                         * Encodes the specified AffiliateLocationFeedRelationshipTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AffiliateLocationFeedRelationshipTypeEnum.verify|verify} messages.
                         * @param m AffiliateLocationFeedRelationshipTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAffiliateLocationFeedRelationshipTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AffiliateLocationFeedRelationshipTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.AffiliateLocationFeedRelationshipTypeEnum.verify|verify} messages.
                         * @param message AffiliateLocationFeedRelationshipTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IAffiliateLocationFeedRelationshipTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AffiliateLocationFeedRelationshipTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns AffiliateLocationFeedRelationshipTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.AffiliateLocationFeedRelationshipTypeEnum;

                        /**
                         * Decodes an AffiliateLocationFeedRelationshipTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AffiliateLocationFeedRelationshipTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.AffiliateLocationFeedRelationshipTypeEnum;

                        /**
                         * Verifies an AffiliateLocationFeedRelationshipTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AffiliateLocationFeedRelationshipTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AffiliateLocationFeedRelationshipTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AffiliateLocationFeedRelationshipTypeEnum;

                        /**
                         * Creates a plain object from an AffiliateLocationFeedRelationshipTypeEnum message. Also converts values to other types if specified.
                         * @param m AffiliateLocationFeedRelationshipTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AffiliateLocationFeedRelationshipTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AffiliateLocationFeedRelationshipTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace AffiliateLocationFeedRelationshipTypeEnum {

                        /** AffiliateLocationFeedRelationshipType enum. */
                        enum AffiliateLocationFeedRelationshipType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            GENERAL_RETAILER = 2
                        }
                    }

                    /** Properties of an AffiliateLocationPlaceholderFieldEnum. */
                    interface IAffiliateLocationPlaceholderFieldEnum {
                    }

                    /** Represents an AffiliateLocationPlaceholderFieldEnum. */
                    class AffiliateLocationPlaceholderFieldEnum implements IAffiliateLocationPlaceholderFieldEnum {

                        /**
                         * Constructs a new AffiliateLocationPlaceholderFieldEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IAffiliateLocationPlaceholderFieldEnum);

                        /**
                         * Creates a new AffiliateLocationPlaceholderFieldEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AffiliateLocationPlaceholderFieldEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IAffiliateLocationPlaceholderFieldEnum): google.ads.googleads.v8.enums.AffiliateLocationPlaceholderFieldEnum;

                        /**
                         * Encodes the specified AffiliateLocationPlaceholderFieldEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AffiliateLocationPlaceholderFieldEnum.verify|verify} messages.
                         * @param m AffiliateLocationPlaceholderFieldEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAffiliateLocationPlaceholderFieldEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AffiliateLocationPlaceholderFieldEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.AffiliateLocationPlaceholderFieldEnum.verify|verify} messages.
                         * @param message AffiliateLocationPlaceholderFieldEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IAffiliateLocationPlaceholderFieldEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AffiliateLocationPlaceholderFieldEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns AffiliateLocationPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.AffiliateLocationPlaceholderFieldEnum;

                        /**
                         * Decodes an AffiliateLocationPlaceholderFieldEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AffiliateLocationPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.AffiliateLocationPlaceholderFieldEnum;

                        /**
                         * Verifies an AffiliateLocationPlaceholderFieldEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AffiliateLocationPlaceholderFieldEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AffiliateLocationPlaceholderFieldEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AffiliateLocationPlaceholderFieldEnum;

                        /**
                         * Creates a plain object from an AffiliateLocationPlaceholderFieldEnum message. Also converts values to other types if specified.
                         * @param m AffiliateLocationPlaceholderFieldEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AffiliateLocationPlaceholderFieldEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AffiliateLocationPlaceholderFieldEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace AffiliateLocationPlaceholderFieldEnum {

                        /** AffiliateLocationPlaceholderField enum. */
                        enum AffiliateLocationPlaceholderField {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            BUSINESS_NAME = 2,
                            ADDRESS_LINE_1 = 3,
                            ADDRESS_LINE_2 = 4,
                            CITY = 5,
                            PROVINCE = 6,
                            POSTAL_CODE = 7,
                            COUNTRY_CODE = 8,
                            PHONE_NUMBER = 9,
                            LANGUAGE_CODE = 10,
                            CHAIN_ID = 11,
                            CHAIN_NAME = 12
                        }
                    }

                    /** Properties of an AppCampaignAppStoreEnum. */
                    interface IAppCampaignAppStoreEnum {
                    }

                    /** Represents an AppCampaignAppStoreEnum. */
                    class AppCampaignAppStoreEnum implements IAppCampaignAppStoreEnum {

                        /**
                         * Constructs a new AppCampaignAppStoreEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAppCampaignAppStoreEnum): google.ads.googleads.v8.enums.AppCampaignAppStoreEnum;

                        /**
                         * Encodes the specified AppCampaignAppStoreEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AppCampaignAppStoreEnum.verify|verify} messages.
                         * @param m AppCampaignAppStoreEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAppCampaignAppStoreEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AppCampaignAppStoreEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAppCampaignAppStoreEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AppCampaignAppStoreEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AppCampaignAppStoreEnum;

                        /**
                         * Verifies an AppCampaignAppStoreEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AppCampaignAppStoreEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AppCampaignAppStoreEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AppCampaignAppStoreEnum;

                        /**
                         * Creates a plain object from an AppCampaignAppStoreEnum message. Also converts values to other types if specified.
                         * @param m AppCampaignAppStoreEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AppCampaignAppStoreEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AppCampaignAppStoreEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAppCampaignBiddingStrategyGoalTypeEnum): google.ads.googleads.v8.enums.AppCampaignBiddingStrategyGoalTypeEnum;

                        /**
                         * Encodes the specified AppCampaignBiddingStrategyGoalTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AppCampaignBiddingStrategyGoalTypeEnum.verify|verify} messages.
                         * @param m AppCampaignBiddingStrategyGoalTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAppCampaignBiddingStrategyGoalTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AppCampaignBiddingStrategyGoalTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAppCampaignBiddingStrategyGoalTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AppCampaignBiddingStrategyGoalTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AppCampaignBiddingStrategyGoalTypeEnum;

                        /**
                         * Verifies an AppCampaignBiddingStrategyGoalTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AppCampaignBiddingStrategyGoalTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AppCampaignBiddingStrategyGoalTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AppCampaignBiddingStrategyGoalTypeEnum;

                        /**
                         * Creates a plain object from an AppCampaignBiddingStrategyGoalTypeEnum message. Also converts values to other types if specified.
                         * @param m AppCampaignBiddingStrategyGoalTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AppCampaignBiddingStrategyGoalTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AppCampaignBiddingStrategyGoalTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of an AppPlaceholderFieldEnum. */
                    interface IAppPlaceholderFieldEnum {
                    }

                    /** Represents an AppPlaceholderFieldEnum. */
                    class AppPlaceholderFieldEnum implements IAppPlaceholderFieldEnum {

                        /**
                         * Constructs a new AppPlaceholderFieldEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IAppPlaceholderFieldEnum);

                        /**
                         * Creates a new AppPlaceholderFieldEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AppPlaceholderFieldEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IAppPlaceholderFieldEnum): google.ads.googleads.v8.enums.AppPlaceholderFieldEnum;

                        /**
                         * Encodes the specified AppPlaceholderFieldEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AppPlaceholderFieldEnum.verify|verify} messages.
                         * @param m AppPlaceholderFieldEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAppPlaceholderFieldEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AppPlaceholderFieldEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.AppPlaceholderFieldEnum.verify|verify} messages.
                         * @param message AppPlaceholderFieldEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IAppPlaceholderFieldEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AppPlaceholderFieldEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns AppPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.AppPlaceholderFieldEnum;

                        /**
                         * Decodes an AppPlaceholderFieldEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AppPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.AppPlaceholderFieldEnum;

                        /**
                         * Verifies an AppPlaceholderFieldEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AppPlaceholderFieldEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AppPlaceholderFieldEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AppPlaceholderFieldEnum;

                        /**
                         * Creates a plain object from an AppPlaceholderFieldEnum message. Also converts values to other types if specified.
                         * @param m AppPlaceholderFieldEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AppPlaceholderFieldEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AppPlaceholderFieldEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace AppPlaceholderFieldEnum {

                        /** AppPlaceholderField enum. */
                        enum AppPlaceholderField {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            STORE = 2,
                            ID = 3,
                            LINK_TEXT = 4,
                            URL = 5,
                            FINAL_URLS = 6,
                            FINAL_MOBILE_URLS = 7,
                            TRACKING_URL = 8,
                            FINAL_URL_SUFFIX = 9
                        }
                    }

                    /** Properties of an AssetFieldTypeEnum. */
                    interface IAssetFieldTypeEnum {
                    }

                    /** Represents an AssetFieldTypeEnum. */
                    class AssetFieldTypeEnum implements IAssetFieldTypeEnum {

                        /**
                         * Constructs a new AssetFieldTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAssetFieldTypeEnum): google.ads.googleads.v8.enums.AssetFieldTypeEnum;

                        /**
                         * Encodes the specified AssetFieldTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AssetFieldTypeEnum.verify|verify} messages.
                         * @param m AssetFieldTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAssetFieldTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetFieldTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAssetFieldTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetFieldTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AssetFieldTypeEnum;

                        /**
                         * Verifies an AssetFieldTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AssetFieldTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AssetFieldTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AssetFieldTypeEnum;

                        /**
                         * Creates a plain object from an AssetFieldTypeEnum message. Also converts values to other types if specified.
                         * @param m AssetFieldTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AssetFieldTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetFieldTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of an AssetLinkStatusEnum. */
                    interface IAssetLinkStatusEnum {
                    }

                    /** Represents an AssetLinkStatusEnum. */
                    class AssetLinkStatusEnum implements IAssetLinkStatusEnum {

                        /**
                         * Constructs a new AssetLinkStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAssetLinkStatusEnum): google.ads.googleads.v8.enums.AssetLinkStatusEnum;

                        /**
                         * Encodes the specified AssetLinkStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AssetLinkStatusEnum.verify|verify} messages.
                         * @param m AssetLinkStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAssetLinkStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetLinkStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAssetLinkStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetLinkStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AssetLinkStatusEnum;

                        /**
                         * Verifies an AssetLinkStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AssetLinkStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AssetLinkStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AssetLinkStatusEnum;

                        /**
                         * Creates a plain object from an AssetLinkStatusEnum message. Also converts values to other types if specified.
                         * @param m AssetLinkStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AssetLinkStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetLinkStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace AssetLinkStatusEnum {

                        /** AssetLinkStatus enum. */
                        enum AssetLinkStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3,
                            PAUSED = 4
                        }
                    }

                    /** Properties of an AssetTypeEnum. */
                    interface IAssetTypeEnum {
                    }

                    /** Represents an AssetTypeEnum. */
                    class AssetTypeEnum implements IAssetTypeEnum {

                        /**
                         * Constructs a new AssetTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAssetTypeEnum): google.ads.googleads.v8.enums.AssetTypeEnum;

                        /**
                         * Encodes the specified AssetTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AssetTypeEnum.verify|verify} messages.
                         * @param m AssetTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAssetTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAssetTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AssetTypeEnum;

                        /**
                         * Verifies an AssetTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AssetTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AssetTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AssetTypeEnum;

                        /**
                         * Creates a plain object from an AssetTypeEnum message. Also converts values to other types if specified.
                         * @param m AssetTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AssetTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of an AttributionModelEnum. */
                    interface IAttributionModelEnum {
                    }

                    /** Represents an AttributionModelEnum. */
                    class AttributionModelEnum implements IAttributionModelEnum {

                        /**
                         * Constructs a new AttributionModelEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IAttributionModelEnum): google.ads.googleads.v8.enums.AttributionModelEnum;

                        /**
                         * Encodes the specified AttributionModelEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.AttributionModelEnum.verify|verify} messages.
                         * @param m AttributionModelEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IAttributionModelEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AttributionModelEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IAttributionModelEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AttributionModelEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.AttributionModelEnum;

                        /**
                         * Verifies an AttributionModelEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AttributionModelEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AttributionModelEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.AttributionModelEnum;

                        /**
                         * Creates a plain object from an AttributionModelEnum message. Also converts values to other types if specified.
                         * @param m AttributionModelEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.AttributionModelEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AttributionModelEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 a BatchJobStatusEnum. */
                    interface IBatchJobStatusEnum {
                    }

                    /** Represents a BatchJobStatusEnum. */
                    class BatchJobStatusEnum implements IBatchJobStatusEnum {

                        /**
                         * Constructs a new BatchJobStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IBatchJobStatusEnum): google.ads.googleads.v8.enums.BatchJobStatusEnum;

                        /**
                         * Encodes the specified BatchJobStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.BatchJobStatusEnum.verify|verify} messages.
                         * @param m BatchJobStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IBatchJobStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BatchJobStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IBatchJobStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BatchJobStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.BatchJobStatusEnum;

                        /**
                         * Verifies a BatchJobStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BatchJobStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BatchJobStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.BatchJobStatusEnum;

                        /**
                         * Creates a plain object from a BatchJobStatusEnum message. Also converts values to other types if specified.
                         * @param m BatchJobStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.BatchJobStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BatchJobStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace BatchJobStatusEnum {

                        /** BatchJobStatus enum. */
                        enum BatchJobStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PENDING = 2,
                            RUNNING = 3,
                            DONE = 4
                        }
                    }

                    /** Properties of a BidModifierSourceEnum. */
                    interface IBidModifierSourceEnum {
                    }

                    /** Represents a BidModifierSourceEnum. */
                    class BidModifierSourceEnum implements IBidModifierSourceEnum {

                        /**
                         * Constructs a new BidModifierSourceEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IBidModifierSourceEnum): google.ads.googleads.v8.enums.BidModifierSourceEnum;

                        /**
                         * Encodes the specified BidModifierSourceEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.BidModifierSourceEnum.verify|verify} messages.
                         * @param m BidModifierSourceEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IBidModifierSourceEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BidModifierSourceEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IBidModifierSourceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BidModifierSourceEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.BidModifierSourceEnum;

                        /**
                         * Verifies a BidModifierSourceEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BidModifierSourceEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BidModifierSourceEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.BidModifierSourceEnum;

                        /**
                         * Creates a plain object from a BidModifierSourceEnum message. Also converts values to other types if specified.
                         * @param m BidModifierSourceEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.BidModifierSourceEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BidModifierSourceEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IBiddingSourceEnum): google.ads.googleads.v8.enums.BiddingSourceEnum;

                        /**
                         * Encodes the specified BiddingSourceEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.BiddingSourceEnum.verify|verify} messages.
                         * @param m BiddingSourceEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IBiddingSourceEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddingSourceEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IBiddingSourceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddingSourceEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.BiddingSourceEnum;

                        /**
                         * Verifies a BiddingSourceEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddingSourceEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BiddingSourceEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.BiddingSourceEnum;

                        /**
                         * Creates a plain object from a BiddingSourceEnum message. Also converts values to other types if specified.
                         * @param m BiddingSourceEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.BiddingSourceEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddingSourceEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IBiddingStrategyStatusEnum): google.ads.googleads.v8.enums.BiddingStrategyStatusEnum;

                        /**
                         * Encodes the specified BiddingStrategyStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.BiddingStrategyStatusEnum.verify|verify} messages.
                         * @param m BiddingStrategyStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IBiddingStrategyStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddingStrategyStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IBiddingStrategyStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddingStrategyStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.BiddingStrategyStatusEnum;

                        /**
                         * Verifies a BiddingStrategyStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddingStrategyStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BiddingStrategyStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.BiddingStrategyStatusEnum;

                        /**
                         * Creates a plain object from a BiddingStrategyStatusEnum message. Also converts values to other types if specified.
                         * @param m BiddingStrategyStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.BiddingStrategyStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddingStrategyStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace BiddingStrategyStatusEnum {

                        /** BiddingStrategyStatus enum. */
                        enum BiddingStrategyStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 4
                        }
                    }

                    /** Properties of a BiddingStrategyTypeEnum. */
                    interface IBiddingStrategyTypeEnum {
                    }

                    /** Represents a BiddingStrategyTypeEnum. */
                    class BiddingStrategyTypeEnum implements IBiddingStrategyTypeEnum {

                        /**
                         * Constructs a new BiddingStrategyTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IBiddingStrategyTypeEnum): google.ads.googleads.v8.enums.BiddingStrategyTypeEnum;

                        /**
                         * Encodes the specified BiddingStrategyTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.BiddingStrategyTypeEnum.verify|verify} messages.
                         * @param m BiddingStrategyTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IBiddingStrategyTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddingStrategyTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IBiddingStrategyTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddingStrategyTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.BiddingStrategyTypeEnum;

                        /**
                         * Verifies a BiddingStrategyTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddingStrategyTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BiddingStrategyTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.BiddingStrategyTypeEnum;

                        /**
                         * Creates a plain object from a BiddingStrategyTypeEnum message. Also converts values to other types if specified.
                         * @param m BiddingStrategyTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.BiddingStrategyTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddingStrategyTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace BiddingStrategyTypeEnum {

                        /** BiddingStrategyType enum. */
                        enum BiddingStrategyType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            COMMISSION = 16,
                            ENHANCED_CPC = 2,
                            INVALID = 17,
                            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_CPM = 14,
                            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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IBillingSetupStatusEnum): google.ads.googleads.v8.enums.BillingSetupStatusEnum;

                        /**
                         * Encodes the specified BillingSetupStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.BillingSetupStatusEnum.verify|verify} messages.
                         * @param m BillingSetupStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IBillingSetupStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BillingSetupStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IBillingSetupStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BillingSetupStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.BillingSetupStatusEnum;

                        /**
                         * Verifies a BillingSetupStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BillingSetupStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BillingSetupStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.BillingSetupStatusEnum;

                        /**
                         * Creates a plain object from a BillingSetupStatusEnum message. Also converts values to other types if specified.
                         * @param m BillingSetupStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.BillingSetupStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BillingSetupStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IBrandSafetySuitabilityEnum): google.ads.googleads.v8.enums.BrandSafetySuitabilityEnum;

                        /**
                         * Encodes the specified BrandSafetySuitabilityEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.BrandSafetySuitabilityEnum.verify|verify} messages.
                         * @param m BrandSafetySuitabilityEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IBrandSafetySuitabilityEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BrandSafetySuitabilityEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IBrandSafetySuitabilityEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BrandSafetySuitabilityEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.BrandSafetySuitabilityEnum;

                        /**
                         * Verifies a BrandSafetySuitabilityEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BrandSafetySuitabilityEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BrandSafetySuitabilityEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.BrandSafetySuitabilityEnum;

                        /**
                         * Creates a plain object from a BrandSafetySuitabilityEnum message. Also converts values to other types if specified.
                         * @param m BrandSafetySuitabilityEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.BrandSafetySuitabilityEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BrandSafetySuitabilityEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IBudgetDeliveryMethodEnum): google.ads.googleads.v8.enums.BudgetDeliveryMethodEnum;

                        /**
                         * Encodes the specified BudgetDeliveryMethodEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.BudgetDeliveryMethodEnum.verify|verify} messages.
                         * @param m BudgetDeliveryMethodEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IBudgetDeliveryMethodEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BudgetDeliveryMethodEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IBudgetDeliveryMethodEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BudgetDeliveryMethodEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.BudgetDeliveryMethodEnum;

                        /**
                         * Verifies a BudgetDeliveryMethodEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BudgetDeliveryMethodEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BudgetDeliveryMethodEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.BudgetDeliveryMethodEnum;

                        /**
                         * Creates a plain object from a BudgetDeliveryMethodEnum message. Also converts values to other types if specified.
                         * @param m BudgetDeliveryMethodEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.BudgetDeliveryMethodEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BudgetDeliveryMethodEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IBudgetPeriodEnum): google.ads.googleads.v8.enums.BudgetPeriodEnum;

                        /**
                         * Encodes the specified BudgetPeriodEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.BudgetPeriodEnum.verify|verify} messages.
                         * @param m BudgetPeriodEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IBudgetPeriodEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BudgetPeriodEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IBudgetPeriodEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BudgetPeriodEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.BudgetPeriodEnum;

                        /**
                         * Verifies a BudgetPeriodEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BudgetPeriodEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BudgetPeriodEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.BudgetPeriodEnum;

                        /**
                         * Creates a plain object from a BudgetPeriodEnum message. Also converts values to other types if specified.
                         * @param m BudgetPeriodEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.BudgetPeriodEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BudgetPeriodEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IBudgetStatusEnum): google.ads.googleads.v8.enums.BudgetStatusEnum;

                        /**
                         * Encodes the specified BudgetStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.BudgetStatusEnum.verify|verify} messages.
                         * @param m BudgetStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IBudgetStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BudgetStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IBudgetStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BudgetStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.BudgetStatusEnum;

                        /**
                         * Verifies a BudgetStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BudgetStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BudgetStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.BudgetStatusEnum;

                        /**
                         * Creates a plain object from a BudgetStatusEnum message. Also converts values to other types if specified.
                         * @param m BudgetStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.BudgetStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BudgetStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IBudgetTypeEnum): google.ads.googleads.v8.enums.BudgetTypeEnum;

                        /**
                         * Encodes the specified BudgetTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.BudgetTypeEnum.verify|verify} messages.
                         * @param m BudgetTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IBudgetTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BudgetTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IBudgetTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BudgetTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.BudgetTypeEnum;

                        /**
                         * Verifies a BudgetTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BudgetTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BudgetTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.BudgetTypeEnum;

                        /**
                         * Creates a plain object from a BudgetTypeEnum message. Also converts values to other types if specified.
                         * @param m BudgetTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.BudgetTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BudgetTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace BudgetTypeEnum {

                        /** BudgetType enum. */
                        enum BudgetType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            STANDARD = 2,
                            HOTEL_ADS_COMMISSION = 3,
                            FIXED_CPA = 4,
                            SMART_CAMPAIGN = 5
                        }
                    }

                    /** Properties of a CallPlaceholderFieldEnum. */
                    interface ICallPlaceholderFieldEnum {
                    }

                    /** Represents a CallPlaceholderFieldEnum. */
                    class CallPlaceholderFieldEnum implements ICallPlaceholderFieldEnum {

                        /**
                         * Constructs a new CallPlaceholderFieldEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.ICallPlaceholderFieldEnum);

                        /**
                         * Creates a new CallPlaceholderFieldEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CallPlaceholderFieldEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.ICallPlaceholderFieldEnum): google.ads.googleads.v8.enums.CallPlaceholderFieldEnum;

                        /**
                         * Encodes the specified CallPlaceholderFieldEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CallPlaceholderFieldEnum.verify|verify} messages.
                         * @param m CallPlaceholderFieldEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICallPlaceholderFieldEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CallPlaceholderFieldEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.CallPlaceholderFieldEnum.verify|verify} messages.
                         * @param message CallPlaceholderFieldEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.ICallPlaceholderFieldEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CallPlaceholderFieldEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns CallPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.CallPlaceholderFieldEnum;

                        /**
                         * Decodes a CallPlaceholderFieldEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CallPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.CallPlaceholderFieldEnum;

                        /**
                         * Verifies a CallPlaceholderFieldEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CallPlaceholderFieldEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CallPlaceholderFieldEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CallPlaceholderFieldEnum;

                        /**
                         * Creates a plain object from a CallPlaceholderFieldEnum message. Also converts values to other types if specified.
                         * @param m CallPlaceholderFieldEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CallPlaceholderFieldEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CallPlaceholderFieldEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace CallPlaceholderFieldEnum {

                        /** CallPlaceholderField enum. */
                        enum CallPlaceholderField {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PHONE_NUMBER = 2,
                            COUNTRY_CODE = 3,
                            TRACKED = 4,
                            CONVERSION_TYPE_ID = 5,
                            CONVERSION_REPORTING_STATE = 6
                        }
                    }

                    /** Properties of a CallTrackingDisplayLocationEnum. */
                    interface ICallTrackingDisplayLocationEnum {
                    }

                    /** Represents a CallTrackingDisplayLocationEnum. */
                    class CallTrackingDisplayLocationEnum implements ICallTrackingDisplayLocationEnum {

                        /**
                         * Constructs a new CallTrackingDisplayLocationEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ICallTrackingDisplayLocationEnum): google.ads.googleads.v8.enums.CallTrackingDisplayLocationEnum;

                        /**
                         * Encodes the specified CallTrackingDisplayLocationEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CallTrackingDisplayLocationEnum.verify|verify} messages.
                         * @param m CallTrackingDisplayLocationEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICallTrackingDisplayLocationEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CallTrackingDisplayLocationEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ICallTrackingDisplayLocationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CallTrackingDisplayLocationEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.CallTrackingDisplayLocationEnum;

                        /**
                         * Verifies a CallTrackingDisplayLocationEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CallTrackingDisplayLocationEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CallTrackingDisplayLocationEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CallTrackingDisplayLocationEnum;

                        /**
                         * Creates a plain object from a CallTrackingDisplayLocationEnum message. Also converts values to other types if specified.
                         * @param m CallTrackingDisplayLocationEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CallTrackingDisplayLocationEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CallTrackingDisplayLocationEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ICallTypeEnum): google.ads.googleads.v8.enums.CallTypeEnum;

                        /**
                         * Encodes the specified CallTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CallTypeEnum.verify|verify} messages.
                         * @param m CallTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICallTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CallTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ICallTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CallTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.CallTypeEnum;

                        /**
                         * Verifies a CallTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CallTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CallTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CallTypeEnum;

                        /**
                         * Creates a plain object from a CallTypeEnum message. Also converts values to other types if specified.
                         * @param m CallTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CallTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CallTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace CallTypeEnum {

                        /** CallType enum. */
                        enum CallType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MANUALLY_DIALED = 2,
                            HIGH_END_MOBILE_SEARCH = 3
                        }
                    }

                    /** Properties of a CalloutPlaceholderFieldEnum. */
                    interface ICalloutPlaceholderFieldEnum {
                    }

                    /** Represents a CalloutPlaceholderFieldEnum. */
                    class CalloutPlaceholderFieldEnum implements ICalloutPlaceholderFieldEnum {

                        /**
                         * Constructs a new CalloutPlaceholderFieldEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.ICalloutPlaceholderFieldEnum);

                        /**
                         * Creates a new CalloutPlaceholderFieldEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CalloutPlaceholderFieldEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.ICalloutPlaceholderFieldEnum): google.ads.googleads.v8.enums.CalloutPlaceholderFieldEnum;

                        /**
                         * Encodes the specified CalloutPlaceholderFieldEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CalloutPlaceholderFieldEnum.verify|verify} messages.
                         * @param m CalloutPlaceholderFieldEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICalloutPlaceholderFieldEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CalloutPlaceholderFieldEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.CalloutPlaceholderFieldEnum.verify|verify} messages.
                         * @param message CalloutPlaceholderFieldEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.ICalloutPlaceholderFieldEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CalloutPlaceholderFieldEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns CalloutPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.CalloutPlaceholderFieldEnum;

                        /**
                         * Decodes a CalloutPlaceholderFieldEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CalloutPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.CalloutPlaceholderFieldEnum;

                        /**
                         * Verifies a CalloutPlaceholderFieldEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CalloutPlaceholderFieldEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CalloutPlaceholderFieldEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CalloutPlaceholderFieldEnum;

                        /**
                         * Creates a plain object from a CalloutPlaceholderFieldEnum message. Also converts values to other types if specified.
                         * @param m CalloutPlaceholderFieldEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CalloutPlaceholderFieldEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CalloutPlaceholderFieldEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace CalloutPlaceholderFieldEnum {

                        /** CalloutPlaceholderField enum. */
                        enum CalloutPlaceholderField {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CALLOUT_TEXT = 2
                        }
                    }

                    /** Properties of a CampaignCriterionStatusEnum. */
                    interface ICampaignCriterionStatusEnum {
                    }

                    /** Represents a CampaignCriterionStatusEnum. */
                    class CampaignCriterionStatusEnum implements ICampaignCriterionStatusEnum {

                        /**
                         * Constructs a new CampaignCriterionStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ICampaignCriterionStatusEnum): google.ads.googleads.v8.enums.CampaignCriterionStatusEnum;

                        /**
                         * Encodes the specified CampaignCriterionStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CampaignCriterionStatusEnum.verify|verify} messages.
                         * @param m CampaignCriterionStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICampaignCriterionStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignCriterionStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ICampaignCriterionStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignCriterionStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.CampaignCriterionStatusEnum;

                        /**
                         * Verifies a CampaignCriterionStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignCriterionStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignCriterionStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CampaignCriterionStatusEnum;

                        /**
                         * Creates a plain object from a CampaignCriterionStatusEnum message. Also converts values to other types if specified.
                         * @param m CampaignCriterionStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CampaignCriterionStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignCriterionStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ICampaignDraftStatusEnum): google.ads.googleads.v8.enums.CampaignDraftStatusEnum;

                        /**
                         * Encodes the specified CampaignDraftStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CampaignDraftStatusEnum.verify|verify} messages.
                         * @param m CampaignDraftStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICampaignDraftStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignDraftStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ICampaignDraftStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignDraftStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.CampaignDraftStatusEnum;

                        /**
                         * Verifies a CampaignDraftStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignDraftStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignDraftStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CampaignDraftStatusEnum;

                        /**
                         * Creates a plain object from a CampaignDraftStatusEnum message. Also converts values to other types if specified.
                         * @param m CampaignDraftStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CampaignDraftStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignDraftStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace CampaignDraftStatusEnum {

                        /** CampaignDraftStatus enum. */
                        enum CampaignDraftStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PROPOSED = 2,
                            REMOVED = 3,
                            PROMOTING = 5,
                            PROMOTED = 4,
                            PROMOTE_FAILED = 6
                        }
                    }

                    /** Properties of a CampaignExperimentStatusEnum. */
                    interface ICampaignExperimentStatusEnum {
                    }

                    /** Represents a CampaignExperimentStatusEnum. */
                    class CampaignExperimentStatusEnum implements ICampaignExperimentStatusEnum {

                        /**
                         * Constructs a new CampaignExperimentStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.ICampaignExperimentStatusEnum);

                        /**
                         * Creates a new CampaignExperimentStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignExperimentStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.ICampaignExperimentStatusEnum): google.ads.googleads.v8.enums.CampaignExperimentStatusEnum;

                        /**
                         * Encodes the specified CampaignExperimentStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CampaignExperimentStatusEnum.verify|verify} messages.
                         * @param m CampaignExperimentStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICampaignExperimentStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignExperimentStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.CampaignExperimentStatusEnum.verify|verify} messages.
                         * @param message CampaignExperimentStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.ICampaignExperimentStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignExperimentStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns CampaignExperimentStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.CampaignExperimentStatusEnum;

                        /**
                         * Decodes a CampaignExperimentStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignExperimentStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.CampaignExperimentStatusEnum;

                        /**
                         * Verifies a CampaignExperimentStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignExperimentStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignExperimentStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CampaignExperimentStatusEnum;

                        /**
                         * Creates a plain object from a CampaignExperimentStatusEnum message. Also converts values to other types if specified.
                         * @param m CampaignExperimentStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CampaignExperimentStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignExperimentStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace CampaignExperimentStatusEnum {

                        /** CampaignExperimentStatus enum. */
                        enum CampaignExperimentStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INITIALIZING = 2,
                            INITIALIZATION_FAILED = 8,
                            ENABLED = 3,
                            GRADUATED = 4,
                            REMOVED = 5,
                            PROMOTING = 6,
                            PROMOTION_FAILED = 9,
                            PROMOTED = 7,
                            ENDED_MANUALLY = 10
                        }
                    }

                    /** Properties of a CampaignExperimentTrafficSplitTypeEnum. */
                    interface ICampaignExperimentTrafficSplitTypeEnum {
                    }

                    /** Represents a CampaignExperimentTrafficSplitTypeEnum. */
                    class CampaignExperimentTrafficSplitTypeEnum implements ICampaignExperimentTrafficSplitTypeEnum {

                        /**
                         * Constructs a new CampaignExperimentTrafficSplitTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.ICampaignExperimentTrafficSplitTypeEnum);

                        /**
                         * Creates a new CampaignExperimentTrafficSplitTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignExperimentTrafficSplitTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.ICampaignExperimentTrafficSplitTypeEnum): google.ads.googleads.v8.enums.CampaignExperimentTrafficSplitTypeEnum;

                        /**
                         * Encodes the specified CampaignExperimentTrafficSplitTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CampaignExperimentTrafficSplitTypeEnum.verify|verify} messages.
                         * @param m CampaignExperimentTrafficSplitTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICampaignExperimentTrafficSplitTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignExperimentTrafficSplitTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.CampaignExperimentTrafficSplitTypeEnum.verify|verify} messages.
                         * @param message CampaignExperimentTrafficSplitTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.ICampaignExperimentTrafficSplitTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignExperimentTrafficSplitTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns CampaignExperimentTrafficSplitTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.CampaignExperimentTrafficSplitTypeEnum;

                        /**
                         * Decodes a CampaignExperimentTrafficSplitTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignExperimentTrafficSplitTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.CampaignExperimentTrafficSplitTypeEnum;

                        /**
                         * Verifies a CampaignExperimentTrafficSplitTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignExperimentTrafficSplitTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignExperimentTrafficSplitTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CampaignExperimentTrafficSplitTypeEnum;

                        /**
                         * Creates a plain object from a CampaignExperimentTrafficSplitTypeEnum message. Also converts values to other types if specified.
                         * @param m CampaignExperimentTrafficSplitTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CampaignExperimentTrafficSplitTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignExperimentTrafficSplitTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace CampaignExperimentTrafficSplitTypeEnum {

                        /** CampaignExperimentTrafficSplitType enum. */
                        enum CampaignExperimentTrafficSplitType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            RANDOM_QUERY = 2,
                            COOKIE = 3
                        }
                    }

                    /** Properties of a CampaignExperimentTypeEnum. */
                    interface ICampaignExperimentTypeEnum {
                    }

                    /** Represents a CampaignExperimentTypeEnum. */
                    class CampaignExperimentTypeEnum implements ICampaignExperimentTypeEnum {

                        /**
                         * Constructs a new CampaignExperimentTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ICampaignExperimentTypeEnum): google.ads.googleads.v8.enums.CampaignExperimentTypeEnum;

                        /**
                         * Encodes the specified CampaignExperimentTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CampaignExperimentTypeEnum.verify|verify} messages.
                         * @param m CampaignExperimentTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICampaignExperimentTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignExperimentTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ICampaignExperimentTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignExperimentTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.CampaignExperimentTypeEnum;

                        /**
                         * Verifies a CampaignExperimentTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignExperimentTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignExperimentTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CampaignExperimentTypeEnum;

                        /**
                         * Creates a plain object from a CampaignExperimentTypeEnum message. Also converts values to other types if specified.
                         * @param m CampaignExperimentTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CampaignExperimentTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignExperimentTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace CampaignExperimentTypeEnum {

                        /** CampaignExperimentType enum. */
                        enum CampaignExperimentType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            BASE = 2,
                            DRAFT = 3,
                            EXPERIMENT = 4
                        }
                    }

                    /** Properties of a CampaignServingStatusEnum. */
                    interface ICampaignServingStatusEnum {
                    }

                    /** Represents a CampaignServingStatusEnum. */
                    class CampaignServingStatusEnum implements ICampaignServingStatusEnum {

                        /**
                         * Constructs a new CampaignServingStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ICampaignServingStatusEnum): google.ads.googleads.v8.enums.CampaignServingStatusEnum;

                        /**
                         * Encodes the specified CampaignServingStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CampaignServingStatusEnum.verify|verify} messages.
                         * @param m CampaignServingStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICampaignServingStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignServingStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ICampaignServingStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignServingStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.CampaignServingStatusEnum;

                        /**
                         * Verifies a CampaignServingStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignServingStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignServingStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CampaignServingStatusEnum;

                        /**
                         * Creates a plain object from a CampaignServingStatusEnum message. Also converts values to other types if specified.
                         * @param m CampaignServingStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CampaignServingStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignServingStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ICampaignSharedSetStatusEnum): google.ads.googleads.v8.enums.CampaignSharedSetStatusEnum;

                        /**
                         * Encodes the specified CampaignSharedSetStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CampaignSharedSetStatusEnum.verify|verify} messages.
                         * @param m CampaignSharedSetStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICampaignSharedSetStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignSharedSetStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ICampaignSharedSetStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignSharedSetStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.CampaignSharedSetStatusEnum;

                        /**
                         * Verifies a CampaignSharedSetStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignSharedSetStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignSharedSetStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CampaignSharedSetStatusEnum;

                        /**
                         * Creates a plain object from a CampaignSharedSetStatusEnum message. Also converts values to other types if specified.
                         * @param m CampaignSharedSetStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CampaignSharedSetStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignSharedSetStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ICampaignStatusEnum): google.ads.googleads.v8.enums.CampaignStatusEnum;

                        /**
                         * Encodes the specified CampaignStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CampaignStatusEnum.verify|verify} messages.
                         * @param m CampaignStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICampaignStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ICampaignStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.CampaignStatusEnum;

                        /**
                         * Verifies a CampaignStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CampaignStatusEnum;

                        /**
                         * Creates a plain object from a CampaignStatusEnum message. Also converts values to other types if specified.
                         * @param m CampaignStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CampaignStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IChangeClientTypeEnum): google.ads.googleads.v8.enums.ChangeClientTypeEnum;

                        /**
                         * Encodes the specified ChangeClientTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ChangeClientTypeEnum.verify|verify} messages.
                         * @param m ChangeClientTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IChangeClientTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ChangeClientTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IChangeClientTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ChangeClientTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ChangeClientTypeEnum;

                        /**
                         * Verifies a ChangeClientTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ChangeClientTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ChangeClientTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ChangeClientTypeEnum;

                        /**
                         * Creates a plain object from a ChangeClientTypeEnum message. Also converts values to other types if specified.
                         * @param m ChangeClientTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ChangeClientTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ChangeClientTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a ChangeEventResourceTypeEnum. */
                    interface IChangeEventResourceTypeEnum {
                    }

                    /** Represents a ChangeEventResourceTypeEnum. */
                    class ChangeEventResourceTypeEnum implements IChangeEventResourceTypeEnum {

                        /**
                         * Constructs a new ChangeEventResourceTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IChangeEventResourceTypeEnum): google.ads.googleads.v8.enums.ChangeEventResourceTypeEnum;

                        /**
                         * Encodes the specified ChangeEventResourceTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ChangeEventResourceTypeEnum.verify|verify} messages.
                         * @param m ChangeEventResourceTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IChangeEventResourceTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ChangeEventResourceTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IChangeEventResourceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ChangeEventResourceTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ChangeEventResourceTypeEnum;

                        /**
                         * Verifies a ChangeEventResourceTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ChangeEventResourceTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ChangeEventResourceTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ChangeEventResourceTypeEnum;

                        /**
                         * Creates a plain object from a ChangeEventResourceTypeEnum message. Also converts values to other types if specified.
                         * @param m ChangeEventResourceTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ChangeEventResourceTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ChangeEventResourceTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a ChangeStatusOperationEnum. */
                    interface IChangeStatusOperationEnum {
                    }

                    /** Represents a ChangeStatusOperationEnum. */
                    class ChangeStatusOperationEnum implements IChangeStatusOperationEnum {

                        /**
                         * Constructs a new ChangeStatusOperationEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IChangeStatusOperationEnum): google.ads.googleads.v8.enums.ChangeStatusOperationEnum;

                        /**
                         * Encodes the specified ChangeStatusOperationEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ChangeStatusOperationEnum.verify|verify} messages.
                         * @param m ChangeStatusOperationEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IChangeStatusOperationEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ChangeStatusOperationEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IChangeStatusOperationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ChangeStatusOperationEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ChangeStatusOperationEnum;

                        /**
                         * Verifies a ChangeStatusOperationEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ChangeStatusOperationEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ChangeStatusOperationEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ChangeStatusOperationEnum;

                        /**
                         * Creates a plain object from a ChangeStatusOperationEnum message. Also converts values to other types if specified.
                         * @param m ChangeStatusOperationEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ChangeStatusOperationEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ChangeStatusOperationEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IChangeStatusResourceTypeEnum): google.ads.googleads.v8.enums.ChangeStatusResourceTypeEnum;

                        /**
                         * Encodes the specified ChangeStatusResourceTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ChangeStatusResourceTypeEnum.verify|verify} messages.
                         * @param m ChangeStatusResourceTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IChangeStatusResourceTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ChangeStatusResourceTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IChangeStatusResourceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ChangeStatusResourceTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ChangeStatusResourceTypeEnum;

                        /**
                         * Verifies a ChangeStatusResourceTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ChangeStatusResourceTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ChangeStatusResourceTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ChangeStatusResourceTypeEnum;

                        /**
                         * Creates a plain object from a ChangeStatusResourceTypeEnum message. Also converts values to other types if specified.
                         * @param m ChangeStatusResourceTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ChangeStatusResourceTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ChangeStatusResourceTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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,
                            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
                        }
                    }

                    /** Properties of a CombinedAudienceStatusEnum. */
                    interface ICombinedAudienceStatusEnum {
                    }

                    /** Represents a CombinedAudienceStatusEnum. */
                    class CombinedAudienceStatusEnum implements ICombinedAudienceStatusEnum {

                        /**
                         * Constructs a new CombinedAudienceStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ICombinedAudienceStatusEnum): google.ads.googleads.v8.enums.CombinedAudienceStatusEnum;

                        /**
                         * Encodes the specified CombinedAudienceStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CombinedAudienceStatusEnum.verify|verify} messages.
                         * @param m CombinedAudienceStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICombinedAudienceStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CombinedAudienceStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ICombinedAudienceStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CombinedAudienceStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.CombinedAudienceStatusEnum;

                        /**
                         * Verifies a CombinedAudienceStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CombinedAudienceStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CombinedAudienceStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CombinedAudienceStatusEnum;

                        /**
                         * Creates a plain object from a CombinedAudienceStatusEnum message. Also converts values to other types if specified.
                         * @param m CombinedAudienceStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CombinedAudienceStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CombinedAudienceStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IConversionActionCountingTypeEnum): google.ads.googleads.v8.enums.ConversionActionCountingTypeEnum;

                        /**
                         * Encodes the specified ConversionActionCountingTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ConversionActionCountingTypeEnum.verify|verify} messages.
                         * @param m ConversionActionCountingTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IConversionActionCountingTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionActionCountingTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IConversionActionCountingTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionActionCountingTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ConversionActionCountingTypeEnum;

                        /**
                         * Verifies a ConversionActionCountingTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionActionCountingTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionActionCountingTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ConversionActionCountingTypeEnum;

                        /**
                         * Creates a plain object from a ConversionActionCountingTypeEnum message. Also converts values to other types if specified.
                         * @param m ConversionActionCountingTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ConversionActionCountingTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionActionCountingTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IConversionActionStatusEnum): google.ads.googleads.v8.enums.ConversionActionStatusEnum;

                        /**
                         * Encodes the specified ConversionActionStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ConversionActionStatusEnum.verify|verify} messages.
                         * @param m ConversionActionStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IConversionActionStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionActionStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IConversionActionStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionActionStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ConversionActionStatusEnum;

                        /**
                         * Verifies a ConversionActionStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionActionStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionActionStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ConversionActionStatusEnum;

                        /**
                         * Creates a plain object from a ConversionActionStatusEnum message. Also converts values to other types if specified.
                         * @param m ConversionActionStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ConversionActionStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionActionStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IConversionActionTypeEnum): google.ads.googleads.v8.enums.ConversionActionTypeEnum;

                        /**
                         * Encodes the specified ConversionActionTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ConversionActionTypeEnum.verify|verify} messages.
                         * @param m ConversionActionTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IConversionActionTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionActionTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IConversionActionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionActionTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ConversionActionTypeEnum;

                        /**
                         * Verifies a ConversionActionTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionActionTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionActionTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ConversionActionTypeEnum;

                        /**
                         * Creates a plain object from a ConversionActionTypeEnum message. Also converts values to other types if specified.
                         * @param m ConversionActionTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ConversionActionTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionActionTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a ConversionAdjustmentTypeEnum. */
                    interface IConversionAdjustmentTypeEnum {
                    }

                    /** Represents a ConversionAdjustmentTypeEnum. */
                    class ConversionAdjustmentTypeEnum implements IConversionAdjustmentTypeEnum {

                        /**
                         * Constructs a new ConversionAdjustmentTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IConversionAdjustmentTypeEnum): google.ads.googleads.v8.enums.ConversionAdjustmentTypeEnum;

                        /**
                         * Encodes the specified ConversionAdjustmentTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ConversionAdjustmentTypeEnum.verify|verify} messages.
                         * @param m ConversionAdjustmentTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IConversionAdjustmentTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionAdjustmentTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IConversionAdjustmentTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionAdjustmentTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ConversionAdjustmentTypeEnum;

                        /**
                         * Verifies a ConversionAdjustmentTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionAdjustmentTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionAdjustmentTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ConversionAdjustmentTypeEnum;

                        /**
                         * Creates a plain object from a ConversionAdjustmentTypeEnum message. Also converts values to other types if specified.
                         * @param m ConversionAdjustmentTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ConversionAdjustmentTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionAdjustmentTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IConversionCustomVariableStatusEnum): google.ads.googleads.v8.enums.ConversionCustomVariableStatusEnum;

                        /**
                         * Encodes the specified ConversionCustomVariableStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ConversionCustomVariableStatusEnum.verify|verify} messages.
                         * @param m ConversionCustomVariableStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IConversionCustomVariableStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionCustomVariableStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IConversionCustomVariableStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionCustomVariableStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ConversionCustomVariableStatusEnum;

                        /**
                         * Verifies a ConversionCustomVariableStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionCustomVariableStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionCustomVariableStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ConversionCustomVariableStatusEnum;

                        /**
                         * Creates a plain object from a ConversionCustomVariableStatusEnum message. Also converts values to other types if specified.
                         * @param m ConversionCustomVariableStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ConversionCustomVariableStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionCustomVariableStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace ConversionCustomVariableStatusEnum {

                        /** ConversionCustomVariableStatus enum. */
                        enum ConversionCustomVariableStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ACTIVATION_NEEDED = 2,
                            ENABLED = 3,
                            PAUSED = 4
                        }
                    }

                    /** Properties of a ConversionValueRuleSetStatusEnum. */
                    interface IConversionValueRuleSetStatusEnum {
                    }

                    /** Represents a ConversionValueRuleSetStatusEnum. */
                    class ConversionValueRuleSetStatusEnum implements IConversionValueRuleSetStatusEnum {

                        /**
                         * Constructs a new ConversionValueRuleSetStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IConversionValueRuleSetStatusEnum): google.ads.googleads.v8.enums.ConversionValueRuleSetStatusEnum;

                        /**
                         * Encodes the specified ConversionValueRuleSetStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ConversionValueRuleSetStatusEnum.verify|verify} messages.
                         * @param m ConversionValueRuleSetStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IConversionValueRuleSetStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionValueRuleSetStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IConversionValueRuleSetStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionValueRuleSetStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ConversionValueRuleSetStatusEnum;

                        /**
                         * Verifies a ConversionValueRuleSetStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionValueRuleSetStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionValueRuleSetStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ConversionValueRuleSetStatusEnum;

                        /**
                         * Creates a plain object from a ConversionValueRuleSetStatusEnum message. Also converts values to other types if specified.
                         * @param m ConversionValueRuleSetStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ConversionValueRuleSetStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionValueRuleSetStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IConversionValueRuleStatusEnum): google.ads.googleads.v8.enums.ConversionValueRuleStatusEnum;

                        /**
                         * Encodes the specified ConversionValueRuleStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ConversionValueRuleStatusEnum.verify|verify} messages.
                         * @param m ConversionValueRuleStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IConversionValueRuleStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionValueRuleStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IConversionValueRuleStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionValueRuleStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ConversionValueRuleStatusEnum;

                        /**
                         * Verifies a ConversionValueRuleStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionValueRuleStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionValueRuleStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ConversionValueRuleStatusEnum;

                        /**
                         * Creates a plain object from a ConversionValueRuleStatusEnum message. Also converts values to other types if specified.
                         * @param m ConversionValueRuleStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ConversionValueRuleStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionValueRuleStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ICriterionSystemServingStatusEnum): google.ads.googleads.v8.enums.CriterionSystemServingStatusEnum;

                        /**
                         * Encodes the specified CriterionSystemServingStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CriterionSystemServingStatusEnum.verify|verify} messages.
                         * @param m CriterionSystemServingStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICriterionSystemServingStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CriterionSystemServingStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ICriterionSystemServingStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CriterionSystemServingStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.CriterionSystemServingStatusEnum;

                        /**
                         * Verifies a CriterionSystemServingStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CriterionSystemServingStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CriterionSystemServingStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CriterionSystemServingStatusEnum;

                        /**
                         * Creates a plain object from a CriterionSystemServingStatusEnum message. Also converts values to other types if specified.
                         * @param m CriterionSystemServingStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CriterionSystemServingStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CriterionSystemServingStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ICriterionTypeEnum): google.ads.googleads.v8.enums.CriterionTypeEnum;

                        /**
                         * Encodes the specified CriterionTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CriterionTypeEnum.verify|verify} messages.
                         * @param m CriterionTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICriterionTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CriterionTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ICriterionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CriterionTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.CriterionTypeEnum;

                        /**
                         * Verifies a CriterionTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CriterionTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CriterionTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CriterionTypeEnum;

                        /**
                         * Creates a plain object from a CriterionTypeEnum message. Also converts values to other types if specified.
                         * @param m CriterionTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CriterionTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CriterionTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a CustomAudienceMemberTypeEnum. */
                    interface ICustomAudienceMemberTypeEnum {
                    }

                    /** Represents a CustomAudienceMemberTypeEnum. */
                    class CustomAudienceMemberTypeEnum implements ICustomAudienceMemberTypeEnum {

                        /**
                         * Constructs a new CustomAudienceMemberTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ICustomAudienceMemberTypeEnum): google.ads.googleads.v8.enums.CustomAudienceMemberTypeEnum;

                        /**
                         * Encodes the specified CustomAudienceMemberTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CustomAudienceMemberTypeEnum.verify|verify} messages.
                         * @param m CustomAudienceMemberTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICustomAudienceMemberTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomAudienceMemberTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ICustomAudienceMemberTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomAudienceMemberTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.CustomAudienceMemberTypeEnum;

                        /**
                         * Verifies a CustomAudienceMemberTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomAudienceMemberTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomAudienceMemberTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CustomAudienceMemberTypeEnum;

                        /**
                         * Creates a plain object from a CustomAudienceMemberTypeEnum message. Also converts values to other types if specified.
                         * @param m CustomAudienceMemberTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CustomAudienceMemberTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomAudienceMemberTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ICustomAudienceStatusEnum): google.ads.googleads.v8.enums.CustomAudienceStatusEnum;

                        /**
                         * Encodes the specified CustomAudienceStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CustomAudienceStatusEnum.verify|verify} messages.
                         * @param m CustomAudienceStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICustomAudienceStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomAudienceStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ICustomAudienceStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomAudienceStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.CustomAudienceStatusEnum;

                        /**
                         * Verifies a CustomAudienceStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomAudienceStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomAudienceStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CustomAudienceStatusEnum;

                        /**
                         * Creates a plain object from a CustomAudienceStatusEnum message. Also converts values to other types if specified.
                         * @param m CustomAudienceStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CustomAudienceStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomAudienceStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ICustomAudienceTypeEnum): google.ads.googleads.v8.enums.CustomAudienceTypeEnum;

                        /**
                         * Encodes the specified CustomAudienceTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CustomAudienceTypeEnum.verify|verify} messages.
                         * @param m CustomAudienceTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICustomAudienceTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomAudienceTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ICustomAudienceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomAudienceTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.CustomAudienceTypeEnum;

                        /**
                         * Verifies a CustomAudienceTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomAudienceTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomAudienceTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CustomAudienceTypeEnum;

                        /**
                         * Creates a plain object from a CustomAudienceTypeEnum message. Also converts values to other types if specified.
                         * @param m CustomAudienceTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CustomAudienceTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomAudienceTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace CustomAudienceTypeEnum {

                        /** CustomAudienceType enum. */
                        enum CustomAudienceType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AUTO = 2,
                            INTEREST = 3,
                            PURCHASE_INTENT = 4,
                            SEARCH = 5
                        }
                    }

                    /** Properties of a CustomInterestMemberTypeEnum. */
                    interface ICustomInterestMemberTypeEnum {
                    }

                    /** Represents a CustomInterestMemberTypeEnum. */
                    class CustomInterestMemberTypeEnum implements ICustomInterestMemberTypeEnum {

                        /**
                         * Constructs a new CustomInterestMemberTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ICustomInterestMemberTypeEnum): google.ads.googleads.v8.enums.CustomInterestMemberTypeEnum;

                        /**
                         * Encodes the specified CustomInterestMemberTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CustomInterestMemberTypeEnum.verify|verify} messages.
                         * @param m CustomInterestMemberTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICustomInterestMemberTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomInterestMemberTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ICustomInterestMemberTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomInterestMemberTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.CustomInterestMemberTypeEnum;

                        /**
                         * Verifies a CustomInterestMemberTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomInterestMemberTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomInterestMemberTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CustomInterestMemberTypeEnum;

                        /**
                         * Creates a plain object from a CustomInterestMemberTypeEnum message. Also converts values to other types if specified.
                         * @param m CustomInterestMemberTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CustomInterestMemberTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomInterestMemberTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ICustomInterestStatusEnum): google.ads.googleads.v8.enums.CustomInterestStatusEnum;

                        /**
                         * Encodes the specified CustomInterestStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CustomInterestStatusEnum.verify|verify} messages.
                         * @param m CustomInterestStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICustomInterestStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomInterestStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ICustomInterestStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomInterestStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.CustomInterestStatusEnum;

                        /**
                         * Verifies a CustomInterestStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomInterestStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomInterestStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CustomInterestStatusEnum;

                        /**
                         * Creates a plain object from a CustomInterestStatusEnum message. Also converts values to other types if specified.
                         * @param m CustomInterestStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CustomInterestStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomInterestStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ICustomInterestTypeEnum): google.ads.googleads.v8.enums.CustomInterestTypeEnum;

                        /**
                         * Encodes the specified CustomInterestTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CustomInterestTypeEnum.verify|verify} messages.
                         * @param m CustomInterestTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICustomInterestTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomInterestTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ICustomInterestTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomInterestTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.CustomInterestTypeEnum;

                        /**
                         * Verifies a CustomInterestTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomInterestTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomInterestTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CustomInterestTypeEnum;

                        /**
                         * Creates a plain object from a CustomInterestTypeEnum message. Also converts values to other types if specified.
                         * @param m CustomInterestTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CustomInterestTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomInterestTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace CustomInterestTypeEnum {

                        /** CustomInterestType enum. */
                        enum CustomInterestType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CUSTOM_AFFINITY = 2,
                            CUSTOM_INTENT = 3
                        }
                    }

                    /** Properties of a CustomPlaceholderFieldEnum. */
                    interface ICustomPlaceholderFieldEnum {
                    }

                    /** Represents a CustomPlaceholderFieldEnum. */
                    class CustomPlaceholderFieldEnum implements ICustomPlaceholderFieldEnum {

                        /**
                         * Constructs a new CustomPlaceholderFieldEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.ICustomPlaceholderFieldEnum);

                        /**
                         * Creates a new CustomPlaceholderFieldEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomPlaceholderFieldEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.ICustomPlaceholderFieldEnum): google.ads.googleads.v8.enums.CustomPlaceholderFieldEnum;

                        /**
                         * Encodes the specified CustomPlaceholderFieldEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CustomPlaceholderFieldEnum.verify|verify} messages.
                         * @param m CustomPlaceholderFieldEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICustomPlaceholderFieldEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomPlaceholderFieldEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.CustomPlaceholderFieldEnum.verify|verify} messages.
                         * @param message CustomPlaceholderFieldEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.ICustomPlaceholderFieldEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomPlaceholderFieldEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns CustomPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.CustomPlaceholderFieldEnum;

                        /**
                         * Decodes a CustomPlaceholderFieldEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.CustomPlaceholderFieldEnum;

                        /**
                         * Verifies a CustomPlaceholderFieldEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomPlaceholderFieldEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomPlaceholderFieldEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CustomPlaceholderFieldEnum;

                        /**
                         * Creates a plain object from a CustomPlaceholderFieldEnum message. Also converts values to other types if specified.
                         * @param m CustomPlaceholderFieldEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CustomPlaceholderFieldEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomPlaceholderFieldEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace CustomPlaceholderFieldEnum {

                        /** CustomPlaceholderField enum. */
                        enum CustomPlaceholderField {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ID = 2,
                            ID2 = 3,
                            ITEM_TITLE = 4,
                            ITEM_SUBTITLE = 5,
                            ITEM_DESCRIPTION = 6,
                            ITEM_ADDRESS = 7,
                            PRICE = 8,
                            FORMATTED_PRICE = 9,
                            SALE_PRICE = 10,
                            FORMATTED_SALE_PRICE = 11,
                            IMAGE_URL = 12,
                            ITEM_CATEGORY = 13,
                            FINAL_URLS = 14,
                            FINAL_MOBILE_URLS = 15,
                            TRACKING_URL = 16,
                            CONTEXTUAL_KEYWORDS = 17,
                            ANDROID_APP_LINK = 18,
                            SIMILAR_IDS = 19,
                            IOS_APP_LINK = 20,
                            IOS_APP_STORE_ID = 21
                        }
                    }

                    /** Properties of a CustomerPayPerConversionEligibilityFailureReasonEnum. */
                    interface ICustomerPayPerConversionEligibilityFailureReasonEnum {
                    }

                    /** Represents a CustomerPayPerConversionEligibilityFailureReasonEnum. */
                    class CustomerPayPerConversionEligibilityFailureReasonEnum implements ICustomerPayPerConversionEligibilityFailureReasonEnum {

                        /**
                         * Constructs a new CustomerPayPerConversionEligibilityFailureReasonEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ICustomerPayPerConversionEligibilityFailureReasonEnum): google.ads.googleads.v8.enums.CustomerPayPerConversionEligibilityFailureReasonEnum;

                        /**
                         * Encodes the specified CustomerPayPerConversionEligibilityFailureReasonEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.CustomerPayPerConversionEligibilityFailureReasonEnum.verify|verify} messages.
                         * @param m CustomerPayPerConversionEligibilityFailureReasonEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ICustomerPayPerConversionEligibilityFailureReasonEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerPayPerConversionEligibilityFailureReasonEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ICustomerPayPerConversionEligibilityFailureReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerPayPerConversionEligibilityFailureReasonEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.CustomerPayPerConversionEligibilityFailureReasonEnum;

                        /**
                         * Verifies a CustomerPayPerConversionEligibilityFailureReasonEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerPayPerConversionEligibilityFailureReasonEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerPayPerConversionEligibilityFailureReasonEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.CustomerPayPerConversionEligibilityFailureReasonEnum;

                        /**
                         * Creates a plain object from a CustomerPayPerConversionEligibilityFailureReasonEnum message. Also converts values to other types if specified.
                         * @param m CustomerPayPerConversionEligibilityFailureReasonEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.CustomerPayPerConversionEligibilityFailureReasonEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerPayPerConversionEligibilityFailureReasonEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 DataDrivenModelStatusEnum. */
                    interface IDataDrivenModelStatusEnum {
                    }

                    /** Represents a DataDrivenModelStatusEnum. */
                    class DataDrivenModelStatusEnum implements IDataDrivenModelStatusEnum {

                        /**
                         * Constructs a new DataDrivenModelStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IDataDrivenModelStatusEnum): google.ads.googleads.v8.enums.DataDrivenModelStatusEnum;

                        /**
                         * Encodes the specified DataDrivenModelStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.DataDrivenModelStatusEnum.verify|verify} messages.
                         * @param m DataDrivenModelStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IDataDrivenModelStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DataDrivenModelStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IDataDrivenModelStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DataDrivenModelStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.DataDrivenModelStatusEnum;

                        /**
                         * Verifies a DataDrivenModelStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DataDrivenModelStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns DataDrivenModelStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.DataDrivenModelStatusEnum;

                        /**
                         * Creates a plain object from a DataDrivenModelStatusEnum message. Also converts values to other types if specified.
                         * @param m DataDrivenModelStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.DataDrivenModelStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DataDrivenModelStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace DataDrivenModelStatusEnum {

                        /** DataDrivenModelStatus enum. */
                        enum DataDrivenModelStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AVAILABLE = 2,
                            STALE = 3,
                            EXPIRED = 4,
                            NEVER_GENERATED = 5
                        }
                    }

                    /** Properties of a DistanceBucketEnum. */
                    interface IDistanceBucketEnum {
                    }

                    /** Represents a DistanceBucketEnum. */
                    class DistanceBucketEnum implements IDistanceBucketEnum {

                        /**
                         * Constructs a new DistanceBucketEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IDistanceBucketEnum): google.ads.googleads.v8.enums.DistanceBucketEnum;

                        /**
                         * Encodes the specified DistanceBucketEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.DistanceBucketEnum.verify|verify} messages.
                         * @param m DistanceBucketEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IDistanceBucketEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DistanceBucketEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IDistanceBucketEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DistanceBucketEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.DistanceBucketEnum;

                        /**
                         * Verifies a DistanceBucketEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DistanceBucketEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns DistanceBucketEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.DistanceBucketEnum;

                        /**
                         * Creates a plain object from a DistanceBucketEnum message. Also converts values to other types if specified.
                         * @param m DistanceBucketEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.DistanceBucketEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DistanceBucketEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 a DsaPageFeedCriterionFieldEnum. */
                    interface IDsaPageFeedCriterionFieldEnum {
                    }

                    /** Represents a DsaPageFeedCriterionFieldEnum. */
                    class DsaPageFeedCriterionFieldEnum implements IDsaPageFeedCriterionFieldEnum {

                        /**
                         * Constructs a new DsaPageFeedCriterionFieldEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IDsaPageFeedCriterionFieldEnum);

                        /**
                         * Creates a new DsaPageFeedCriterionFieldEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DsaPageFeedCriterionFieldEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IDsaPageFeedCriterionFieldEnum): google.ads.googleads.v8.enums.DsaPageFeedCriterionFieldEnum;

                        /**
                         * Encodes the specified DsaPageFeedCriterionFieldEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.DsaPageFeedCriterionFieldEnum.verify|verify} messages.
                         * @param m DsaPageFeedCriterionFieldEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IDsaPageFeedCriterionFieldEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DsaPageFeedCriterionFieldEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.DsaPageFeedCriterionFieldEnum.verify|verify} messages.
                         * @param message DsaPageFeedCriterionFieldEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IDsaPageFeedCriterionFieldEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DsaPageFeedCriterionFieldEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns DsaPageFeedCriterionFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.DsaPageFeedCriterionFieldEnum;

                        /**
                         * Decodes a DsaPageFeedCriterionFieldEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DsaPageFeedCriterionFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.DsaPageFeedCriterionFieldEnum;

                        /**
                         * Verifies a DsaPageFeedCriterionFieldEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DsaPageFeedCriterionFieldEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns DsaPageFeedCriterionFieldEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.DsaPageFeedCriterionFieldEnum;

                        /**
                         * Creates a plain object from a DsaPageFeedCriterionFieldEnum message. Also converts values to other types if specified.
                         * @param m DsaPageFeedCriterionFieldEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.DsaPageFeedCriterionFieldEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DsaPageFeedCriterionFieldEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace DsaPageFeedCriterionFieldEnum {

                        /** DsaPageFeedCriterionField enum. */
                        enum DsaPageFeedCriterionField {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PAGE_URL = 2,
                            LABEL = 3
                        }
                    }

                    /** Properties of an EducationPlaceholderFieldEnum. */
                    interface IEducationPlaceholderFieldEnum {
                    }

                    /** Represents an EducationPlaceholderFieldEnum. */
                    class EducationPlaceholderFieldEnum implements IEducationPlaceholderFieldEnum {

                        /**
                         * Constructs a new EducationPlaceholderFieldEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IEducationPlaceholderFieldEnum);

                        /**
                         * Creates a new EducationPlaceholderFieldEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns EducationPlaceholderFieldEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IEducationPlaceholderFieldEnum): google.ads.googleads.v8.enums.EducationPlaceholderFieldEnum;

                        /**
                         * Encodes the specified EducationPlaceholderFieldEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.EducationPlaceholderFieldEnum.verify|verify} messages.
                         * @param m EducationPlaceholderFieldEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IEducationPlaceholderFieldEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified EducationPlaceholderFieldEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.EducationPlaceholderFieldEnum.verify|verify} messages.
                         * @param message EducationPlaceholderFieldEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IEducationPlaceholderFieldEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an EducationPlaceholderFieldEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns EducationPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.EducationPlaceholderFieldEnum;

                        /**
                         * Decodes an EducationPlaceholderFieldEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns EducationPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.EducationPlaceholderFieldEnum;

                        /**
                         * Verifies an EducationPlaceholderFieldEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an EducationPlaceholderFieldEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns EducationPlaceholderFieldEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.EducationPlaceholderFieldEnum;

                        /**
                         * Creates a plain object from an EducationPlaceholderFieldEnum message. Also converts values to other types if specified.
                         * @param m EducationPlaceholderFieldEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.EducationPlaceholderFieldEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this EducationPlaceholderFieldEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace EducationPlaceholderFieldEnum {

                        /** EducationPlaceholderField enum. */
                        enum EducationPlaceholderField {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PROGRAM_ID = 2,
                            LOCATION_ID = 3,
                            PROGRAM_NAME = 4,
                            AREA_OF_STUDY = 5,
                            PROGRAM_DESCRIPTION = 6,
                            SCHOOL_NAME = 7,
                            ADDRESS = 8,
                            THUMBNAIL_IMAGE_URL = 9,
                            ALTERNATIVE_THUMBNAIL_IMAGE_URL = 10,
                            FINAL_URLS = 11,
                            FINAL_MOBILE_URLS = 12,
                            TRACKING_URL = 13,
                            CONTEXTUAL_KEYWORDS = 14,
                            ANDROID_APP_LINK = 15,
                            SIMILAR_PROGRAM_IDS = 16,
                            IOS_APP_LINK = 17,
                            IOS_APP_STORE_ID = 18
                        }
                    }

                    /** Properties of an ExtensionSettingDeviceEnum. */
                    interface IExtensionSettingDeviceEnum {
                    }

                    /** Represents an ExtensionSettingDeviceEnum. */
                    class ExtensionSettingDeviceEnum implements IExtensionSettingDeviceEnum {

                        /**
                         * Constructs a new ExtensionSettingDeviceEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IExtensionSettingDeviceEnum);

                        /**
                         * Creates a new ExtensionSettingDeviceEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExtensionSettingDeviceEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IExtensionSettingDeviceEnum): google.ads.googleads.v8.enums.ExtensionSettingDeviceEnum;

                        /**
                         * Encodes the specified ExtensionSettingDeviceEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ExtensionSettingDeviceEnum.verify|verify} messages.
                         * @param m ExtensionSettingDeviceEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IExtensionSettingDeviceEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExtensionSettingDeviceEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.ExtensionSettingDeviceEnum.verify|verify} messages.
                         * @param message ExtensionSettingDeviceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IExtensionSettingDeviceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExtensionSettingDeviceEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns ExtensionSettingDeviceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.ExtensionSettingDeviceEnum;

                        /**
                         * Decodes an ExtensionSettingDeviceEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExtensionSettingDeviceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.ExtensionSettingDeviceEnum;

                        /**
                         * Verifies an ExtensionSettingDeviceEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an ExtensionSettingDeviceEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ExtensionSettingDeviceEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ExtensionSettingDeviceEnum;

                        /**
                         * Creates a plain object from an ExtensionSettingDeviceEnum message. Also converts values to other types if specified.
                         * @param m ExtensionSettingDeviceEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ExtensionSettingDeviceEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExtensionSettingDeviceEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace ExtensionSettingDeviceEnum {

                        /** ExtensionSettingDevice enum. */
                        enum ExtensionSettingDevice {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MOBILE = 2,
                            DESKTOP = 3
                        }
                    }

                    /** Properties of an ExtensionTypeEnum. */
                    interface IExtensionTypeEnum {
                    }

                    /** Represents an ExtensionTypeEnum. */
                    class ExtensionTypeEnum implements IExtensionTypeEnum {

                        /**
                         * Constructs a new ExtensionTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IExtensionTypeEnum);

                        /**
                         * Creates a new ExtensionTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExtensionTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IExtensionTypeEnum): google.ads.googleads.v8.enums.ExtensionTypeEnum;

                        /**
                         * Encodes the specified ExtensionTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ExtensionTypeEnum.verify|verify} messages.
                         * @param m ExtensionTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IExtensionTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExtensionTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.ExtensionTypeEnum.verify|verify} messages.
                         * @param message ExtensionTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IExtensionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExtensionTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns ExtensionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.ExtensionTypeEnum;

                        /**
                         * Decodes an ExtensionTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExtensionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.ExtensionTypeEnum;

                        /**
                         * Verifies an ExtensionTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an ExtensionTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ExtensionTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ExtensionTypeEnum;

                        /**
                         * Creates a plain object from an ExtensionTypeEnum message. Also converts values to other types if specified.
                         * @param m ExtensionTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ExtensionTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExtensionTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace ExtensionTypeEnum {

                        /** ExtensionType enum. */
                        enum ExtensionType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NONE = 2,
                            APP = 3,
                            CALL = 4,
                            CALLOUT = 5,
                            MESSAGE = 6,
                            PRICE = 7,
                            PROMOTION = 8,
                            SITELINK = 10,
                            STRUCTURED_SNIPPET = 11,
                            LOCATION = 12,
                            AFFILIATE_LOCATION = 13,
                            HOTEL_CALLOUT = 15,
                            IMAGE = 16
                        }
                    }

                    /** Properties of a FeedAttributeTypeEnum. */
                    interface IFeedAttributeTypeEnum {
                    }

                    /** Represents a FeedAttributeTypeEnum. */
                    class FeedAttributeTypeEnum implements IFeedAttributeTypeEnum {

                        /**
                         * Constructs a new FeedAttributeTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IFeedAttributeTypeEnum);

                        /**
                         * Creates a new FeedAttributeTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedAttributeTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IFeedAttributeTypeEnum): google.ads.googleads.v8.enums.FeedAttributeTypeEnum;

                        /**
                         * Encodes the specified FeedAttributeTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.FeedAttributeTypeEnum.verify|verify} messages.
                         * @param m FeedAttributeTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IFeedAttributeTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedAttributeTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.FeedAttributeTypeEnum.verify|verify} messages.
                         * @param message FeedAttributeTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IFeedAttributeTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedAttributeTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedAttributeTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.FeedAttributeTypeEnum;

                        /**
                         * Decodes a FeedAttributeTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedAttributeTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.FeedAttributeTypeEnum;

                        /**
                         * Verifies a FeedAttributeTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedAttributeTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedAttributeTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.FeedAttributeTypeEnum;

                        /**
                         * Creates a plain object from a FeedAttributeTypeEnum message. Also converts values to other types if specified.
                         * @param m FeedAttributeTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.FeedAttributeTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedAttributeTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace FeedAttributeTypeEnum {

                        /** FeedAttributeType enum. */
                        enum FeedAttributeType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INT64 = 2,
                            DOUBLE = 3,
                            STRING = 4,
                            BOOLEAN = 5,
                            URL = 6,
                            DATE_TIME = 7,
                            INT64_LIST = 8,
                            DOUBLE_LIST = 9,
                            STRING_LIST = 10,
                            BOOLEAN_LIST = 11,
                            URL_LIST = 12,
                            DATE_TIME_LIST = 13,
                            PRICE = 14
                        }
                    }

                    /** Properties of a FeedItemQualityApprovalStatusEnum. */
                    interface IFeedItemQualityApprovalStatusEnum {
                    }

                    /** Represents a FeedItemQualityApprovalStatusEnum. */
                    class FeedItemQualityApprovalStatusEnum implements IFeedItemQualityApprovalStatusEnum {

                        /**
                         * Constructs a new FeedItemQualityApprovalStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IFeedItemQualityApprovalStatusEnum);

                        /**
                         * Creates a new FeedItemQualityApprovalStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedItemQualityApprovalStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IFeedItemQualityApprovalStatusEnum): google.ads.googleads.v8.enums.FeedItemQualityApprovalStatusEnum;

                        /**
                         * Encodes the specified FeedItemQualityApprovalStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.FeedItemQualityApprovalStatusEnum.verify|verify} messages.
                         * @param m FeedItemQualityApprovalStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IFeedItemQualityApprovalStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemQualityApprovalStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.FeedItemQualityApprovalStatusEnum.verify|verify} messages.
                         * @param message FeedItemQualityApprovalStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IFeedItemQualityApprovalStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemQualityApprovalStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedItemQualityApprovalStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.FeedItemQualityApprovalStatusEnum;

                        /**
                         * Decodes a FeedItemQualityApprovalStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedItemQualityApprovalStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.FeedItemQualityApprovalStatusEnum;

                        /**
                         * Verifies a FeedItemQualityApprovalStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemQualityApprovalStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedItemQualityApprovalStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.FeedItemQualityApprovalStatusEnum;

                        /**
                         * Creates a plain object from a FeedItemQualityApprovalStatusEnum message. Also converts values to other types if specified.
                         * @param m FeedItemQualityApprovalStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.FeedItemQualityApprovalStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemQualityApprovalStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace FeedItemQualityApprovalStatusEnum {

                        /** FeedItemQualityApprovalStatus enum. */
                        enum FeedItemQualityApprovalStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            APPROVED = 2,
                            DISAPPROVED = 3
                        }
                    }

                    /** Properties of a FeedItemQualityDisapprovalReasonEnum. */
                    interface IFeedItemQualityDisapprovalReasonEnum {
                    }

                    /** Represents a FeedItemQualityDisapprovalReasonEnum. */
                    class FeedItemQualityDisapprovalReasonEnum implements IFeedItemQualityDisapprovalReasonEnum {

                        /**
                         * Constructs a new FeedItemQualityDisapprovalReasonEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IFeedItemQualityDisapprovalReasonEnum);

                        /**
                         * Creates a new FeedItemQualityDisapprovalReasonEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedItemQualityDisapprovalReasonEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IFeedItemQualityDisapprovalReasonEnum): google.ads.googleads.v8.enums.FeedItemQualityDisapprovalReasonEnum;

                        /**
                         * Encodes the specified FeedItemQualityDisapprovalReasonEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.FeedItemQualityDisapprovalReasonEnum.verify|verify} messages.
                         * @param m FeedItemQualityDisapprovalReasonEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IFeedItemQualityDisapprovalReasonEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemQualityDisapprovalReasonEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.FeedItemQualityDisapprovalReasonEnum.verify|verify} messages.
                         * @param message FeedItemQualityDisapprovalReasonEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IFeedItemQualityDisapprovalReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemQualityDisapprovalReasonEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedItemQualityDisapprovalReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.FeedItemQualityDisapprovalReasonEnum;

                        /**
                         * Decodes a FeedItemQualityDisapprovalReasonEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedItemQualityDisapprovalReasonEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.FeedItemQualityDisapprovalReasonEnum;

                        /**
                         * Verifies a FeedItemQualityDisapprovalReasonEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemQualityDisapprovalReasonEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedItemQualityDisapprovalReasonEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.FeedItemQualityDisapprovalReasonEnum;

                        /**
                         * Creates a plain object from a FeedItemQualityDisapprovalReasonEnum message. Also converts values to other types if specified.
                         * @param m FeedItemQualityDisapprovalReasonEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.FeedItemQualityDisapprovalReasonEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemQualityDisapprovalReasonEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace FeedItemQualityDisapprovalReasonEnum {

                        /** FeedItemQualityDisapprovalReason enum. */
                        enum FeedItemQualityDisapprovalReason {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PRICE_TABLE_REPETITIVE_HEADERS = 2,
                            PRICE_TABLE_REPETITIVE_DESCRIPTION = 3,
                            PRICE_TABLE_INCONSISTENT_ROWS = 4,
                            PRICE_DESCRIPTION_HAS_PRICE_QUALIFIERS = 5,
                            PRICE_UNSUPPORTED_LANGUAGE = 6,
                            PRICE_TABLE_ROW_HEADER_TABLE_TYPE_MISMATCH = 7,
                            PRICE_TABLE_ROW_HEADER_HAS_PROMOTIONAL_TEXT = 8,
                            PRICE_TABLE_ROW_DESCRIPTION_NOT_RELEVANT = 9,
                            PRICE_TABLE_ROW_DESCRIPTION_HAS_PROMOTIONAL_TEXT = 10,
                            PRICE_TABLE_ROW_HEADER_DESCRIPTION_REPETITIVE = 11,
                            PRICE_TABLE_ROW_UNRATEABLE = 12,
                            PRICE_TABLE_ROW_PRICE_INVALID = 13,
                            PRICE_TABLE_ROW_URL_INVALID = 14,
                            PRICE_HEADER_OR_DESCRIPTION_HAS_PRICE = 15,
                            STRUCTURED_SNIPPETS_HEADER_POLICY_VIOLATED = 16,
                            STRUCTURED_SNIPPETS_REPEATED_VALUES = 17,
                            STRUCTURED_SNIPPETS_EDITORIAL_GUIDELINES = 18,
                            STRUCTURED_SNIPPETS_HAS_PROMOTIONAL_TEXT = 19
                        }
                    }

                    /** Properties of a FeedItemSetStatusEnum. */
                    interface IFeedItemSetStatusEnum {
                    }

                    /** Represents a FeedItemSetStatusEnum. */
                    class FeedItemSetStatusEnum implements IFeedItemSetStatusEnum {

                        /**
                         * Constructs a new FeedItemSetStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IFeedItemSetStatusEnum);

                        /**
                         * Creates a new FeedItemSetStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedItemSetStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IFeedItemSetStatusEnum): google.ads.googleads.v8.enums.FeedItemSetStatusEnum;

                        /**
                         * Encodes the specified FeedItemSetStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.FeedItemSetStatusEnum.verify|verify} messages.
                         * @param m FeedItemSetStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IFeedItemSetStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemSetStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.FeedItemSetStatusEnum.verify|verify} messages.
                         * @param message FeedItemSetStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IFeedItemSetStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemSetStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedItemSetStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.FeedItemSetStatusEnum;

                        /**
                         * Decodes a FeedItemSetStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedItemSetStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.FeedItemSetStatusEnum;

                        /**
                         * Verifies a FeedItemSetStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemSetStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedItemSetStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.FeedItemSetStatusEnum;

                        /**
                         * Creates a plain object from a FeedItemSetStatusEnum message. Also converts values to other types if specified.
                         * @param m FeedItemSetStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.FeedItemSetStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemSetStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace FeedItemSetStatusEnum {

                        /** FeedItemSetStatus enum. */
                        enum FeedItemSetStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3
                        }
                    }

                    /** Properties of a FeedItemStatusEnum. */
                    interface IFeedItemStatusEnum {
                    }

                    /** Represents a FeedItemStatusEnum. */
                    class FeedItemStatusEnum implements IFeedItemStatusEnum {

                        /**
                         * Constructs a new FeedItemStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IFeedItemStatusEnum);

                        /**
                         * Creates a new FeedItemStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedItemStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IFeedItemStatusEnum): google.ads.googleads.v8.enums.FeedItemStatusEnum;

                        /**
                         * Encodes the specified FeedItemStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.FeedItemStatusEnum.verify|verify} messages.
                         * @param m FeedItemStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IFeedItemStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.FeedItemStatusEnum.verify|verify} messages.
                         * @param message FeedItemStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IFeedItemStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedItemStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.FeedItemStatusEnum;

                        /**
                         * Decodes a FeedItemStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedItemStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.FeedItemStatusEnum;

                        /**
                         * Verifies a FeedItemStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedItemStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.FeedItemStatusEnum;

                        /**
                         * Creates a plain object from a FeedItemStatusEnum message. Also converts values to other types if specified.
                         * @param m FeedItemStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.FeedItemStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace FeedItemStatusEnum {

                        /** FeedItemStatus enum. */
                        enum FeedItemStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3
                        }
                    }

                    /** Properties of a FeedItemTargetDeviceEnum. */
                    interface IFeedItemTargetDeviceEnum {
                    }

                    /** Represents a FeedItemTargetDeviceEnum. */
                    class FeedItemTargetDeviceEnum implements IFeedItemTargetDeviceEnum {

                        /**
                         * Constructs a new FeedItemTargetDeviceEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IFeedItemTargetDeviceEnum);

                        /**
                         * Creates a new FeedItemTargetDeviceEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedItemTargetDeviceEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IFeedItemTargetDeviceEnum): google.ads.googleads.v8.enums.FeedItemTargetDeviceEnum;

                        /**
                         * Encodes the specified FeedItemTargetDeviceEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.FeedItemTargetDeviceEnum.verify|verify} messages.
                         * @param m FeedItemTargetDeviceEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IFeedItemTargetDeviceEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemTargetDeviceEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.FeedItemTargetDeviceEnum.verify|verify} messages.
                         * @param message FeedItemTargetDeviceEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IFeedItemTargetDeviceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemTargetDeviceEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedItemTargetDeviceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.FeedItemTargetDeviceEnum;

                        /**
                         * Decodes a FeedItemTargetDeviceEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedItemTargetDeviceEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.FeedItemTargetDeviceEnum;

                        /**
                         * Verifies a FeedItemTargetDeviceEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemTargetDeviceEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedItemTargetDeviceEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.FeedItemTargetDeviceEnum;

                        /**
                         * Creates a plain object from a FeedItemTargetDeviceEnum message. Also converts values to other types if specified.
                         * @param m FeedItemTargetDeviceEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.FeedItemTargetDeviceEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemTargetDeviceEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace FeedItemTargetDeviceEnum {

                        /** FeedItemTargetDevice enum. */
                        enum FeedItemTargetDevice {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MOBILE = 2
                        }
                    }

                    /** Properties of a FeedItemTargetStatusEnum. */
                    interface IFeedItemTargetStatusEnum {
                    }

                    /** Represents a FeedItemTargetStatusEnum. */
                    class FeedItemTargetStatusEnum implements IFeedItemTargetStatusEnum {

                        /**
                         * Constructs a new FeedItemTargetStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IFeedItemTargetStatusEnum);

                        /**
                         * Creates a new FeedItemTargetStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedItemTargetStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IFeedItemTargetStatusEnum): google.ads.googleads.v8.enums.FeedItemTargetStatusEnum;

                        /**
                         * Encodes the specified FeedItemTargetStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.FeedItemTargetStatusEnum.verify|verify} messages.
                         * @param m FeedItemTargetStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IFeedItemTargetStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemTargetStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.FeedItemTargetStatusEnum.verify|verify} messages.
                         * @param message FeedItemTargetStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IFeedItemTargetStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemTargetStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedItemTargetStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.FeedItemTargetStatusEnum;

                        /**
                         * Decodes a FeedItemTargetStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedItemTargetStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.FeedItemTargetStatusEnum;

                        /**
                         * Verifies a FeedItemTargetStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemTargetStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedItemTargetStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.FeedItemTargetStatusEnum;

                        /**
                         * Creates a plain object from a FeedItemTargetStatusEnum message. Also converts values to other types if specified.
                         * @param m FeedItemTargetStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.FeedItemTargetStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemTargetStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace FeedItemTargetStatusEnum {

                        /** FeedItemTargetStatus enum. */
                        enum FeedItemTargetStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3
                        }
                    }

                    /** Properties of a FeedItemTargetTypeEnum. */
                    interface IFeedItemTargetTypeEnum {
                    }

                    /** Represents a FeedItemTargetTypeEnum. */
                    class FeedItemTargetTypeEnum implements IFeedItemTargetTypeEnum {

                        /**
                         * Constructs a new FeedItemTargetTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IFeedItemTargetTypeEnum);

                        /**
                         * Creates a new FeedItemTargetTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedItemTargetTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IFeedItemTargetTypeEnum): google.ads.googleads.v8.enums.FeedItemTargetTypeEnum;

                        /**
                         * Encodes the specified FeedItemTargetTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.FeedItemTargetTypeEnum.verify|verify} messages.
                         * @param m FeedItemTargetTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IFeedItemTargetTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemTargetTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.FeedItemTargetTypeEnum.verify|verify} messages.
                         * @param message FeedItemTargetTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IFeedItemTargetTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemTargetTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedItemTargetTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.FeedItemTargetTypeEnum;

                        /**
                         * Decodes a FeedItemTargetTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedItemTargetTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.FeedItemTargetTypeEnum;

                        /**
                         * Verifies a FeedItemTargetTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemTargetTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedItemTargetTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.FeedItemTargetTypeEnum;

                        /**
                         * Creates a plain object from a FeedItemTargetTypeEnum message. Also converts values to other types if specified.
                         * @param m FeedItemTargetTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.FeedItemTargetTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemTargetTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace FeedItemTargetTypeEnum {

                        /** FeedItemTargetType enum. */
                        enum FeedItemTargetType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CAMPAIGN = 2,
                            AD_GROUP = 3,
                            CRITERION = 4
                        }
                    }

                    /** Properties of a FeedItemValidationStatusEnum. */
                    interface IFeedItemValidationStatusEnum {
                    }

                    /** Represents a FeedItemValidationStatusEnum. */
                    class FeedItemValidationStatusEnum implements IFeedItemValidationStatusEnum {

                        /**
                         * Constructs a new FeedItemValidationStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IFeedItemValidationStatusEnum);

                        /**
                         * Creates a new FeedItemValidationStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedItemValidationStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IFeedItemValidationStatusEnum): google.ads.googleads.v8.enums.FeedItemValidationStatusEnum;

                        /**
                         * Encodes the specified FeedItemValidationStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.FeedItemValidationStatusEnum.verify|verify} messages.
                         * @param m FeedItemValidationStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IFeedItemValidationStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemValidationStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.FeedItemValidationStatusEnum.verify|verify} messages.
                         * @param message FeedItemValidationStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IFeedItemValidationStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemValidationStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedItemValidationStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.FeedItemValidationStatusEnum;

                        /**
                         * Decodes a FeedItemValidationStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedItemValidationStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.FeedItemValidationStatusEnum;

                        /**
                         * Verifies a FeedItemValidationStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemValidationStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedItemValidationStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.FeedItemValidationStatusEnum;

                        /**
                         * Creates a plain object from a FeedItemValidationStatusEnum message. Also converts values to other types if specified.
                         * @param m FeedItemValidationStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.FeedItemValidationStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemValidationStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace FeedItemValidationStatusEnum {

                        /** FeedItemValidationStatus enum. */
                        enum FeedItemValidationStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PENDING = 2,
                            INVALID = 3,
                            VALID = 4
                        }
                    }

                    /** Properties of a FeedLinkStatusEnum. */
                    interface IFeedLinkStatusEnum {
                    }

                    /** Represents a FeedLinkStatusEnum. */
                    class FeedLinkStatusEnum implements IFeedLinkStatusEnum {

                        /**
                         * Constructs a new FeedLinkStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IFeedLinkStatusEnum);

                        /**
                         * Creates a new FeedLinkStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedLinkStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IFeedLinkStatusEnum): google.ads.googleads.v8.enums.FeedLinkStatusEnum;

                        /**
                         * Encodes the specified FeedLinkStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.FeedLinkStatusEnum.verify|verify} messages.
                         * @param m FeedLinkStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IFeedLinkStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedLinkStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.FeedLinkStatusEnum.verify|verify} messages.
                         * @param message FeedLinkStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IFeedLinkStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedLinkStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedLinkStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.FeedLinkStatusEnum;

                        /**
                         * Decodes a FeedLinkStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedLinkStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.FeedLinkStatusEnum;

                        /**
                         * Verifies a FeedLinkStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedLinkStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedLinkStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.FeedLinkStatusEnum;

                        /**
                         * Creates a plain object from a FeedLinkStatusEnum message. Also converts values to other types if specified.
                         * @param m FeedLinkStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.FeedLinkStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedLinkStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace FeedLinkStatusEnum {

                        /** FeedLinkStatus enum. */
                        enum FeedLinkStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3
                        }
                    }

                    /** Properties of a FeedMappingCriterionTypeEnum. */
                    interface IFeedMappingCriterionTypeEnum {
                    }

                    /** Represents a FeedMappingCriterionTypeEnum. */
                    class FeedMappingCriterionTypeEnum implements IFeedMappingCriterionTypeEnum {

                        /**
                         * Constructs a new FeedMappingCriterionTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IFeedMappingCriterionTypeEnum);

                        /**
                         * Creates a new FeedMappingCriterionTypeEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedMappingCriterionTypeEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IFeedMappingCriterionTypeEnum): google.ads.googleads.v8.enums.FeedMappingCriterionTypeEnum;

                        /**
                         * Encodes the specified FeedMappingCriterionTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.FeedMappingCriterionTypeEnum.verify|verify} messages.
                         * @param m FeedMappingCriterionTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IFeedMappingCriterionTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedMappingCriterionTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.FeedMappingCriterionTypeEnum.verify|verify} messages.
                         * @param message FeedMappingCriterionTypeEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IFeedMappingCriterionTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedMappingCriterionTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedMappingCriterionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.FeedMappingCriterionTypeEnum;

                        /**
                         * Decodes a FeedMappingCriterionTypeEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedMappingCriterionTypeEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.FeedMappingCriterionTypeEnum;

                        /**
                         * Verifies a FeedMappingCriterionTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedMappingCriterionTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedMappingCriterionTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.FeedMappingCriterionTypeEnum;

                        /**
                         * Creates a plain object from a FeedMappingCriterionTypeEnum message. Also converts values to other types if specified.
                         * @param m FeedMappingCriterionTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.FeedMappingCriterionTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedMappingCriterionTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace FeedMappingCriterionTypeEnum {

                        /** FeedMappingCriterionType enum. */
                        enum FeedMappingCriterionType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            LOCATION_EXTENSION_TARGETING = 4,
                            DSA_PAGE_FEED = 3
                        }
                    }

                    /** Properties of a FeedMappingStatusEnum. */
                    interface IFeedMappingStatusEnum {
                    }

                    /** Represents a FeedMappingStatusEnum. */
                    class FeedMappingStatusEnum implements IFeedMappingStatusEnum {

                        /**
                         * Constructs a new FeedMappingStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IFeedMappingStatusEnum);

                        /**
                         * Creates a new FeedMappingStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedMappingStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IFeedMappingStatusEnum): google.ads.googleads.v8.enums.FeedMappingStatusEnum;

                        /**
                         * Encodes the specified FeedMappingStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.FeedMappingStatusEnum.verify|verify} messages.
                         * @param m FeedMappingStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IFeedMappingStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedMappingStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.FeedMappingStatusEnum.verify|verify} messages.
                         * @param message FeedMappingStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IFeedMappingStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedMappingStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedMappingStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.FeedMappingStatusEnum;

                        /**
                         * Decodes a FeedMappingStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedMappingStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.FeedMappingStatusEnum;

                        /**
                         * Verifies a FeedMappingStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedMappingStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedMappingStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.FeedMappingStatusEnum;

                        /**
                         * Creates a plain object from a FeedMappingStatusEnum message. Also converts values to other types if specified.
                         * @param m FeedMappingStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.FeedMappingStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedMappingStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace FeedMappingStatusEnum {

                        /** FeedMappingStatus enum. */
                        enum FeedMappingStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3
                        }
                    }

                    /** Properties of a FeedOriginEnum. */
                    interface IFeedOriginEnum {
                    }

                    /** Represents a FeedOriginEnum. */
                    class FeedOriginEnum implements IFeedOriginEnum {

                        /**
                         * Constructs a new FeedOriginEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IFeedOriginEnum);

                        /**
                         * Creates a new FeedOriginEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedOriginEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IFeedOriginEnum): google.ads.googleads.v8.enums.FeedOriginEnum;

                        /**
                         * Encodes the specified FeedOriginEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.FeedOriginEnum.verify|verify} messages.
                         * @param m FeedOriginEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IFeedOriginEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedOriginEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.FeedOriginEnum.verify|verify} messages.
                         * @param message FeedOriginEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IFeedOriginEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedOriginEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedOriginEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.FeedOriginEnum;

                        /**
                         * Decodes a FeedOriginEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedOriginEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.FeedOriginEnum;

                        /**
                         * Verifies a FeedOriginEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedOriginEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedOriginEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.FeedOriginEnum;

                        /**
                         * Creates a plain object from a FeedOriginEnum message. Also converts values to other types if specified.
                         * @param m FeedOriginEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.FeedOriginEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedOriginEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace FeedOriginEnum {

                        /** FeedOrigin enum. */
                        enum FeedOrigin {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            USER = 2,
                            GOOGLE = 3
                        }
                    }

                    /** Properties of a FeedStatusEnum. */
                    interface IFeedStatusEnum {
                    }

                    /** Represents a FeedStatusEnum. */
                    class FeedStatusEnum implements IFeedStatusEnum {

                        /**
                         * Constructs a new FeedStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IFeedStatusEnum);

                        /**
                         * Creates a new FeedStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IFeedStatusEnum): google.ads.googleads.v8.enums.FeedStatusEnum;

                        /**
                         * Encodes the specified FeedStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.FeedStatusEnum.verify|verify} messages.
                         * @param m FeedStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IFeedStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.FeedStatusEnum.verify|verify} messages.
                         * @param message FeedStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IFeedStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.FeedStatusEnum;

                        /**
                         * Decodes a FeedStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.FeedStatusEnum;

                        /**
                         * Verifies a FeedStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.FeedStatusEnum;

                        /**
                         * Creates a plain object from a FeedStatusEnum message. Also converts values to other types if specified.
                         * @param m FeedStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.FeedStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace FeedStatusEnum {

                        /** FeedStatus enum. */
                        enum FeedStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVED = 3
                        }
                    }

                    /** Properties of a FlightPlaceholderFieldEnum. */
                    interface IFlightPlaceholderFieldEnum {
                    }

                    /** Represents a FlightPlaceholderFieldEnum. */
                    class FlightPlaceholderFieldEnum implements IFlightPlaceholderFieldEnum {

                        /**
                         * Constructs a new FlightPlaceholderFieldEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IFlightPlaceholderFieldEnum);

                        /**
                         * Creates a new FlightPlaceholderFieldEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FlightPlaceholderFieldEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IFlightPlaceholderFieldEnum): google.ads.googleads.v8.enums.FlightPlaceholderFieldEnum;

                        /**
                         * Encodes the specified FlightPlaceholderFieldEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.FlightPlaceholderFieldEnum.verify|verify} messages.
                         * @param m FlightPlaceholderFieldEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IFlightPlaceholderFieldEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FlightPlaceholderFieldEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.FlightPlaceholderFieldEnum.verify|verify} messages.
                         * @param message FlightPlaceholderFieldEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IFlightPlaceholderFieldEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FlightPlaceholderFieldEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FlightPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.FlightPlaceholderFieldEnum;

                        /**
                         * Decodes a FlightPlaceholderFieldEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FlightPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.FlightPlaceholderFieldEnum;

                        /**
                         * Verifies a FlightPlaceholderFieldEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FlightPlaceholderFieldEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FlightPlaceholderFieldEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.FlightPlaceholderFieldEnum;

                        /**
                         * Creates a plain object from a FlightPlaceholderFieldEnum message. Also converts values to other types if specified.
                         * @param m FlightPlaceholderFieldEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.FlightPlaceholderFieldEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FlightPlaceholderFieldEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace FlightPlaceholderFieldEnum {

                        /** FlightPlaceholderField enum. */
                        enum FlightPlaceholderField {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DESTINATION_ID = 2,
                            ORIGIN_ID = 3,
                            FLIGHT_DESCRIPTION = 4,
                            ORIGIN_NAME = 5,
                            DESTINATION_NAME = 6,
                            FLIGHT_PRICE = 7,
                            FORMATTED_PRICE = 8,
                            FLIGHT_SALE_PRICE = 9,
                            FORMATTED_SALE_PRICE = 10,
                            IMAGE_URL = 11,
                            FINAL_URLS = 12,
                            FINAL_MOBILE_URLS = 13,
                            TRACKING_URL = 14,
                            ANDROID_APP_LINK = 15,
                            SIMILAR_DESTINATION_IDS = 16,
                            IOS_APP_LINK = 17,
                            IOS_APP_STORE_ID = 18
                        }
                    }

                    /** Properties of a GeoTargetConstantStatusEnum. */
                    interface IGeoTargetConstantStatusEnum {
                    }

                    /** Represents a GeoTargetConstantStatusEnum. */
                    class GeoTargetConstantStatusEnum implements IGeoTargetConstantStatusEnum {

                        /**
                         * Constructs a new GeoTargetConstantStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IGeoTargetConstantStatusEnum): google.ads.googleads.v8.enums.GeoTargetConstantStatusEnum;

                        /**
                         * Encodes the specified GeoTargetConstantStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.GeoTargetConstantStatusEnum.verify|verify} messages.
                         * @param m GeoTargetConstantStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IGeoTargetConstantStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GeoTargetConstantStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IGeoTargetConstantStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GeoTargetConstantStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.GeoTargetConstantStatusEnum;

                        /**
                         * Verifies a GeoTargetConstantStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GeoTargetConstantStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GeoTargetConstantStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.GeoTargetConstantStatusEnum;

                        /**
                         * Creates a plain object from a GeoTargetConstantStatusEnum message. Also converts values to other types if specified.
                         * @param m GeoTargetConstantStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.GeoTargetConstantStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GeoTargetConstantStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace GeoTargetConstantStatusEnum {

                        /** GeoTargetConstantStatus enum. */
                        enum GeoTargetConstantStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            REMOVAL_PLANNED = 3
                        }
                    }

                    /** Properties of a GeoTargetingRestrictionEnum. */
                    interface IGeoTargetingRestrictionEnum {
                    }

                    /** Represents a GeoTargetingRestrictionEnum. */
                    class GeoTargetingRestrictionEnum implements IGeoTargetingRestrictionEnum {

                        /**
                         * Constructs a new GeoTargetingRestrictionEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IGeoTargetingRestrictionEnum);

                        /**
                         * Creates a new GeoTargetingRestrictionEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GeoTargetingRestrictionEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IGeoTargetingRestrictionEnum): google.ads.googleads.v8.enums.GeoTargetingRestrictionEnum;

                        /**
                         * Encodes the specified GeoTargetingRestrictionEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.GeoTargetingRestrictionEnum.verify|verify} messages.
                         * @param m GeoTargetingRestrictionEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IGeoTargetingRestrictionEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GeoTargetingRestrictionEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.GeoTargetingRestrictionEnum.verify|verify} messages.
                         * @param message GeoTargetingRestrictionEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IGeoTargetingRestrictionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GeoTargetingRestrictionEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GeoTargetingRestrictionEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.GeoTargetingRestrictionEnum;

                        /**
                         * Decodes a GeoTargetingRestrictionEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GeoTargetingRestrictionEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.GeoTargetingRestrictionEnum;

                        /**
                         * Verifies a GeoTargetingRestrictionEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GeoTargetingRestrictionEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GeoTargetingRestrictionEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.GeoTargetingRestrictionEnum;

                        /**
                         * Creates a plain object from a GeoTargetingRestrictionEnum message. Also converts values to other types if specified.
                         * @param m GeoTargetingRestrictionEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.GeoTargetingRestrictionEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GeoTargetingRestrictionEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace GeoTargetingRestrictionEnum {

                        /** GeoTargetingRestriction enum. */
                        enum GeoTargetingRestriction {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            LOCATION_OF_PRESENCE = 2
                        }
                    }

                    /** Properties of a GeoTargetingTypeEnum. */
                    interface IGeoTargetingTypeEnum {
                    }

                    /** Represents a GeoTargetingTypeEnum. */
                    class GeoTargetingTypeEnum implements IGeoTargetingTypeEnum {

                        /**
                         * Constructs a new GeoTargetingTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IGeoTargetingTypeEnum): google.ads.googleads.v8.enums.GeoTargetingTypeEnum;

                        /**
                         * Encodes the specified GeoTargetingTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.GeoTargetingTypeEnum.verify|verify} messages.
                         * @param m GeoTargetingTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IGeoTargetingTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GeoTargetingTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IGeoTargetingTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GeoTargetingTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.GeoTargetingTypeEnum;

                        /**
                         * Verifies a GeoTargetingTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GeoTargetingTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GeoTargetingTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.GeoTargetingTypeEnum;

                        /**
                         * Creates a plain object from a GeoTargetingTypeEnum message. Also converts values to other types if specified.
                         * @param m GeoTargetingTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.GeoTargetingTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GeoTargetingTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace GeoTargetingTypeEnum {

                        /** GeoTargetingType enum. */
                        enum GeoTargetingType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            AREA_OF_INTEREST = 2,
                            LOCATION_OF_PRESENCE = 3
                        }
                    }

                    /** Properties of a GoogleAdsFieldCategoryEnum. */
                    interface IGoogleAdsFieldCategoryEnum {
                    }

                    /** Represents a GoogleAdsFieldCategoryEnum. */
                    class GoogleAdsFieldCategoryEnum implements IGoogleAdsFieldCategoryEnum {

                        /**
                         * Constructs a new GoogleAdsFieldCategoryEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IGoogleAdsFieldCategoryEnum): google.ads.googleads.v8.enums.GoogleAdsFieldCategoryEnum;

                        /**
                         * Encodes the specified GoogleAdsFieldCategoryEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.GoogleAdsFieldCategoryEnum.verify|verify} messages.
                         * @param m GoogleAdsFieldCategoryEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IGoogleAdsFieldCategoryEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GoogleAdsFieldCategoryEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IGoogleAdsFieldCategoryEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GoogleAdsFieldCategoryEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.GoogleAdsFieldCategoryEnum;

                        /**
                         * Verifies a GoogleAdsFieldCategoryEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GoogleAdsFieldCategoryEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GoogleAdsFieldCategoryEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.GoogleAdsFieldCategoryEnum;

                        /**
                         * Creates a plain object from a GoogleAdsFieldCategoryEnum message. Also converts values to other types if specified.
                         * @param m GoogleAdsFieldCategoryEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.GoogleAdsFieldCategoryEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GoogleAdsFieldCategoryEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IGoogleAdsFieldDataTypeEnum): google.ads.googleads.v8.enums.GoogleAdsFieldDataTypeEnum;

                        /**
                         * Encodes the specified GoogleAdsFieldDataTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.GoogleAdsFieldDataTypeEnum.verify|verify} messages.
                         * @param m GoogleAdsFieldDataTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IGoogleAdsFieldDataTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GoogleAdsFieldDataTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IGoogleAdsFieldDataTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GoogleAdsFieldDataTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.GoogleAdsFieldDataTypeEnum;

                        /**
                         * Verifies a GoogleAdsFieldDataTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GoogleAdsFieldDataTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GoogleAdsFieldDataTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.GoogleAdsFieldDataTypeEnum;

                        /**
                         * Creates a plain object from a GoogleAdsFieldDataTypeEnum message. Also converts values to other types if specified.
                         * @param m GoogleAdsFieldDataTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.GoogleAdsFieldDataTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GoogleAdsFieldDataTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IGoogleVoiceCallStatusEnum): google.ads.googleads.v8.enums.GoogleVoiceCallStatusEnum;

                        /**
                         * Encodes the specified GoogleVoiceCallStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.GoogleVoiceCallStatusEnum.verify|verify} messages.
                         * @param m GoogleVoiceCallStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IGoogleVoiceCallStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GoogleVoiceCallStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IGoogleVoiceCallStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GoogleVoiceCallStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.GoogleVoiceCallStatusEnum;

                        /**
                         * Verifies a GoogleVoiceCallStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GoogleVoiceCallStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GoogleVoiceCallStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.GoogleVoiceCallStatusEnum;

                        /**
                         * Creates a plain object from a GoogleVoiceCallStatusEnum message. Also converts values to other types if specified.
                         * @param m GoogleVoiceCallStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.GoogleVoiceCallStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GoogleVoiceCallStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace GoogleVoiceCallStatusEnum {

                        /** GoogleVoiceCallStatus enum. */
                        enum GoogleVoiceCallStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            MISSED = 2,
                            RECEIVED = 3
                        }
                    }

                    /** Properties of a HotelPlaceholderFieldEnum. */
                    interface IHotelPlaceholderFieldEnum {
                    }

                    /** Represents a HotelPlaceholderFieldEnum. */
                    class HotelPlaceholderFieldEnum implements IHotelPlaceholderFieldEnum {

                        /**
                         * Constructs a new HotelPlaceholderFieldEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IHotelPlaceholderFieldEnum);

                        /**
                         * Creates a new HotelPlaceholderFieldEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns HotelPlaceholderFieldEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IHotelPlaceholderFieldEnum): google.ads.googleads.v8.enums.HotelPlaceholderFieldEnum;

                        /**
                         * Encodes the specified HotelPlaceholderFieldEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.HotelPlaceholderFieldEnum.verify|verify} messages.
                         * @param m HotelPlaceholderFieldEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IHotelPlaceholderFieldEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelPlaceholderFieldEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.HotelPlaceholderFieldEnum.verify|verify} messages.
                         * @param message HotelPlaceholderFieldEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IHotelPlaceholderFieldEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelPlaceholderFieldEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns HotelPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.HotelPlaceholderFieldEnum;

                        /**
                         * Decodes a HotelPlaceholderFieldEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns HotelPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.HotelPlaceholderFieldEnum;

                        /**
                         * Verifies a HotelPlaceholderFieldEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelPlaceholderFieldEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns HotelPlaceholderFieldEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.HotelPlaceholderFieldEnum;

                        /**
                         * Creates a plain object from a HotelPlaceholderFieldEnum message. Also converts values to other types if specified.
                         * @param m HotelPlaceholderFieldEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.HotelPlaceholderFieldEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelPlaceholderFieldEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace HotelPlaceholderFieldEnum {

                        /** HotelPlaceholderField enum. */
                        enum HotelPlaceholderField {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PROPERTY_ID = 2,
                            PROPERTY_NAME = 3,
                            DESTINATION_NAME = 4,
                            DESCRIPTION = 5,
                            ADDRESS = 6,
                            PRICE = 7,
                            FORMATTED_PRICE = 8,
                            SALE_PRICE = 9,
                            FORMATTED_SALE_PRICE = 10,
                            IMAGE_URL = 11,
                            CATEGORY = 12,
                            STAR_RATING = 13,
                            CONTEXTUAL_KEYWORDS = 14,
                            FINAL_URLS = 15,
                            FINAL_MOBILE_URLS = 16,
                            TRACKING_URL = 17,
                            ANDROID_APP_LINK = 18,
                            SIMILAR_PROPERTY_IDS = 19,
                            IOS_APP_LINK = 20,
                            IOS_APP_STORE_ID = 21
                        }
                    }

                    /** Properties of an ImagePlaceholderFieldEnum. */
                    interface IImagePlaceholderFieldEnum {
                    }

                    /** Represents an ImagePlaceholderFieldEnum. */
                    class ImagePlaceholderFieldEnum implements IImagePlaceholderFieldEnum {

                        /**
                         * Constructs a new ImagePlaceholderFieldEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IImagePlaceholderFieldEnum);

                        /**
                         * Creates a new ImagePlaceholderFieldEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ImagePlaceholderFieldEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IImagePlaceholderFieldEnum): google.ads.googleads.v8.enums.ImagePlaceholderFieldEnum;

                        /**
                         * Encodes the specified ImagePlaceholderFieldEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ImagePlaceholderFieldEnum.verify|verify} messages.
                         * @param m ImagePlaceholderFieldEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IImagePlaceholderFieldEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ImagePlaceholderFieldEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.ImagePlaceholderFieldEnum.verify|verify} messages.
                         * @param message ImagePlaceholderFieldEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IImagePlaceholderFieldEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ImagePlaceholderFieldEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns ImagePlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.ImagePlaceholderFieldEnum;

                        /**
                         * Decodes an ImagePlaceholderFieldEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ImagePlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.ImagePlaceholderFieldEnum;

                        /**
                         * Verifies an ImagePlaceholderFieldEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an ImagePlaceholderFieldEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ImagePlaceholderFieldEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ImagePlaceholderFieldEnum;

                        /**
                         * Creates a plain object from an ImagePlaceholderFieldEnum message. Also converts values to other types if specified.
                         * @param m ImagePlaceholderFieldEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ImagePlaceholderFieldEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ImagePlaceholderFieldEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace ImagePlaceholderFieldEnum {

                        /** ImagePlaceholderField enum. */
                        enum ImagePlaceholderField {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ASSET_ID = 2
                        }
                    }

                    /** Properties of an InvoiceTypeEnum. */
                    interface IInvoiceTypeEnum {
                    }

                    /** Represents an InvoiceTypeEnum. */
                    class InvoiceTypeEnum implements IInvoiceTypeEnum {

                        /**
                         * Constructs a new InvoiceTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IInvoiceTypeEnum): google.ads.googleads.v8.enums.InvoiceTypeEnum;

                        /**
                         * Encodes the specified InvoiceTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.InvoiceTypeEnum.verify|verify} messages.
                         * @param m InvoiceTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IInvoiceTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified InvoiceTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IInvoiceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an InvoiceTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.InvoiceTypeEnum;

                        /**
                         * Verifies an InvoiceTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an InvoiceTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns InvoiceTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.InvoiceTypeEnum;

                        /**
                         * Creates a plain object from an InvoiceTypeEnum message. Also converts values to other types if specified.
                         * @param m InvoiceTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.InvoiceTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this InvoiceTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace InvoiceTypeEnum {

                        /** InvoiceType enum. */
                        enum InvoiceType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CREDIT_MEMO = 2,
                            INVOICE = 3
                        }
                    }

                    /** Properties of a JobPlaceholderFieldEnum. */
                    interface IJobPlaceholderFieldEnum {
                    }

                    /** Represents a JobPlaceholderFieldEnum. */
                    class JobPlaceholderFieldEnum implements IJobPlaceholderFieldEnum {

                        /**
                         * Constructs a new JobPlaceholderFieldEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IJobPlaceholderFieldEnum);

                        /**
                         * Creates a new JobPlaceholderFieldEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns JobPlaceholderFieldEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IJobPlaceholderFieldEnum): google.ads.googleads.v8.enums.JobPlaceholderFieldEnum;

                        /**
                         * Encodes the specified JobPlaceholderFieldEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.JobPlaceholderFieldEnum.verify|verify} messages.
                         * @param m JobPlaceholderFieldEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IJobPlaceholderFieldEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified JobPlaceholderFieldEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.JobPlaceholderFieldEnum.verify|verify} messages.
                         * @param message JobPlaceholderFieldEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IJobPlaceholderFieldEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a JobPlaceholderFieldEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns JobPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.JobPlaceholderFieldEnum;

                        /**
                         * Decodes a JobPlaceholderFieldEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns JobPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.JobPlaceholderFieldEnum;

                        /**
                         * Verifies a JobPlaceholderFieldEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a JobPlaceholderFieldEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns JobPlaceholderFieldEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.JobPlaceholderFieldEnum;

                        /**
                         * Creates a plain object from a JobPlaceholderFieldEnum message. Also converts values to other types if specified.
                         * @param m JobPlaceholderFieldEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.JobPlaceholderFieldEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this JobPlaceholderFieldEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace JobPlaceholderFieldEnum {

                        /** JobPlaceholderField enum. */
                        enum JobPlaceholderField {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            JOB_ID = 2,
                            LOCATION_ID = 3,
                            TITLE = 4,
                            SUBTITLE = 5,
                            DESCRIPTION = 6,
                            IMAGE_URL = 7,
                            CATEGORY = 8,
                            CONTEXTUAL_KEYWORDS = 9,
                            ADDRESS = 10,
                            SALARY = 11,
                            FINAL_URLS = 12,
                            FINAL_MOBILE_URLS = 14,
                            TRACKING_URL = 15,
                            ANDROID_APP_LINK = 16,
                            SIMILAR_JOB_IDS = 17,
                            IOS_APP_LINK = 18,
                            IOS_APP_STORE_ID = 19
                        }
                    }

                    /** Properties of a KeywordPlanForecastIntervalEnum. */
                    interface IKeywordPlanForecastIntervalEnum {
                    }

                    /** Represents a KeywordPlanForecastIntervalEnum. */
                    class KeywordPlanForecastIntervalEnum implements IKeywordPlanForecastIntervalEnum {

                        /**
                         * Constructs a new KeywordPlanForecastIntervalEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IKeywordPlanForecastIntervalEnum): google.ads.googleads.v8.enums.KeywordPlanForecastIntervalEnum;

                        /**
                         * Encodes the specified KeywordPlanForecastIntervalEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.KeywordPlanForecastIntervalEnum.verify|verify} messages.
                         * @param m KeywordPlanForecastIntervalEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IKeywordPlanForecastIntervalEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanForecastIntervalEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IKeywordPlanForecastIntervalEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanForecastIntervalEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.KeywordPlanForecastIntervalEnum;

                        /**
                         * Verifies a KeywordPlanForecastIntervalEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanForecastIntervalEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanForecastIntervalEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.KeywordPlanForecastIntervalEnum;

                        /**
                         * Creates a plain object from a KeywordPlanForecastIntervalEnum message. Also converts values to other types if specified.
                         * @param m KeywordPlanForecastIntervalEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.KeywordPlanForecastIntervalEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanForecastIntervalEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IKeywordPlanKeywordAnnotationEnum): google.ads.googleads.v8.enums.KeywordPlanKeywordAnnotationEnum;

                        /**
                         * Encodes the specified KeywordPlanKeywordAnnotationEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.KeywordPlanKeywordAnnotationEnum.verify|verify} messages.
                         * @param m KeywordPlanKeywordAnnotationEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IKeywordPlanKeywordAnnotationEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanKeywordAnnotationEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IKeywordPlanKeywordAnnotationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanKeywordAnnotationEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.KeywordPlanKeywordAnnotationEnum;

                        /**
                         * Verifies a KeywordPlanKeywordAnnotationEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanKeywordAnnotationEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanKeywordAnnotationEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.KeywordPlanKeywordAnnotationEnum;

                        /**
                         * Creates a plain object from a KeywordPlanKeywordAnnotationEnum message. Also converts values to other types if specified.
                         * @param m KeywordPlanKeywordAnnotationEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.KeywordPlanKeywordAnnotationEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanKeywordAnnotationEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IKeywordPlanNetworkEnum): google.ads.googleads.v8.enums.KeywordPlanNetworkEnum;

                        /**
                         * Encodes the specified KeywordPlanNetworkEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.KeywordPlanNetworkEnum.verify|verify} messages.
                         * @param m KeywordPlanNetworkEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IKeywordPlanNetworkEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanNetworkEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IKeywordPlanNetworkEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanNetworkEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.KeywordPlanNetworkEnum;

                        /**
                         * Verifies a KeywordPlanNetworkEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanNetworkEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanNetworkEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.KeywordPlanNetworkEnum;

                        /**
                         * Creates a plain object from a KeywordPlanNetworkEnum message. Also converts values to other types if specified.
                         * @param m KeywordPlanNetworkEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.KeywordPlanNetworkEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanNetworkEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ILabelStatusEnum): google.ads.googleads.v8.enums.LabelStatusEnum;

                        /**
                         * Encodes the specified LabelStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.LabelStatusEnum.verify|verify} messages.
                         * @param m LabelStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ILabelStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LabelStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ILabelStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LabelStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.LabelStatusEnum;

                        /**
                         * Verifies a LabelStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LabelStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns LabelStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.LabelStatusEnum;

                        /**
                         * Creates a plain object from a LabelStatusEnum message. Also converts values to other types if specified.
                         * @param m LabelStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.LabelStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LabelStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ILinkedAccountTypeEnum): google.ads.googleads.v8.enums.LinkedAccountTypeEnum;

                        /**
                         * Encodes the specified LinkedAccountTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.LinkedAccountTypeEnum.verify|verify} messages.
                         * @param m LinkedAccountTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ILinkedAccountTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LinkedAccountTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ILinkedAccountTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LinkedAccountTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.LinkedAccountTypeEnum;

                        /**
                         * Verifies a LinkedAccountTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LinkedAccountTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns LinkedAccountTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.LinkedAccountTypeEnum;

                        /**
                         * Creates a plain object from a LinkedAccountTypeEnum message. Also converts values to other types if specified.
                         * @param m LinkedAccountTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.LinkedAccountTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LinkedAccountTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace LinkedAccountTypeEnum {

                        /** LinkedAccountType enum. */
                        enum LinkedAccountType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            THIRD_PARTY_APP_ANALYTICS = 2,
                            DATA_PARTNER = 3,
                            GOOGLE_ADS = 4
                        }
                    }

                    /** Properties of a LocalPlaceholderFieldEnum. */
                    interface ILocalPlaceholderFieldEnum {
                    }

                    /** Represents a LocalPlaceholderFieldEnum. */
                    class LocalPlaceholderFieldEnum implements ILocalPlaceholderFieldEnum {

                        /**
                         * Constructs a new LocalPlaceholderFieldEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.ILocalPlaceholderFieldEnum);

                        /**
                         * Creates a new LocalPlaceholderFieldEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocalPlaceholderFieldEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.ILocalPlaceholderFieldEnum): google.ads.googleads.v8.enums.LocalPlaceholderFieldEnum;

                        /**
                         * Encodes the specified LocalPlaceholderFieldEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.LocalPlaceholderFieldEnum.verify|verify} messages.
                         * @param m LocalPlaceholderFieldEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ILocalPlaceholderFieldEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocalPlaceholderFieldEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.LocalPlaceholderFieldEnum.verify|verify} messages.
                         * @param message LocalPlaceholderFieldEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.ILocalPlaceholderFieldEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocalPlaceholderFieldEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns LocalPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.LocalPlaceholderFieldEnum;

                        /**
                         * Decodes a LocalPlaceholderFieldEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocalPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.LocalPlaceholderFieldEnum;

                        /**
                         * Verifies a LocalPlaceholderFieldEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocalPlaceholderFieldEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns LocalPlaceholderFieldEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.LocalPlaceholderFieldEnum;

                        /**
                         * Creates a plain object from a LocalPlaceholderFieldEnum message. Also converts values to other types if specified.
                         * @param m LocalPlaceholderFieldEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.LocalPlaceholderFieldEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocalPlaceholderFieldEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace LocalPlaceholderFieldEnum {

                        /** LocalPlaceholderField enum. */
                        enum LocalPlaceholderField {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DEAL_ID = 2,
                            DEAL_NAME = 3,
                            SUBTITLE = 4,
                            DESCRIPTION = 5,
                            PRICE = 6,
                            FORMATTED_PRICE = 7,
                            SALE_PRICE = 8,
                            FORMATTED_SALE_PRICE = 9,
                            IMAGE_URL = 10,
                            ADDRESS = 11,
                            CATEGORY = 12,
                            CONTEXTUAL_KEYWORDS = 13,
                            FINAL_URLS = 14,
                            FINAL_MOBILE_URLS = 15,
                            TRACKING_URL = 16,
                            ANDROID_APP_LINK = 17,
                            SIMILAR_DEAL_IDS = 18,
                            IOS_APP_LINK = 19,
                            IOS_APP_STORE_ID = 20
                        }
                    }

                    /** Properties of a LocationExtensionTargetingCriterionFieldEnum. */
                    interface ILocationExtensionTargetingCriterionFieldEnum {
                    }

                    /** Represents a LocationExtensionTargetingCriterionFieldEnum. */
                    class LocationExtensionTargetingCriterionFieldEnum implements ILocationExtensionTargetingCriterionFieldEnum {

                        /**
                         * Constructs a new LocationExtensionTargetingCriterionFieldEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.ILocationExtensionTargetingCriterionFieldEnum);

                        /**
                         * Creates a new LocationExtensionTargetingCriterionFieldEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocationExtensionTargetingCriterionFieldEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.ILocationExtensionTargetingCriterionFieldEnum): google.ads.googleads.v8.enums.LocationExtensionTargetingCriterionFieldEnum;

                        /**
                         * Encodes the specified LocationExtensionTargetingCriterionFieldEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.LocationExtensionTargetingCriterionFieldEnum.verify|verify} messages.
                         * @param m LocationExtensionTargetingCriterionFieldEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ILocationExtensionTargetingCriterionFieldEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocationExtensionTargetingCriterionFieldEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.LocationExtensionTargetingCriterionFieldEnum.verify|verify} messages.
                         * @param message LocationExtensionTargetingCriterionFieldEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.ILocationExtensionTargetingCriterionFieldEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocationExtensionTargetingCriterionFieldEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns LocationExtensionTargetingCriterionFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.LocationExtensionTargetingCriterionFieldEnum;

                        /**
                         * Decodes a LocationExtensionTargetingCriterionFieldEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocationExtensionTargetingCriterionFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.LocationExtensionTargetingCriterionFieldEnum;

                        /**
                         * Verifies a LocationExtensionTargetingCriterionFieldEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocationExtensionTargetingCriterionFieldEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns LocationExtensionTargetingCriterionFieldEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.LocationExtensionTargetingCriterionFieldEnum;

                        /**
                         * Creates a plain object from a LocationExtensionTargetingCriterionFieldEnum message. Also converts values to other types if specified.
                         * @param m LocationExtensionTargetingCriterionFieldEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.LocationExtensionTargetingCriterionFieldEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocationExtensionTargetingCriterionFieldEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace LocationExtensionTargetingCriterionFieldEnum {

                        /** LocationExtensionTargetingCriterionField enum. */
                        enum LocationExtensionTargetingCriterionField {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ADDRESS_LINE_1 = 2,
                            ADDRESS_LINE_2 = 3,
                            CITY = 4,
                            PROVINCE = 5,
                            POSTAL_CODE = 6,
                            COUNTRY_CODE = 7
                        }
                    }

                    /** Properties of a LocationPlaceholderFieldEnum. */
                    interface ILocationPlaceholderFieldEnum {
                    }

                    /** Represents a LocationPlaceholderFieldEnum. */
                    class LocationPlaceholderFieldEnum implements ILocationPlaceholderFieldEnum {

                        /**
                         * Constructs a new LocationPlaceholderFieldEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.ILocationPlaceholderFieldEnum);

                        /**
                         * Creates a new LocationPlaceholderFieldEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LocationPlaceholderFieldEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.ILocationPlaceholderFieldEnum): google.ads.googleads.v8.enums.LocationPlaceholderFieldEnum;

                        /**
                         * Encodes the specified LocationPlaceholderFieldEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.LocationPlaceholderFieldEnum.verify|verify} messages.
                         * @param m LocationPlaceholderFieldEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ILocationPlaceholderFieldEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocationPlaceholderFieldEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.LocationPlaceholderFieldEnum.verify|verify} messages.
                         * @param message LocationPlaceholderFieldEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.ILocationPlaceholderFieldEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocationPlaceholderFieldEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns LocationPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.LocationPlaceholderFieldEnum;

                        /**
                         * Decodes a LocationPlaceholderFieldEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LocationPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.LocationPlaceholderFieldEnum;

                        /**
                         * Verifies a LocationPlaceholderFieldEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocationPlaceholderFieldEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns LocationPlaceholderFieldEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.LocationPlaceholderFieldEnum;

                        /**
                         * Creates a plain object from a LocationPlaceholderFieldEnum message. Also converts values to other types if specified.
                         * @param m LocationPlaceholderFieldEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.LocationPlaceholderFieldEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocationPlaceholderFieldEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace LocationPlaceholderFieldEnum {

                        /** LocationPlaceholderField enum. */
                        enum LocationPlaceholderField {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            BUSINESS_NAME = 2,
                            ADDRESS_LINE_1 = 3,
                            ADDRESS_LINE_2 = 4,
                            CITY = 5,
                            PROVINCE = 6,
                            POSTAL_CODE = 7,
                            COUNTRY_CODE = 8,
                            PHONE_NUMBER = 9
                        }
                    }

                    /** Properties of a LocationSourceTypeEnum. */
                    interface ILocationSourceTypeEnum {
                    }

                    /** Represents a LocationSourceTypeEnum. */
                    class LocationSourceTypeEnum implements ILocationSourceTypeEnum {

                        /**
                         * Constructs a new LocationSourceTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ILocationSourceTypeEnum): google.ads.googleads.v8.enums.LocationSourceTypeEnum;

                        /**
                         * Encodes the specified LocationSourceTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.LocationSourceTypeEnum.verify|verify} messages.
                         * @param m LocationSourceTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ILocationSourceTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocationSourceTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ILocationSourceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocationSourceTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.LocationSourceTypeEnum;

                        /**
                         * Verifies a LocationSourceTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocationSourceTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns LocationSourceTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.LocationSourceTypeEnum;

                        /**
                         * Creates a plain object from a LocationSourceTypeEnum message. Also converts values to other types if specified.
                         * @param m LocationSourceTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.LocationSourceTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocationSourceTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IManagerLinkStatusEnum): google.ads.googleads.v8.enums.ManagerLinkStatusEnum;

                        /**
                         * Encodes the specified ManagerLinkStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ManagerLinkStatusEnum.verify|verify} messages.
                         * @param m ManagerLinkStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IManagerLinkStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ManagerLinkStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IManagerLinkStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ManagerLinkStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ManagerLinkStatusEnum;

                        /**
                         * Verifies a ManagerLinkStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ManagerLinkStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ManagerLinkStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ManagerLinkStatusEnum;

                        /**
                         * Creates a plain object from a ManagerLinkStatusEnum message. Also converts values to other types if specified.
                         * @param m ManagerLinkStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ManagerLinkStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ManagerLinkStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IMediaTypeEnum): google.ads.googleads.v8.enums.MediaTypeEnum;

                        /**
                         * Encodes the specified MediaTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.MediaTypeEnum.verify|verify} messages.
                         * @param m MediaTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IMediaTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MediaTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IMediaTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MediaTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.MediaTypeEnum;

                        /**
                         * Verifies a MediaTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MediaTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MediaTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.MediaTypeEnum;

                        /**
                         * Creates a plain object from a MediaTypeEnum message. Also converts values to other types if specified.
                         * @param m MediaTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.MediaTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MediaTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 MerchantCenterLinkStatusEnum. */
                    interface IMerchantCenterLinkStatusEnum {
                    }

                    /** Represents a MerchantCenterLinkStatusEnum. */
                    class MerchantCenterLinkStatusEnum implements IMerchantCenterLinkStatusEnum {

                        /**
                         * Constructs a new MerchantCenterLinkStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IMerchantCenterLinkStatusEnum);

                        /**
                         * Creates a new MerchantCenterLinkStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MerchantCenterLinkStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IMerchantCenterLinkStatusEnum): google.ads.googleads.v8.enums.MerchantCenterLinkStatusEnum;

                        /**
                         * Encodes the specified MerchantCenterLinkStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.MerchantCenterLinkStatusEnum.verify|verify} messages.
                         * @param m MerchantCenterLinkStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IMerchantCenterLinkStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MerchantCenterLinkStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.MerchantCenterLinkStatusEnum.verify|verify} messages.
                         * @param message MerchantCenterLinkStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IMerchantCenterLinkStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MerchantCenterLinkStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MerchantCenterLinkStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.MerchantCenterLinkStatusEnum;

                        /**
                         * Decodes a MerchantCenterLinkStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MerchantCenterLinkStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.MerchantCenterLinkStatusEnum;

                        /**
                         * Verifies a MerchantCenterLinkStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MerchantCenterLinkStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MerchantCenterLinkStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.MerchantCenterLinkStatusEnum;

                        /**
                         * Creates a plain object from a MerchantCenterLinkStatusEnum message. Also converts values to other types if specified.
                         * @param m MerchantCenterLinkStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.MerchantCenterLinkStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MerchantCenterLinkStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace MerchantCenterLinkStatusEnum {

                        /** MerchantCenterLinkStatus enum. */
                        enum MerchantCenterLinkStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ENABLED = 2,
                            PENDING = 3
                        }
                    }

                    /** Properties of a MessagePlaceholderFieldEnum. */
                    interface IMessagePlaceholderFieldEnum {
                    }

                    /** Represents a MessagePlaceholderFieldEnum. */
                    class MessagePlaceholderFieldEnum implements IMessagePlaceholderFieldEnum {

                        /**
                         * Constructs a new MessagePlaceholderFieldEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IMessagePlaceholderFieldEnum);

                        /**
                         * Creates a new MessagePlaceholderFieldEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MessagePlaceholderFieldEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IMessagePlaceholderFieldEnum): google.ads.googleads.v8.enums.MessagePlaceholderFieldEnum;

                        /**
                         * Encodes the specified MessagePlaceholderFieldEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.MessagePlaceholderFieldEnum.verify|verify} messages.
                         * @param m MessagePlaceholderFieldEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IMessagePlaceholderFieldEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MessagePlaceholderFieldEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.MessagePlaceholderFieldEnum.verify|verify} messages.
                         * @param message MessagePlaceholderFieldEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IMessagePlaceholderFieldEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MessagePlaceholderFieldEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MessagePlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.MessagePlaceholderFieldEnum;

                        /**
                         * Decodes a MessagePlaceholderFieldEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MessagePlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.MessagePlaceholderFieldEnum;

                        /**
                         * Verifies a MessagePlaceholderFieldEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MessagePlaceholderFieldEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MessagePlaceholderFieldEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.MessagePlaceholderFieldEnum;

                        /**
                         * Creates a plain object from a MessagePlaceholderFieldEnum message. Also converts values to other types if specified.
                         * @param m MessagePlaceholderFieldEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.MessagePlaceholderFieldEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MessagePlaceholderFieldEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace MessagePlaceholderFieldEnum {

                        /** MessagePlaceholderField enum. */
                        enum MessagePlaceholderField {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            BUSINESS_NAME = 2,
                            COUNTRY_CODE = 3,
                            PHONE_NUMBER = 4,
                            MESSAGE_EXTENSION_TEXT = 5,
                            MESSAGE_TEXT = 6
                        }
                    }

                    /** Properties of a MobileAppVendorEnum. */
                    interface IMobileAppVendorEnum {
                    }

                    /** Represents a MobileAppVendorEnum. */
                    class MobileAppVendorEnum implements IMobileAppVendorEnum {

                        /**
                         * Constructs a new MobileAppVendorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IMobileAppVendorEnum): google.ads.googleads.v8.enums.MobileAppVendorEnum;

                        /**
                         * Encodes the specified MobileAppVendorEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.MobileAppVendorEnum.verify|verify} messages.
                         * @param m MobileAppVendorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IMobileAppVendorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MobileAppVendorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IMobileAppVendorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MobileAppVendorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.MobileAppVendorEnum;

                        /**
                         * Verifies a MobileAppVendorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MobileAppVendorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MobileAppVendorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.MobileAppVendorEnum;

                        /**
                         * Creates a plain object from a MobileAppVendorEnum message. Also converts values to other types if specified.
                         * @param m MobileAppVendorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.MobileAppVendorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MobileAppVendorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace MobileAppVendorEnum {

                        /** MobileAppVendor enum. */
                        enum MobileAppVendor {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            APPLE_APP_STORE = 2,
                            GOOGLE_APP_STORE = 3
                        }
                    }

                    /** Properties of a MobileDeviceTypeEnum. */
                    interface IMobileDeviceTypeEnum {
                    }

                    /** Represents a MobileDeviceTypeEnum. */
                    class MobileDeviceTypeEnum implements IMobileDeviceTypeEnum {

                        /**
                         * Constructs a new MobileDeviceTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IMobileDeviceTypeEnum): google.ads.googleads.v8.enums.MobileDeviceTypeEnum;

                        /**
                         * Encodes the specified MobileDeviceTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.MobileDeviceTypeEnum.verify|verify} messages.
                         * @param m MobileDeviceTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IMobileDeviceTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MobileDeviceTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IMobileDeviceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MobileDeviceTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.MobileDeviceTypeEnum;

                        /**
                         * Verifies a MobileDeviceTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MobileDeviceTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MobileDeviceTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.MobileDeviceTypeEnum;

                        /**
                         * Creates a plain object from a MobileDeviceTypeEnum message. Also converts values to other types if specified.
                         * @param m MobileDeviceTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.MobileDeviceTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MobileDeviceTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.INegativeGeoTargetTypeEnum): google.ads.googleads.v8.enums.NegativeGeoTargetTypeEnum;

                        /**
                         * Encodes the specified NegativeGeoTargetTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.NegativeGeoTargetTypeEnum.verify|verify} messages.
                         * @param m NegativeGeoTargetTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.INegativeGeoTargetTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified NegativeGeoTargetTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.INegativeGeoTargetTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a NegativeGeoTargetTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.NegativeGeoTargetTypeEnum;

                        /**
                         * Verifies a NegativeGeoTargetTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a NegativeGeoTargetTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns NegativeGeoTargetTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.NegativeGeoTargetTypeEnum;

                        /**
                         * Creates a plain object from a NegativeGeoTargetTypeEnum message. Also converts values to other types if specified.
                         * @param m NegativeGeoTargetTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.NegativeGeoTargetTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this NegativeGeoTargetTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace NegativeGeoTargetTypeEnum {

                        /** NegativeGeoTargetType enum. */
                        enum NegativeGeoTargetType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PRESENCE_OR_INTEREST = 4,
                            PRESENCE = 5
                        }
                    }

                    /** Properties of an OfflineUserDataJobFailureReasonEnum. */
                    interface IOfflineUserDataJobFailureReasonEnum {
                    }

                    /** Represents an OfflineUserDataJobFailureReasonEnum. */
                    class OfflineUserDataJobFailureReasonEnum implements IOfflineUserDataJobFailureReasonEnum {

                        /**
                         * Constructs a new OfflineUserDataJobFailureReasonEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IOfflineUserDataJobFailureReasonEnum): google.ads.googleads.v8.enums.OfflineUserDataJobFailureReasonEnum;

                        /**
                         * Encodes the specified OfflineUserDataJobFailureReasonEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.OfflineUserDataJobFailureReasonEnum.verify|verify} messages.
                         * @param m OfflineUserDataJobFailureReasonEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IOfflineUserDataJobFailureReasonEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OfflineUserDataJobFailureReasonEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IOfflineUserDataJobFailureReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OfflineUserDataJobFailureReasonEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.OfflineUserDataJobFailureReasonEnum;

                        /**
                         * Verifies an OfflineUserDataJobFailureReasonEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an OfflineUserDataJobFailureReasonEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns OfflineUserDataJobFailureReasonEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.OfflineUserDataJobFailureReasonEnum;

                        /**
                         * Creates a plain object from an OfflineUserDataJobFailureReasonEnum message. Also converts values to other types if specified.
                         * @param m OfflineUserDataJobFailureReasonEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.OfflineUserDataJobFailureReasonEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OfflineUserDataJobFailureReasonEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace OfflineUserDataJobFailureReasonEnum {

                        /** OfflineUserDataJobFailureReason enum. */
                        enum OfflineUserDataJobFailureReason {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INSUFFICIENT_MATCHED_TRANSACTIONS = 2,
                            INSUFFICIENT_TRANSACTIONS = 3
                        }
                    }

                    /** Properties of an OfflineUserDataJobStatusEnum. */
                    interface IOfflineUserDataJobStatusEnum {
                    }

                    /** Represents an OfflineUserDataJobStatusEnum. */
                    class OfflineUserDataJobStatusEnum implements IOfflineUserDataJobStatusEnum {

                        /**
                         * Constructs a new OfflineUserDataJobStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IOfflineUserDataJobStatusEnum): google.ads.googleads.v8.enums.OfflineUserDataJobStatusEnum;

                        /**
                         * Encodes the specified OfflineUserDataJobStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.OfflineUserDataJobStatusEnum.verify|verify} messages.
                         * @param m OfflineUserDataJobStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IOfflineUserDataJobStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OfflineUserDataJobStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IOfflineUserDataJobStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OfflineUserDataJobStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.OfflineUserDataJobStatusEnum;

                        /**
                         * Verifies an OfflineUserDataJobStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an OfflineUserDataJobStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns OfflineUserDataJobStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.OfflineUserDataJobStatusEnum;

                        /**
                         * Creates a plain object from an OfflineUserDataJobStatusEnum message. Also converts values to other types if specified.
                         * @param m OfflineUserDataJobStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.OfflineUserDataJobStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OfflineUserDataJobStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IOfflineUserDataJobTypeEnum): google.ads.googleads.v8.enums.OfflineUserDataJobTypeEnum;

                        /**
                         * Encodes the specified OfflineUserDataJobTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.OfflineUserDataJobTypeEnum.verify|verify} messages.
                         * @param m OfflineUserDataJobTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IOfflineUserDataJobTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OfflineUserDataJobTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IOfflineUserDataJobTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OfflineUserDataJobTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.OfflineUserDataJobTypeEnum;

                        /**
                         * Verifies an OfflineUserDataJobTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an OfflineUserDataJobTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns OfflineUserDataJobTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.OfflineUserDataJobTypeEnum;

                        /**
                         * Creates a plain object from an OfflineUserDataJobTypeEnum message. Also converts values to other types if specified.
                         * @param m OfflineUserDataJobTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.OfflineUserDataJobTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OfflineUserDataJobTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IOperatingSystemVersionOperatorTypeEnum): google.ads.googleads.v8.enums.OperatingSystemVersionOperatorTypeEnum;

                        /**
                         * Encodes the specified OperatingSystemVersionOperatorTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.OperatingSystemVersionOperatorTypeEnum.verify|verify} messages.
                         * @param m OperatingSystemVersionOperatorTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IOperatingSystemVersionOperatorTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OperatingSystemVersionOperatorTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IOperatingSystemVersionOperatorTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OperatingSystemVersionOperatorTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.OperatingSystemVersionOperatorTypeEnum;

                        /**
                         * Verifies an OperatingSystemVersionOperatorTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an OperatingSystemVersionOperatorTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns OperatingSystemVersionOperatorTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.OperatingSystemVersionOperatorTypeEnum;

                        /**
                         * Creates a plain object from an OperatingSystemVersionOperatorTypeEnum message. Also converts values to other types if specified.
                         * @param m OperatingSystemVersionOperatorTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.OperatingSystemVersionOperatorTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OperatingSystemVersionOperatorTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IOptimizationGoalTypeEnum): google.ads.googleads.v8.enums.OptimizationGoalTypeEnum;

                        /**
                         * Encodes the specified OptimizationGoalTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.OptimizationGoalTypeEnum.verify|verify} messages.
                         * @param m OptimizationGoalTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IOptimizationGoalTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OptimizationGoalTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IOptimizationGoalTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OptimizationGoalTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.OptimizationGoalTypeEnum;

                        /**
                         * Verifies an OptimizationGoalTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an OptimizationGoalTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns OptimizationGoalTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.OptimizationGoalTypeEnum;

                        /**
                         * Creates a plain object from an OptimizationGoalTypeEnum message. Also converts values to other types if specified.
                         * @param m OptimizationGoalTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.OptimizationGoalTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OptimizationGoalTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace OptimizationGoalTypeEnum {

                        /** OptimizationGoalType enum. */
                        enum OptimizationGoalType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CALL_CLICKS = 2,
                            DRIVING_DIRECTIONS = 3
                        }
                    }

                    /** Properties of a PaymentModeEnum. */
                    interface IPaymentModeEnum {
                    }

                    /** Represents a PaymentModeEnum. */
                    class PaymentModeEnum implements IPaymentModeEnum {

                        /**
                         * Constructs a new PaymentModeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IPaymentModeEnum): google.ads.googleads.v8.enums.PaymentModeEnum;

                        /**
                         * Encodes the specified PaymentModeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.PaymentModeEnum.verify|verify} messages.
                         * @param m PaymentModeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IPaymentModeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PaymentModeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IPaymentModeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PaymentModeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.PaymentModeEnum;

                        /**
                         * Verifies a PaymentModeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PaymentModeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PaymentModeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.PaymentModeEnum;

                        /**
                         * Creates a plain object from a PaymentModeEnum message. Also converts values to other types if specified.
                         * @param m PaymentModeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.PaymentModeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PaymentModeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace PaymentModeEnum {

                        /** PaymentMode enum. */
                        enum PaymentMode {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            CLICKS = 4,
                            CONVERSION_VALUE = 5,
                            CONVERSIONS = 6,
                            GUEST_STAY = 7
                        }
                    }

                    /** Properties of a PlacementTypeEnum. */
                    interface IPlacementTypeEnum {
                    }

                    /** Represents a PlacementTypeEnum. */
                    class PlacementTypeEnum implements IPlacementTypeEnum {

                        /**
                         * Constructs a new PlacementTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IPlacementTypeEnum): google.ads.googleads.v8.enums.PlacementTypeEnum;

                        /**
                         * Encodes the specified PlacementTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.PlacementTypeEnum.verify|verify} messages.
                         * @param m PlacementTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IPlacementTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PlacementTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IPlacementTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PlacementTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.PlacementTypeEnum;

                        /**
                         * Verifies a PlacementTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PlacementTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PlacementTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.PlacementTypeEnum;

                        /**
                         * Creates a plain object from a PlacementTypeEnum message. Also converts values to other types if specified.
                         * @param m PlacementTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.PlacementTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PlacementTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a PositiveGeoTargetTypeEnum. */
                    interface IPositiveGeoTargetTypeEnum {
                    }

                    /** Represents a PositiveGeoTargetTypeEnum. */
                    class PositiveGeoTargetTypeEnum implements IPositiveGeoTargetTypeEnum {

                        /**
                         * Constructs a new PositiveGeoTargetTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IPositiveGeoTargetTypeEnum): google.ads.googleads.v8.enums.PositiveGeoTargetTypeEnum;

                        /**
                         * Encodes the specified PositiveGeoTargetTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.PositiveGeoTargetTypeEnum.verify|verify} messages.
                         * @param m PositiveGeoTargetTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IPositiveGeoTargetTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PositiveGeoTargetTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IPositiveGeoTargetTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PositiveGeoTargetTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.PositiveGeoTargetTypeEnum;

                        /**
                         * Verifies a PositiveGeoTargetTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PositiveGeoTargetTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PositiveGeoTargetTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.PositiveGeoTargetTypeEnum;

                        /**
                         * Creates a plain object from a PositiveGeoTargetTypeEnum message. Also converts values to other types if specified.
                         * @param m PositiveGeoTargetTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.PositiveGeoTargetTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PositiveGeoTargetTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace PositiveGeoTargetTypeEnum {

                        /** PositiveGeoTargetType enum. */
                        enum PositiveGeoTargetType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PRESENCE_OR_INTEREST = 5,
                            SEARCH_INTEREST = 6,
                            PRESENCE = 7
                        }
                    }

                    /** Properties of a PricePlaceholderFieldEnum. */
                    interface IPricePlaceholderFieldEnum {
                    }

                    /** Represents a PricePlaceholderFieldEnum. */
                    class PricePlaceholderFieldEnum implements IPricePlaceholderFieldEnum {

                        /**
                         * Constructs a new PricePlaceholderFieldEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IPricePlaceholderFieldEnum);

                        /**
                         * Creates a new PricePlaceholderFieldEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PricePlaceholderFieldEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IPricePlaceholderFieldEnum): google.ads.googleads.v8.enums.PricePlaceholderFieldEnum;

                        /**
                         * Encodes the specified PricePlaceholderFieldEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.PricePlaceholderFieldEnum.verify|verify} messages.
                         * @param m PricePlaceholderFieldEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IPricePlaceholderFieldEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PricePlaceholderFieldEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.PricePlaceholderFieldEnum.verify|verify} messages.
                         * @param message PricePlaceholderFieldEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IPricePlaceholderFieldEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PricePlaceholderFieldEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns PricePlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.PricePlaceholderFieldEnum;

                        /**
                         * Decodes a PricePlaceholderFieldEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PricePlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.PricePlaceholderFieldEnum;

                        /**
                         * Verifies a PricePlaceholderFieldEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PricePlaceholderFieldEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PricePlaceholderFieldEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.PricePlaceholderFieldEnum;

                        /**
                         * Creates a plain object from a PricePlaceholderFieldEnum message. Also converts values to other types if specified.
                         * @param m PricePlaceholderFieldEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.PricePlaceholderFieldEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PricePlaceholderFieldEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace PricePlaceholderFieldEnum {

                        /** PricePlaceholderField enum. */
                        enum PricePlaceholderField {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            TYPE = 2,
                            PRICE_QUALIFIER = 3,
                            TRACKING_TEMPLATE = 4,
                            LANGUAGE = 5,
                            FINAL_URL_SUFFIX = 6,
                            ITEM_1_HEADER = 100,
                            ITEM_1_DESCRIPTION = 101,
                            ITEM_1_PRICE = 102,
                            ITEM_1_UNIT = 103,
                            ITEM_1_FINAL_URLS = 104,
                            ITEM_1_FINAL_MOBILE_URLS = 105,
                            ITEM_2_HEADER = 200,
                            ITEM_2_DESCRIPTION = 201,
                            ITEM_2_PRICE = 202,
                            ITEM_2_UNIT = 203,
                            ITEM_2_FINAL_URLS = 204,
                            ITEM_2_FINAL_MOBILE_URLS = 205,
                            ITEM_3_HEADER = 300,
                            ITEM_3_DESCRIPTION = 301,
                            ITEM_3_PRICE = 302,
                            ITEM_3_UNIT = 303,
                            ITEM_3_FINAL_URLS = 304,
                            ITEM_3_FINAL_MOBILE_URLS = 305,
                            ITEM_4_HEADER = 400,
                            ITEM_4_DESCRIPTION = 401,
                            ITEM_4_PRICE = 402,
                            ITEM_4_UNIT = 403,
                            ITEM_4_FINAL_URLS = 404,
                            ITEM_4_FINAL_MOBILE_URLS = 405,
                            ITEM_5_HEADER = 500,
                            ITEM_5_DESCRIPTION = 501,
                            ITEM_5_PRICE = 502,
                            ITEM_5_UNIT = 503,
                            ITEM_5_FINAL_URLS = 504,
                            ITEM_5_FINAL_MOBILE_URLS = 505,
                            ITEM_6_HEADER = 600,
                            ITEM_6_DESCRIPTION = 601,
                            ITEM_6_PRICE = 602,
                            ITEM_6_UNIT = 603,
                            ITEM_6_FINAL_URLS = 604,
                            ITEM_6_FINAL_MOBILE_URLS = 605,
                            ITEM_7_HEADER = 700,
                            ITEM_7_DESCRIPTION = 701,
                            ITEM_7_PRICE = 702,
                            ITEM_7_UNIT = 703,
                            ITEM_7_FINAL_URLS = 704,
                            ITEM_7_FINAL_MOBILE_URLS = 705,
                            ITEM_8_HEADER = 800,
                            ITEM_8_DESCRIPTION = 801,
                            ITEM_8_PRICE = 802,
                            ITEM_8_UNIT = 803,
                            ITEM_8_FINAL_URLS = 804,
                            ITEM_8_FINAL_MOBILE_URLS = 805
                        }
                    }

                    /** Properties of a ProductBiddingCategoryStatusEnum. */
                    interface IProductBiddingCategoryStatusEnum {
                    }

                    /** Represents a ProductBiddingCategoryStatusEnum. */
                    class ProductBiddingCategoryStatusEnum implements IProductBiddingCategoryStatusEnum {

                        /**
                         * Constructs a new ProductBiddingCategoryStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IProductBiddingCategoryStatusEnum);

                        /**
                         * Creates a new ProductBiddingCategoryStatusEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductBiddingCategoryStatusEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IProductBiddingCategoryStatusEnum): google.ads.googleads.v8.enums.ProductBiddingCategoryStatusEnum;

                        /**
                         * Encodes the specified ProductBiddingCategoryStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ProductBiddingCategoryStatusEnum.verify|verify} messages.
                         * @param m ProductBiddingCategoryStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IProductBiddingCategoryStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductBiddingCategoryStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.ProductBiddingCategoryStatusEnum.verify|verify} messages.
                         * @param message ProductBiddingCategoryStatusEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IProductBiddingCategoryStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductBiddingCategoryStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns ProductBiddingCategoryStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.ProductBiddingCategoryStatusEnum;

                        /**
                         * Decodes a ProductBiddingCategoryStatusEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductBiddingCategoryStatusEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.ProductBiddingCategoryStatusEnum;

                        /**
                         * Verifies a ProductBiddingCategoryStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductBiddingCategoryStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ProductBiddingCategoryStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ProductBiddingCategoryStatusEnum;

                        /**
                         * Creates a plain object from a ProductBiddingCategoryStatusEnum message. Also converts values to other types if specified.
                         * @param m ProductBiddingCategoryStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ProductBiddingCategoryStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductBiddingCategoryStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace ProductBiddingCategoryStatusEnum {

                        /** ProductBiddingCategoryStatus enum. */
                        enum ProductBiddingCategoryStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ACTIVE = 2,
                            OBSOLETE = 3
                        }
                    }

                    /** Properties of a PromotionPlaceholderFieldEnum. */
                    interface IPromotionPlaceholderFieldEnum {
                    }

                    /** Represents a PromotionPlaceholderFieldEnum. */
                    class PromotionPlaceholderFieldEnum implements IPromotionPlaceholderFieldEnum {

                        /**
                         * Constructs a new PromotionPlaceholderFieldEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IPromotionPlaceholderFieldEnum);

                        /**
                         * Creates a new PromotionPlaceholderFieldEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PromotionPlaceholderFieldEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IPromotionPlaceholderFieldEnum): google.ads.googleads.v8.enums.PromotionPlaceholderFieldEnum;

                        /**
                         * Encodes the specified PromotionPlaceholderFieldEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.PromotionPlaceholderFieldEnum.verify|verify} messages.
                         * @param m PromotionPlaceholderFieldEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IPromotionPlaceholderFieldEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PromotionPlaceholderFieldEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.PromotionPlaceholderFieldEnum.verify|verify} messages.
                         * @param message PromotionPlaceholderFieldEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IPromotionPlaceholderFieldEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PromotionPlaceholderFieldEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns PromotionPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.PromotionPlaceholderFieldEnum;

                        /**
                         * Decodes a PromotionPlaceholderFieldEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PromotionPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.PromotionPlaceholderFieldEnum;

                        /**
                         * Verifies a PromotionPlaceholderFieldEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PromotionPlaceholderFieldEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PromotionPlaceholderFieldEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.PromotionPlaceholderFieldEnum;

                        /**
                         * Creates a plain object from a PromotionPlaceholderFieldEnum message. Also converts values to other types if specified.
                         * @param m PromotionPlaceholderFieldEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.PromotionPlaceholderFieldEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PromotionPlaceholderFieldEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace PromotionPlaceholderFieldEnum {

                        /** PromotionPlaceholderField enum. */
                        enum PromotionPlaceholderField {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            PROMOTION_TARGET = 2,
                            DISCOUNT_MODIFIER = 3,
                            PERCENT_OFF = 4,
                            MONEY_AMOUNT_OFF = 5,
                            PROMOTION_CODE = 6,
                            ORDERS_OVER_AMOUNT = 7,
                            PROMOTION_START = 8,
                            PROMOTION_END = 9,
                            OCCASION = 10,
                            FINAL_URLS = 11,
                            FINAL_MOBILE_URLS = 12,
                            TRACKING_URL = 13,
                            LANGUAGE = 14,
                            FINAL_URL_SUFFIX = 15
                        }
                    }

                    /** Properties of a ReachPlanAdLengthEnum. */
                    interface IReachPlanAdLengthEnum {
                    }

                    /** Represents a ReachPlanAdLengthEnum. */
                    class ReachPlanAdLengthEnum implements IReachPlanAdLengthEnum {

                        /**
                         * Constructs a new ReachPlanAdLengthEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IReachPlanAdLengthEnum);

                        /**
                         * Creates a new ReachPlanAdLengthEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ReachPlanAdLengthEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IReachPlanAdLengthEnum): google.ads.googleads.v8.enums.ReachPlanAdLengthEnum;

                        /**
                         * Encodes the specified ReachPlanAdLengthEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ReachPlanAdLengthEnum.verify|verify} messages.
                         * @param m ReachPlanAdLengthEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IReachPlanAdLengthEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ReachPlanAdLengthEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.ReachPlanAdLengthEnum.verify|verify} messages.
                         * @param message ReachPlanAdLengthEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IReachPlanAdLengthEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ReachPlanAdLengthEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns ReachPlanAdLengthEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.ReachPlanAdLengthEnum;

                        /**
                         * Decodes a ReachPlanAdLengthEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ReachPlanAdLengthEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.ReachPlanAdLengthEnum;

                        /**
                         * Verifies a ReachPlanAdLengthEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ReachPlanAdLengthEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ReachPlanAdLengthEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ReachPlanAdLengthEnum;

                        /**
                         * Creates a plain object from a ReachPlanAdLengthEnum message. Also converts values to other types if specified.
                         * @param m ReachPlanAdLengthEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ReachPlanAdLengthEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ReachPlanAdLengthEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace ReachPlanAdLengthEnum {

                        /** ReachPlanAdLength enum. */
                        enum ReachPlanAdLength {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            SIX_SECONDS = 2,
                            FIFTEEN_OR_TWENTY_SECONDS = 3,
                            TWENTY_SECONDS_OR_MORE = 4
                        }
                    }

                    /** Properties of a ReachPlanAgeRangeEnum. */
                    interface IReachPlanAgeRangeEnum {
                    }

                    /** Represents a ReachPlanAgeRangeEnum. */
                    class ReachPlanAgeRangeEnum implements IReachPlanAgeRangeEnum {

                        /**
                         * Constructs a new ReachPlanAgeRangeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IReachPlanAgeRangeEnum): google.ads.googleads.v8.enums.ReachPlanAgeRangeEnum;

                        /**
                         * Encodes the specified ReachPlanAgeRangeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ReachPlanAgeRangeEnum.verify|verify} messages.
                         * @param m ReachPlanAgeRangeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IReachPlanAgeRangeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ReachPlanAgeRangeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IReachPlanAgeRangeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ReachPlanAgeRangeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ReachPlanAgeRangeEnum;

                        /**
                         * Verifies a ReachPlanAgeRangeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ReachPlanAgeRangeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ReachPlanAgeRangeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ReachPlanAgeRangeEnum;

                        /**
                         * Creates a plain object from a ReachPlanAgeRangeEnum message. Also converts values to other types if specified.
                         * @param m ReachPlanAgeRangeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ReachPlanAgeRangeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ReachPlanAgeRangeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 ReachPlanNetworkEnum. */
                    interface IReachPlanNetworkEnum {
                    }

                    /** Represents a ReachPlanNetworkEnum. */
                    class ReachPlanNetworkEnum implements IReachPlanNetworkEnum {

                        /**
                         * Constructs a new ReachPlanNetworkEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IReachPlanNetworkEnum): google.ads.googleads.v8.enums.ReachPlanNetworkEnum;

                        /**
                         * Encodes the specified ReachPlanNetworkEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ReachPlanNetworkEnum.verify|verify} messages.
                         * @param m ReachPlanNetworkEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IReachPlanNetworkEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ReachPlanNetworkEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IReachPlanNetworkEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ReachPlanNetworkEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ReachPlanNetworkEnum;

                        /**
                         * Verifies a ReachPlanNetworkEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ReachPlanNetworkEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ReachPlanNetworkEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ReachPlanNetworkEnum;

                        /**
                         * Creates a plain object from a ReachPlanNetworkEnum message. Also converts values to other types if specified.
                         * @param m ReachPlanNetworkEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ReachPlanNetworkEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ReachPlanNetworkEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 RealEstatePlaceholderFieldEnum. */
                    interface IRealEstatePlaceholderFieldEnum {
                    }

                    /** Represents a RealEstatePlaceholderFieldEnum. */
                    class RealEstatePlaceholderFieldEnum implements IRealEstatePlaceholderFieldEnum {

                        /**
                         * Constructs a new RealEstatePlaceholderFieldEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IRealEstatePlaceholderFieldEnum);

                        /**
                         * Creates a new RealEstatePlaceholderFieldEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RealEstatePlaceholderFieldEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IRealEstatePlaceholderFieldEnum): google.ads.googleads.v8.enums.RealEstatePlaceholderFieldEnum;

                        /**
                         * Encodes the specified RealEstatePlaceholderFieldEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.RealEstatePlaceholderFieldEnum.verify|verify} messages.
                         * @param m RealEstatePlaceholderFieldEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IRealEstatePlaceholderFieldEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RealEstatePlaceholderFieldEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.RealEstatePlaceholderFieldEnum.verify|verify} messages.
                         * @param message RealEstatePlaceholderFieldEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IRealEstatePlaceholderFieldEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RealEstatePlaceholderFieldEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns RealEstatePlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.RealEstatePlaceholderFieldEnum;

                        /**
                         * Decodes a RealEstatePlaceholderFieldEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RealEstatePlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.RealEstatePlaceholderFieldEnum;

                        /**
                         * Verifies a RealEstatePlaceholderFieldEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RealEstatePlaceholderFieldEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns RealEstatePlaceholderFieldEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.RealEstatePlaceholderFieldEnum;

                        /**
                         * Creates a plain object from a RealEstatePlaceholderFieldEnum message. Also converts values to other types if specified.
                         * @param m RealEstatePlaceholderFieldEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.RealEstatePlaceholderFieldEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RealEstatePlaceholderFieldEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace RealEstatePlaceholderFieldEnum {

                        /** RealEstatePlaceholderField enum. */
                        enum RealEstatePlaceholderField {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            LISTING_ID = 2,
                            LISTING_NAME = 3,
                            CITY_NAME = 4,
                            DESCRIPTION = 5,
                            ADDRESS = 6,
                            PRICE = 7,
                            FORMATTED_PRICE = 8,
                            IMAGE_URL = 9,
                            PROPERTY_TYPE = 10,
                            LISTING_TYPE = 11,
                            CONTEXTUAL_KEYWORDS = 12,
                            FINAL_URLS = 13,
                            FINAL_MOBILE_URLS = 14,
                            TRACKING_URL = 15,
                            ANDROID_APP_LINK = 16,
                            SIMILAR_LISTING_IDS = 17,
                            IOS_APP_LINK = 18,
                            IOS_APP_STORE_ID = 19
                        }
                    }

                    /** Properties of a ResourceChangeOperationEnum. */
                    interface IResourceChangeOperationEnum {
                    }

                    /** Represents a ResourceChangeOperationEnum. */
                    class ResourceChangeOperationEnum implements IResourceChangeOperationEnum {

                        /**
                         * Constructs a new ResourceChangeOperationEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IResourceChangeOperationEnum): google.ads.googleads.v8.enums.ResourceChangeOperationEnum;

                        /**
                         * Encodes the specified ResourceChangeOperationEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ResourceChangeOperationEnum.verify|verify} messages.
                         * @param m ResourceChangeOperationEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IResourceChangeOperationEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ResourceChangeOperationEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IResourceChangeOperationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ResourceChangeOperationEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ResourceChangeOperationEnum;

                        /**
                         * Verifies a ResourceChangeOperationEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ResourceChangeOperationEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ResourceChangeOperationEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ResourceChangeOperationEnum;

                        /**
                         * Creates a plain object from a ResourceChangeOperationEnum message. Also converts values to other types if specified.
                         * @param m ResourceChangeOperationEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ResourceChangeOperationEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ResourceChangeOperationEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IResourceLimitTypeEnum): google.ads.googleads.v8.enums.ResourceLimitTypeEnum;

                        /**
                         * Encodes the specified ResourceLimitTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ResourceLimitTypeEnum.verify|verify} messages.
                         * @param m ResourceLimitTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IResourceLimitTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ResourceLimitTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IResourceLimitTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ResourceLimitTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ResourceLimitTypeEnum;

                        /**
                         * Verifies a ResourceLimitTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ResourceLimitTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ResourceLimitTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ResourceLimitTypeEnum;

                        /**
                         * Creates a plain object from a ResourceLimitTypeEnum message. Also converts values to other types if specified.
                         * @param m ResourceLimitTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ResourceLimitTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ResourceLimitTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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,
                            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_ASSET_LINKS_PER_CAMPAIGN = 68,
                            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
                        }
                    }

                    /** Properties of a ResponseContentTypeEnum. */
                    interface IResponseContentTypeEnum {
                    }

                    /** Represents a ResponseContentTypeEnum. */
                    class ResponseContentTypeEnum implements IResponseContentTypeEnum {

                        /**
                         * Constructs a new ResponseContentTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IResponseContentTypeEnum): google.ads.googleads.v8.enums.ResponseContentTypeEnum;

                        /**
                         * Encodes the specified ResponseContentTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ResponseContentTypeEnum.verify|verify} messages.
                         * @param m ResponseContentTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IResponseContentTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ResponseContentTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IResponseContentTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ResponseContentTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum;

                        /**
                         * Verifies a ResponseContentTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ResponseContentTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ResponseContentTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ResponseContentTypeEnum;

                        /**
                         * Creates a plain object from a ResponseContentTypeEnum message. Also converts values to other types if specified.
                         * @param m ResponseContentTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ResponseContentTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ResponseContentTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace ResponseContentTypeEnum {

                        /** ResponseContentType enum. */
                        enum ResponseContentType {
                            UNSPECIFIED = 0,
                            RESOURCE_NAME_ONLY = 1,
                            MUTABLE_RESOURCE = 2
                        }
                    }

                    /** Properties of a SearchTermTargetingStatusEnum. */
                    interface ISearchTermTargetingStatusEnum {
                    }

                    /** Represents a SearchTermTargetingStatusEnum. */
                    class SearchTermTargetingStatusEnum implements ISearchTermTargetingStatusEnum {

                        /**
                         * Constructs a new SearchTermTargetingStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ISearchTermTargetingStatusEnum): google.ads.googleads.v8.enums.SearchTermTargetingStatusEnum;

                        /**
                         * Encodes the specified SearchTermTargetingStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.SearchTermTargetingStatusEnum.verify|verify} messages.
                         * @param m SearchTermTargetingStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ISearchTermTargetingStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchTermTargetingStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ISearchTermTargetingStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchTermTargetingStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.SearchTermTargetingStatusEnum;

                        /**
                         * Verifies a SearchTermTargetingStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchTermTargetingStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SearchTermTargetingStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.SearchTermTargetingStatusEnum;

                        /**
                         * Creates a plain object from a SearchTermTargetingStatusEnum message. Also converts values to other types if specified.
                         * @param m SearchTermTargetingStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.SearchTermTargetingStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchTermTargetingStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace SearchTermTargetingStatusEnum {

                        /** SearchTermTargetingStatus enum. */
                        enum SearchTermTargetingStatus {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ADDED = 2,
                            EXCLUDED = 3,
                            ADDED_EXCLUDED = 4,
                            NONE = 5
                        }
                    }

                    /** Properties of a SeasonalityEventScopeEnum. */
                    interface ISeasonalityEventScopeEnum {
                    }

                    /** Represents a SeasonalityEventScopeEnum. */
                    class SeasonalityEventScopeEnum implements ISeasonalityEventScopeEnum {

                        /**
                         * Constructs a new SeasonalityEventScopeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ISeasonalityEventScopeEnum): google.ads.googleads.v8.enums.SeasonalityEventScopeEnum;

                        /**
                         * Encodes the specified SeasonalityEventScopeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.SeasonalityEventScopeEnum.verify|verify} messages.
                         * @param m SeasonalityEventScopeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ISeasonalityEventScopeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SeasonalityEventScopeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ISeasonalityEventScopeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SeasonalityEventScopeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.SeasonalityEventScopeEnum;

                        /**
                         * Verifies a SeasonalityEventScopeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SeasonalityEventScopeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SeasonalityEventScopeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.SeasonalityEventScopeEnum;

                        /**
                         * Creates a plain object from a SeasonalityEventScopeEnum message. Also converts values to other types if specified.
                         * @param m SeasonalityEventScopeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.SeasonalityEventScopeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SeasonalityEventScopeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ISeasonalityEventStatusEnum): google.ads.googleads.v8.enums.SeasonalityEventStatusEnum;

                        /**
                         * Encodes the specified SeasonalityEventStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.SeasonalityEventStatusEnum.verify|verify} messages.
                         * @param m SeasonalityEventStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ISeasonalityEventStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SeasonalityEventStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ISeasonalityEventStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SeasonalityEventStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.SeasonalityEventStatusEnum;

                        /**
                         * Verifies a SeasonalityEventStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SeasonalityEventStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SeasonalityEventStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.SeasonalityEventStatusEnum;

                        /**
                         * Creates a plain object from a SeasonalityEventStatusEnum message. Also converts values to other types if specified.
                         * @param m SeasonalityEventStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.SeasonalityEventStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SeasonalityEventStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ISharedSetStatusEnum): google.ads.googleads.v8.enums.SharedSetStatusEnum;

                        /**
                         * Encodes the specified SharedSetStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.SharedSetStatusEnum.verify|verify} messages.
                         * @param m SharedSetStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ISharedSetStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SharedSetStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ISharedSetStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SharedSetStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.SharedSetStatusEnum;

                        /**
                         * Verifies a SharedSetStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SharedSetStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SharedSetStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.SharedSetStatusEnum;

                        /**
                         * Creates a plain object from a SharedSetStatusEnum message. Also converts values to other types if specified.
                         * @param m SharedSetStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.SharedSetStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SharedSetStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ISharedSetTypeEnum): google.ads.googleads.v8.enums.SharedSetTypeEnum;

                        /**
                         * Encodes the specified SharedSetTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.SharedSetTypeEnum.verify|verify} messages.
                         * @param m SharedSetTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ISharedSetTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SharedSetTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ISharedSetTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SharedSetTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.SharedSetTypeEnum;

                        /**
                         * Verifies a SharedSetTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SharedSetTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SharedSetTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.SharedSetTypeEnum;

                        /**
                         * Creates a plain object from a SharedSetTypeEnum message. Also converts values to other types if specified.
                         * @param m SharedSetTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.SharedSetTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SharedSetTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace SharedSetTypeEnum {

                        /** SharedSetType enum. */
                        enum SharedSetType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NEGATIVE_KEYWORDS = 2,
                            NEGATIVE_PLACEMENTS = 3
                        }
                    }

                    /** Properties of a SimulationModificationMethodEnum. */
                    interface ISimulationModificationMethodEnum {
                    }

                    /** Represents a SimulationModificationMethodEnum. */
                    class SimulationModificationMethodEnum implements ISimulationModificationMethodEnum {

                        /**
                         * Constructs a new SimulationModificationMethodEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ISimulationModificationMethodEnum): google.ads.googleads.v8.enums.SimulationModificationMethodEnum;

                        /**
                         * Encodes the specified SimulationModificationMethodEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.SimulationModificationMethodEnum.verify|verify} messages.
                         * @param m SimulationModificationMethodEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ISimulationModificationMethodEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SimulationModificationMethodEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ISimulationModificationMethodEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SimulationModificationMethodEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.SimulationModificationMethodEnum;

                        /**
                         * Verifies a SimulationModificationMethodEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SimulationModificationMethodEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SimulationModificationMethodEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.SimulationModificationMethodEnum;

                        /**
                         * Creates a plain object from a SimulationModificationMethodEnum message. Also converts values to other types if specified.
                         * @param m SimulationModificationMethodEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.SimulationModificationMethodEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SimulationModificationMethodEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ISimulationTypeEnum): google.ads.googleads.v8.enums.SimulationTypeEnum;

                        /**
                         * Encodes the specified SimulationTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.SimulationTypeEnum.verify|verify} messages.
                         * @param m SimulationTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ISimulationTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SimulationTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ISimulationTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SimulationTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.SimulationTypeEnum;

                        /**
                         * Verifies a SimulationTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SimulationTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SimulationTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.SimulationTypeEnum;

                        /**
                         * Creates a plain object from a SimulationTypeEnum message. Also converts values to other types if specified.
                         * @param m SimulationTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.SimulationTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SimulationTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 SitelinkPlaceholderFieldEnum. */
                    interface ISitelinkPlaceholderFieldEnum {
                    }

                    /** Represents a SitelinkPlaceholderFieldEnum. */
                    class SitelinkPlaceholderFieldEnum implements ISitelinkPlaceholderFieldEnum {

                        /**
                         * Constructs a new SitelinkPlaceholderFieldEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.ISitelinkPlaceholderFieldEnum);

                        /**
                         * Creates a new SitelinkPlaceholderFieldEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SitelinkPlaceholderFieldEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.ISitelinkPlaceholderFieldEnum): google.ads.googleads.v8.enums.SitelinkPlaceholderFieldEnum;

                        /**
                         * Encodes the specified SitelinkPlaceholderFieldEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.SitelinkPlaceholderFieldEnum.verify|verify} messages.
                         * @param m SitelinkPlaceholderFieldEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ISitelinkPlaceholderFieldEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SitelinkPlaceholderFieldEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.SitelinkPlaceholderFieldEnum.verify|verify} messages.
                         * @param message SitelinkPlaceholderFieldEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.ISitelinkPlaceholderFieldEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SitelinkPlaceholderFieldEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns SitelinkPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.SitelinkPlaceholderFieldEnum;

                        /**
                         * Decodes a SitelinkPlaceholderFieldEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SitelinkPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.SitelinkPlaceholderFieldEnum;

                        /**
                         * Verifies a SitelinkPlaceholderFieldEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SitelinkPlaceholderFieldEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SitelinkPlaceholderFieldEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.SitelinkPlaceholderFieldEnum;

                        /**
                         * Creates a plain object from a SitelinkPlaceholderFieldEnum message. Also converts values to other types if specified.
                         * @param m SitelinkPlaceholderFieldEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.SitelinkPlaceholderFieldEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SitelinkPlaceholderFieldEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace SitelinkPlaceholderFieldEnum {

                        /** SitelinkPlaceholderField enum. */
                        enum SitelinkPlaceholderField {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            TEXT = 2,
                            LINE_1 = 3,
                            LINE_2 = 4,
                            FINAL_URLS = 5,
                            FINAL_MOBILE_URLS = 6,
                            TRACKING_URL = 7,
                            FINAL_URL_SUFFIX = 8
                        }
                    }

                    /** Properties of a SpendingLimitTypeEnum. */
                    interface ISpendingLimitTypeEnum {
                    }

                    /** Represents a SpendingLimitTypeEnum. */
                    class SpendingLimitTypeEnum implements ISpendingLimitTypeEnum {

                        /**
                         * Constructs a new SpendingLimitTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ISpendingLimitTypeEnum): google.ads.googleads.v8.enums.SpendingLimitTypeEnum;

                        /**
                         * Encodes the specified SpendingLimitTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.SpendingLimitTypeEnum.verify|verify} messages.
                         * @param m SpendingLimitTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ISpendingLimitTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SpendingLimitTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ISpendingLimitTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SpendingLimitTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.SpendingLimitTypeEnum;

                        /**
                         * Verifies a SpendingLimitTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SpendingLimitTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SpendingLimitTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.SpendingLimitTypeEnum;

                        /**
                         * Creates a plain object from a SpendingLimitTypeEnum message. Also converts values to other types if specified.
                         * @param m SpendingLimitTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.SpendingLimitTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SpendingLimitTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace SpendingLimitTypeEnum {

                        /** SpendingLimitType enum. */
                        enum SpendingLimitType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INFINITE = 2
                        }
                    }

                    /** Properties of a StructuredSnippetPlaceholderFieldEnum. */
                    interface IStructuredSnippetPlaceholderFieldEnum {
                    }

                    /** Represents a StructuredSnippetPlaceholderFieldEnum. */
                    class StructuredSnippetPlaceholderFieldEnum implements IStructuredSnippetPlaceholderFieldEnum {

                        /**
                         * Constructs a new StructuredSnippetPlaceholderFieldEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.IStructuredSnippetPlaceholderFieldEnum);

                        /**
                         * Creates a new StructuredSnippetPlaceholderFieldEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns StructuredSnippetPlaceholderFieldEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.IStructuredSnippetPlaceholderFieldEnum): google.ads.googleads.v8.enums.StructuredSnippetPlaceholderFieldEnum;

                        /**
                         * Encodes the specified StructuredSnippetPlaceholderFieldEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.StructuredSnippetPlaceholderFieldEnum.verify|verify} messages.
                         * @param m StructuredSnippetPlaceholderFieldEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IStructuredSnippetPlaceholderFieldEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified StructuredSnippetPlaceholderFieldEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.StructuredSnippetPlaceholderFieldEnum.verify|verify} messages.
                         * @param message StructuredSnippetPlaceholderFieldEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.IStructuredSnippetPlaceholderFieldEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a StructuredSnippetPlaceholderFieldEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns StructuredSnippetPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.StructuredSnippetPlaceholderFieldEnum;

                        /**
                         * Decodes a StructuredSnippetPlaceholderFieldEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns StructuredSnippetPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.StructuredSnippetPlaceholderFieldEnum;

                        /**
                         * Verifies a StructuredSnippetPlaceholderFieldEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a StructuredSnippetPlaceholderFieldEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns StructuredSnippetPlaceholderFieldEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.StructuredSnippetPlaceholderFieldEnum;

                        /**
                         * Creates a plain object from a StructuredSnippetPlaceholderFieldEnum message. Also converts values to other types if specified.
                         * @param m StructuredSnippetPlaceholderFieldEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.StructuredSnippetPlaceholderFieldEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this StructuredSnippetPlaceholderFieldEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace StructuredSnippetPlaceholderFieldEnum {

                        /** StructuredSnippetPlaceholderField enum. */
                        enum StructuredSnippetPlaceholderField {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            HEADER = 2,
                            SNIPPETS = 3
                        }
                    }

                    /** Properties of a SummaryRowSettingEnum. */
                    interface ISummaryRowSettingEnum {
                    }

                    /** Represents a SummaryRowSettingEnum. */
                    class SummaryRowSettingEnum implements ISummaryRowSettingEnum {

                        /**
                         * Constructs a new SummaryRowSettingEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ISummaryRowSettingEnum): google.ads.googleads.v8.enums.SummaryRowSettingEnum;

                        /**
                         * Encodes the specified SummaryRowSettingEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.SummaryRowSettingEnum.verify|verify} messages.
                         * @param m SummaryRowSettingEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ISummaryRowSettingEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SummaryRowSettingEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ISummaryRowSettingEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SummaryRowSettingEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.SummaryRowSettingEnum;

                        /**
                         * Verifies a SummaryRowSettingEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SummaryRowSettingEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SummaryRowSettingEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.SummaryRowSettingEnum;

                        /**
                         * Creates a plain object from a SummaryRowSettingEnum message. Also converts values to other types if specified.
                         * @param m SummaryRowSettingEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.SummaryRowSettingEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SummaryRowSettingEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ISystemManagedResourceSourceEnum): google.ads.googleads.v8.enums.SystemManagedResourceSourceEnum;

                        /**
                         * Encodes the specified SystemManagedResourceSourceEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.SystemManagedResourceSourceEnum.verify|verify} messages.
                         * @param m SystemManagedResourceSourceEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ISystemManagedResourceSourceEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SystemManagedResourceSourceEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ISystemManagedResourceSourceEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SystemManagedResourceSourceEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.SystemManagedResourceSourceEnum;

                        /**
                         * Verifies a SystemManagedResourceSourceEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SystemManagedResourceSourceEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SystemManagedResourceSourceEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.SystemManagedResourceSourceEnum;

                        /**
                         * Creates a plain object from a SystemManagedResourceSourceEnum message. Also converts values to other types if specified.
                         * @param m SystemManagedResourceSourceEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.SystemManagedResourceSourceEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SystemManagedResourceSourceEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ITargetCpaOptInRecommendationGoalEnum): google.ads.googleads.v8.enums.TargetCpaOptInRecommendationGoalEnum;

                        /**
                         * Encodes the specified TargetCpaOptInRecommendationGoalEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.TargetCpaOptInRecommendationGoalEnum.verify|verify} messages.
                         * @param m TargetCpaOptInRecommendationGoalEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ITargetCpaOptInRecommendationGoalEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TargetCpaOptInRecommendationGoalEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ITargetCpaOptInRecommendationGoalEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TargetCpaOptInRecommendationGoalEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.TargetCpaOptInRecommendationGoalEnum;

                        /**
                         * Verifies a TargetCpaOptInRecommendationGoalEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TargetCpaOptInRecommendationGoalEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TargetCpaOptInRecommendationGoalEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.TargetCpaOptInRecommendationGoalEnum;

                        /**
                         * Creates a plain object from a TargetCpaOptInRecommendationGoalEnum message. Also converts values to other types if specified.
                         * @param m TargetCpaOptInRecommendationGoalEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.TargetCpaOptInRecommendationGoalEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TargetCpaOptInRecommendationGoalEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ITimeTypeEnum): google.ads.googleads.v8.enums.TimeTypeEnum;

                        /**
                         * Encodes the specified TimeTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.TimeTypeEnum.verify|verify} messages.
                         * @param m TimeTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ITimeTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TimeTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.ITimeTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TimeTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.TimeTypeEnum;

                        /**
                         * Verifies a TimeTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TimeTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TimeTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.TimeTypeEnum;

                        /**
                         * Creates a plain object from a TimeTypeEnum message. Also converts values to other types if specified.
                         * @param m TimeTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.TimeTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TimeTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace TimeTypeEnum {

                        /** TimeType enum. */
                        enum TimeType {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NOW = 2,
                            FOREVER = 3
                        }
                    }

                    /** Properties of a TravelPlaceholderFieldEnum. */
                    interface ITravelPlaceholderFieldEnum {
                    }

                    /** Represents a TravelPlaceholderFieldEnum. */
                    class TravelPlaceholderFieldEnum implements ITravelPlaceholderFieldEnum {

                        /**
                         * Constructs a new TravelPlaceholderFieldEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.enums.ITravelPlaceholderFieldEnum);

                        /**
                         * Creates a new TravelPlaceholderFieldEnum instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TravelPlaceholderFieldEnum instance
                         */
                        public static create(properties?: google.ads.googleads.v8.enums.ITravelPlaceholderFieldEnum): google.ads.googleads.v8.enums.TravelPlaceholderFieldEnum;

                        /**
                         * Encodes the specified TravelPlaceholderFieldEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.TravelPlaceholderFieldEnum.verify|verify} messages.
                         * @param m TravelPlaceholderFieldEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.ITravelPlaceholderFieldEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TravelPlaceholderFieldEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.enums.TravelPlaceholderFieldEnum.verify|verify} messages.
                         * @param message TravelPlaceholderFieldEnum message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.enums.ITravelPlaceholderFieldEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TravelPlaceholderFieldEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns TravelPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.enums.TravelPlaceholderFieldEnum;

                        /**
                         * Decodes a TravelPlaceholderFieldEnum message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TravelPlaceholderFieldEnum
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.enums.TravelPlaceholderFieldEnum;

                        /**
                         * Verifies a TravelPlaceholderFieldEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TravelPlaceholderFieldEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TravelPlaceholderFieldEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.TravelPlaceholderFieldEnum;

                        /**
                         * Creates a plain object from a TravelPlaceholderFieldEnum message. Also converts values to other types if specified.
                         * @param m TravelPlaceholderFieldEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.TravelPlaceholderFieldEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TravelPlaceholderFieldEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace TravelPlaceholderFieldEnum {

                        /** TravelPlaceholderField enum. */
                        enum TravelPlaceholderField {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DESTINATION_ID = 2,
                            ORIGIN_ID = 3,
                            TITLE = 4,
                            DESTINATION_NAME = 5,
                            ORIGIN_NAME = 6,
                            PRICE = 7,
                            FORMATTED_PRICE = 8,
                            SALE_PRICE = 9,
                            FORMATTED_SALE_PRICE = 10,
                            IMAGE_URL = 11,
                            CATEGORY = 12,
                            CONTEXTUAL_KEYWORDS = 13,
                            DESTINATION_ADDRESS = 14,
                            FINAL_URL = 15,
                            FINAL_MOBILE_URLS = 16,
                            TRACKING_URL = 17,
                            ANDROID_APP_LINK = 18,
                            SIMILAR_DESTINATION_IDS = 19,
                            IOS_APP_LINK = 20,
                            IOS_APP_STORE_ID = 21
                        }
                    }

                    /** Properties of a UserInterestTaxonomyTypeEnum. */
                    interface IUserInterestTaxonomyTypeEnum {
                    }

                    /** Represents a UserInterestTaxonomyTypeEnum. */
                    class UserInterestTaxonomyTypeEnum implements IUserInterestTaxonomyTypeEnum {

                        /**
                         * Constructs a new UserInterestTaxonomyTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IUserInterestTaxonomyTypeEnum): google.ads.googleads.v8.enums.UserInterestTaxonomyTypeEnum;

                        /**
                         * Encodes the specified UserInterestTaxonomyTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.UserInterestTaxonomyTypeEnum.verify|verify} messages.
                         * @param m UserInterestTaxonomyTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IUserInterestTaxonomyTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserInterestTaxonomyTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IUserInterestTaxonomyTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserInterestTaxonomyTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.UserInterestTaxonomyTypeEnum;

                        /**
                         * Verifies a UserInterestTaxonomyTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserInterestTaxonomyTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserInterestTaxonomyTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.UserInterestTaxonomyTypeEnum;

                        /**
                         * Creates a plain object from a UserInterestTaxonomyTypeEnum message. Also converts values to other types if specified.
                         * @param m UserInterestTaxonomyTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.UserInterestTaxonomyTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserInterestTaxonomyTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IUserListAccessStatusEnum): google.ads.googleads.v8.enums.UserListAccessStatusEnum;

                        /**
                         * Encodes the specified UserListAccessStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.UserListAccessStatusEnum.verify|verify} messages.
                         * @param m UserListAccessStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IUserListAccessStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListAccessStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IUserListAccessStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListAccessStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.UserListAccessStatusEnum;

                        /**
                         * Verifies a UserListAccessStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListAccessStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserListAccessStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.UserListAccessStatusEnum;

                        /**
                         * Creates a plain object from a UserListAccessStatusEnum message. Also converts values to other types if specified.
                         * @param m UserListAccessStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.UserListAccessStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListAccessStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IUserListClosingReasonEnum): google.ads.googleads.v8.enums.UserListClosingReasonEnum;

                        /**
                         * Encodes the specified UserListClosingReasonEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.UserListClosingReasonEnum.verify|verify} messages.
                         * @param m UserListClosingReasonEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IUserListClosingReasonEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListClosingReasonEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IUserListClosingReasonEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListClosingReasonEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.UserListClosingReasonEnum;

                        /**
                         * Verifies a UserListClosingReasonEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListClosingReasonEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserListClosingReasonEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.UserListClosingReasonEnum;

                        /**
                         * Creates a plain object from a UserListClosingReasonEnum message. Also converts values to other types if specified.
                         * @param m UserListClosingReasonEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.UserListClosingReasonEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListClosingReasonEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace UserListClosingReasonEnum {

                        /** UserListClosingReason enum. */
                        enum UserListClosingReason {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            UNUSED = 2
                        }
                    }

                    /** Properties of a UserListMembershipStatusEnum. */
                    interface IUserListMembershipStatusEnum {
                    }

                    /** Represents a UserListMembershipStatusEnum. */
                    class UserListMembershipStatusEnum implements IUserListMembershipStatusEnum {

                        /**
                         * Constructs a new UserListMembershipStatusEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IUserListMembershipStatusEnum): google.ads.googleads.v8.enums.UserListMembershipStatusEnum;

                        /**
                         * Encodes the specified UserListMembershipStatusEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.UserListMembershipStatusEnum.verify|verify} messages.
                         * @param m UserListMembershipStatusEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IUserListMembershipStatusEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListMembershipStatusEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IUserListMembershipStatusEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListMembershipStatusEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.UserListMembershipStatusEnum;

                        /**
                         * Verifies a UserListMembershipStatusEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListMembershipStatusEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserListMembershipStatusEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.UserListMembershipStatusEnum;

                        /**
                         * Creates a plain object from a UserListMembershipStatusEnum message. Also converts values to other types if specified.
                         * @param m UserListMembershipStatusEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.UserListMembershipStatusEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListMembershipStatusEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IUserListSizeRangeEnum): google.ads.googleads.v8.enums.UserListSizeRangeEnum;

                        /**
                         * Encodes the specified UserListSizeRangeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.UserListSizeRangeEnum.verify|verify} messages.
                         * @param m UserListSizeRangeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IUserListSizeRangeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListSizeRangeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IUserListSizeRangeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListSizeRangeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.UserListSizeRangeEnum;

                        /**
                         * Verifies a UserListSizeRangeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListSizeRangeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserListSizeRangeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.UserListSizeRangeEnum;

                        /**
                         * Creates a plain object from a UserListSizeRangeEnum message. Also converts values to other types if specified.
                         * @param m UserListSizeRangeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.UserListSizeRangeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListSizeRangeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 UserListTypeEnum. */
                    interface IUserListTypeEnum {
                    }

                    /** Represents a UserListTypeEnum. */
                    class UserListTypeEnum implements IUserListTypeEnum {

                        /**
                         * Constructs a new UserListTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IUserListTypeEnum): google.ads.googleads.v8.enums.UserListTypeEnum;

                        /**
                         * Encodes the specified UserListTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.UserListTypeEnum.verify|verify} messages.
                         * @param m UserListTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IUserListTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IUserListTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.UserListTypeEnum;

                        /**
                         * Verifies a UserListTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserListTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.UserListTypeEnum;

                        /**
                         * Creates a plain object from a UserListTypeEnum message. Also converts values to other types if specified.
                         * @param m UserListTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.UserListTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a ValueRuleDeviceTypeEnum. */
                    interface IValueRuleDeviceTypeEnum {
                    }

                    /** Represents a ValueRuleDeviceTypeEnum. */
                    class ValueRuleDeviceTypeEnum implements IValueRuleDeviceTypeEnum {

                        /**
                         * Constructs a new ValueRuleDeviceTypeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IValueRuleDeviceTypeEnum): google.ads.googleads.v8.enums.ValueRuleDeviceTypeEnum;

                        /**
                         * Encodes the specified ValueRuleDeviceTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ValueRuleDeviceTypeEnum.verify|verify} messages.
                         * @param m ValueRuleDeviceTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IValueRuleDeviceTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ValueRuleDeviceTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IValueRuleDeviceTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ValueRuleDeviceTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ValueRuleDeviceTypeEnum;

                        /**
                         * Verifies a ValueRuleDeviceTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ValueRuleDeviceTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ValueRuleDeviceTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ValueRuleDeviceTypeEnum;

                        /**
                         * Creates a plain object from a ValueRuleDeviceTypeEnum message. Also converts values to other types if specified.
                         * @param m ValueRuleDeviceTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ValueRuleDeviceTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ValueRuleDeviceTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IValueRuleGeoLocationMatchTypeEnum): google.ads.googleads.v8.enums.ValueRuleGeoLocationMatchTypeEnum;

                        /**
                         * Encodes the specified ValueRuleGeoLocationMatchTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ValueRuleGeoLocationMatchTypeEnum.verify|verify} messages.
                         * @param m ValueRuleGeoLocationMatchTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IValueRuleGeoLocationMatchTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ValueRuleGeoLocationMatchTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IValueRuleGeoLocationMatchTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ValueRuleGeoLocationMatchTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ValueRuleGeoLocationMatchTypeEnum;

                        /**
                         * Verifies a ValueRuleGeoLocationMatchTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ValueRuleGeoLocationMatchTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ValueRuleGeoLocationMatchTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ValueRuleGeoLocationMatchTypeEnum;

                        /**
                         * Creates a plain object from a ValueRuleGeoLocationMatchTypeEnum message. Also converts values to other types if specified.
                         * @param m ValueRuleGeoLocationMatchTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ValueRuleGeoLocationMatchTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ValueRuleGeoLocationMatchTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IValueRuleOperationEnum): google.ads.googleads.v8.enums.ValueRuleOperationEnum;

                        /**
                         * Encodes the specified ValueRuleOperationEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ValueRuleOperationEnum.verify|verify} messages.
                         * @param m ValueRuleOperationEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IValueRuleOperationEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ValueRuleOperationEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IValueRuleOperationEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ValueRuleOperationEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ValueRuleOperationEnum;

                        /**
                         * Verifies a ValueRuleOperationEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ValueRuleOperationEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ValueRuleOperationEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ValueRuleOperationEnum;

                        /**
                         * Creates a plain object from a ValueRuleOperationEnum message. Also converts values to other types if specified.
                         * @param m ValueRuleOperationEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ValueRuleOperationEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ValueRuleOperationEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IValueRuleSetAttachmentTypeEnum): google.ads.googleads.v8.enums.ValueRuleSetAttachmentTypeEnum;

                        /**
                         * Encodes the specified ValueRuleSetAttachmentTypeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ValueRuleSetAttachmentTypeEnum.verify|verify} messages.
                         * @param m ValueRuleSetAttachmentTypeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IValueRuleSetAttachmentTypeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ValueRuleSetAttachmentTypeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IValueRuleSetAttachmentTypeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ValueRuleSetAttachmentTypeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ValueRuleSetAttachmentTypeEnum;

                        /**
                         * Verifies a ValueRuleSetAttachmentTypeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ValueRuleSetAttachmentTypeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ValueRuleSetAttachmentTypeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ValueRuleSetAttachmentTypeEnum;

                        /**
                         * Creates a plain object from a ValueRuleSetAttachmentTypeEnum message. Also converts values to other types if specified.
                         * @param m ValueRuleSetAttachmentTypeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ValueRuleSetAttachmentTypeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ValueRuleSetAttachmentTypeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IValueRuleSetDimensionEnum): google.ads.googleads.v8.enums.ValueRuleSetDimensionEnum;

                        /**
                         * Encodes the specified ValueRuleSetDimensionEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.ValueRuleSetDimensionEnum.verify|verify} messages.
                         * @param m ValueRuleSetDimensionEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IValueRuleSetDimensionEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ValueRuleSetDimensionEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IValueRuleSetDimensionEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ValueRuleSetDimensionEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.ValueRuleSetDimensionEnum;

                        /**
                         * Verifies a ValueRuleSetDimensionEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ValueRuleSetDimensionEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ValueRuleSetDimensionEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.ValueRuleSetDimensionEnum;

                        /**
                         * Creates a plain object from a ValueRuleSetDimensionEnum message. Also converts values to other types if specified.
                         * @param m ValueRuleSetDimensionEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.ValueRuleSetDimensionEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ValueRuleSetDimensionEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace ValueRuleSetDimensionEnum {

                        /** ValueRuleSetDimension enum. */
                        enum ValueRuleSetDimension {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            GEO_LOCATION = 2,
                            DEVICE = 3,
                            AUDIENCE = 4
                        }
                    }

                    /** Properties of a VanityPharmaDisplayUrlModeEnum. */
                    interface IVanityPharmaDisplayUrlModeEnum {
                    }

                    /** Represents a VanityPharmaDisplayUrlModeEnum. */
                    class VanityPharmaDisplayUrlModeEnum implements IVanityPharmaDisplayUrlModeEnum {

                        /**
                         * Constructs a new VanityPharmaDisplayUrlModeEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IVanityPharmaDisplayUrlModeEnum): google.ads.googleads.v8.enums.VanityPharmaDisplayUrlModeEnum;

                        /**
                         * Encodes the specified VanityPharmaDisplayUrlModeEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.VanityPharmaDisplayUrlModeEnum.verify|verify} messages.
                         * @param m VanityPharmaDisplayUrlModeEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IVanityPharmaDisplayUrlModeEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified VanityPharmaDisplayUrlModeEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IVanityPharmaDisplayUrlModeEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a VanityPharmaDisplayUrlModeEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.VanityPharmaDisplayUrlModeEnum;

                        /**
                         * Verifies a VanityPharmaDisplayUrlModeEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a VanityPharmaDisplayUrlModeEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns VanityPharmaDisplayUrlModeEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.VanityPharmaDisplayUrlModeEnum;

                        /**
                         * Creates a plain object from a VanityPharmaDisplayUrlModeEnum message. Also converts values to other types if specified.
                         * @param m VanityPharmaDisplayUrlModeEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.VanityPharmaDisplayUrlModeEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this VanityPharmaDisplayUrlModeEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.IVanityPharmaTextEnum): google.ads.googleads.v8.enums.VanityPharmaTextEnum;

                        /**
                         * Encodes the specified VanityPharmaTextEnum message. Does not implicitly {@link google.ads.googleads.v8.enums.VanityPharmaTextEnum.verify|verify} messages.
                         * @param m VanityPharmaTextEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.enums.IVanityPharmaTextEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified VanityPharmaTextEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.enums.IVanityPharmaTextEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a VanityPharmaTextEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.enums.VanityPharmaTextEnum;

                        /**
                         * Verifies a VanityPharmaTextEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a VanityPharmaTextEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns VanityPharmaTextEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.enums.VanityPharmaTextEnum;

                        /**
                         * Creates a plain object from a VanityPharmaTextEnum message. Also converts values to other types if specified.
                         * @param m VanityPharmaTextEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.enums.VanityPharmaTextEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this VanityPharmaTextEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }
                }

                /** Namespace errors. */
                namespace errors {

                    /** Properties of an AccessInvitationErrorEnum. */
                    interface IAccessInvitationErrorEnum {
                    }

                    /** Represents an AccessInvitationErrorEnum. */
                    class AccessInvitationErrorEnum implements IAccessInvitationErrorEnum {

                        /**
                         * Constructs a new AccessInvitationErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IAccessInvitationErrorEnum): google.ads.googleads.v8.errors.AccessInvitationErrorEnum;

                        /**
                         * Encodes the specified AccessInvitationErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.AccessInvitationErrorEnum.verify|verify} messages.
                         * @param m AccessInvitationErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IAccessInvitationErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccessInvitationErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IAccessInvitationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccessInvitationErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.AccessInvitationErrorEnum;

                        /**
                         * Verifies an AccessInvitationErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AccessInvitationErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AccessInvitationErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.AccessInvitationErrorEnum;

                        /**
                         * Creates a plain object from an AccessInvitationErrorEnum message. Also converts values to other types if specified.
                         * @param m AccessInvitationErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.AccessInvitationErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccessInvitationErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IAccountBudgetProposalErrorEnum): google.ads.googleads.v8.errors.AccountBudgetProposalErrorEnum;

                        /**
                         * Encodes the specified AccountBudgetProposalErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.AccountBudgetProposalErrorEnum.verify|verify} messages.
                         * @param m AccountBudgetProposalErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IAccountBudgetProposalErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccountBudgetProposalErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IAccountBudgetProposalErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccountBudgetProposalErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.AccountBudgetProposalErrorEnum;

                        /**
                         * Verifies an AccountBudgetProposalErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AccountBudgetProposalErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AccountBudgetProposalErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.AccountBudgetProposalErrorEnum;

                        /**
                         * Creates a plain object from an AccountBudgetProposalErrorEnum message. Also converts values to other types if specified.
                         * @param m AccountBudgetProposalErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.AccountBudgetProposalErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccountBudgetProposalErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of an AccountLinkErrorEnum. */
                    interface IAccountLinkErrorEnum {
                    }

                    /** Represents an AccountLinkErrorEnum. */
                    class AccountLinkErrorEnum implements IAccountLinkErrorEnum {

                        /**
                         * Constructs a new AccountLinkErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IAccountLinkErrorEnum): google.ads.googleads.v8.errors.AccountLinkErrorEnum;

                        /**
                         * Encodes the specified AccountLinkErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.AccountLinkErrorEnum.verify|verify} messages.
                         * @param m AccountLinkErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IAccountLinkErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccountLinkErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IAccountLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccountLinkErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.AccountLinkErrorEnum;

                        /**
                         * Verifies an AccountLinkErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AccountLinkErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AccountLinkErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.AccountLinkErrorEnum;

                        /**
                         * Creates a plain object from an AccountLinkErrorEnum message. Also converts values to other types if specified.
                         * @param m AccountLinkErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.AccountLinkErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccountLinkErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace AccountLinkErrorEnum {

                        /** AccountLinkError enum. */
                        enum AccountLinkError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            INVALID_STATUS = 2
                        }
                    }

                    /** Properties of an AdCustomizerErrorEnum. */
                    interface IAdCustomizerErrorEnum {
                    }

                    /** Represents an AdCustomizerErrorEnum. */
                    class AdCustomizerErrorEnum implements IAdCustomizerErrorEnum {

                        /**
                         * Constructs a new AdCustomizerErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IAdCustomizerErrorEnum): google.ads.googleads.v8.errors.AdCustomizerErrorEnum;

                        /**
                         * Encodes the specified AdCustomizerErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.AdCustomizerErrorEnum.verify|verify} messages.
                         * @param m AdCustomizerErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IAdCustomizerErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdCustomizerErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IAdCustomizerErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdCustomizerErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.AdCustomizerErrorEnum;

                        /**
                         * Verifies an AdCustomizerErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdCustomizerErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdCustomizerErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.AdCustomizerErrorEnum;

                        /**
                         * Creates a plain object from an AdCustomizerErrorEnum message. Also converts values to other types if specified.
                         * @param m AdCustomizerErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.AdCustomizerErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdCustomizerErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IAdErrorEnum): google.ads.googleads.v8.errors.AdErrorEnum;

                        /**
                         * Encodes the specified AdErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.AdErrorEnum.verify|verify} messages.
                         * @param m AdErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IAdErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IAdErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.AdErrorEnum;

                        /**
                         * Verifies an AdErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.AdErrorEnum;

                        /**
                         * Creates a plain object from an AdErrorEnum message. Also converts values to other types if specified.
                         * @param m AdErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.AdErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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,
                            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,
                            STORE_MISMATCH = 152,
                            MISSING_REQUIRED_IMAGE_ASPECT_RATIO = 153
                        }
                    }

                    /** Properties of an AdGroupAdErrorEnum. */
                    interface IAdGroupAdErrorEnum {
                    }

                    /** Represents an AdGroupAdErrorEnum. */
                    class AdGroupAdErrorEnum implements IAdGroupAdErrorEnum {

                        /**
                         * Constructs a new AdGroupAdErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IAdGroupAdErrorEnum): google.ads.googleads.v8.errors.AdGroupAdErrorEnum;

                        /**
                         * Encodes the specified AdGroupAdErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.AdGroupAdErrorEnum.verify|verify} messages.
                         * @param m AdGroupAdErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IAdGroupAdErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAdErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IAdGroupAdErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAdErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.AdGroupAdErrorEnum;

                        /**
                         * Verifies an AdGroupAdErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupAdErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupAdErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.AdGroupAdErrorEnum;

                        /**
                         * Creates a plain object from an AdGroupAdErrorEnum message. Also converts values to other types if specified.
                         * @param m AdGroupAdErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.AdGroupAdErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAdErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of an AdGroupBidModifierErrorEnum. */
                    interface IAdGroupBidModifierErrorEnum {
                    }

                    /** Represents an AdGroupBidModifierErrorEnum. */
                    class AdGroupBidModifierErrorEnum implements IAdGroupBidModifierErrorEnum {

                        /**
                         * Constructs a new AdGroupBidModifierErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IAdGroupBidModifierErrorEnum): google.ads.googleads.v8.errors.AdGroupBidModifierErrorEnum;

                        /**
                         * Encodes the specified AdGroupBidModifierErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.AdGroupBidModifierErrorEnum.verify|verify} messages.
                         * @param m AdGroupBidModifierErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IAdGroupBidModifierErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupBidModifierErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IAdGroupBidModifierErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupBidModifierErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.AdGroupBidModifierErrorEnum;

                        /**
                         * Verifies an AdGroupBidModifierErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupBidModifierErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupBidModifierErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.AdGroupBidModifierErrorEnum;

                        /**
                         * Creates a plain object from an AdGroupBidModifierErrorEnum message. Also converts values to other types if specified.
                         * @param m AdGroupBidModifierErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.AdGroupBidModifierErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupBidModifierErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 AdGroupCriterionErrorEnum. */
                    interface IAdGroupCriterionErrorEnum {
                    }

                    /** Represents an AdGroupCriterionErrorEnum. */
                    class AdGroupCriterionErrorEnum implements IAdGroupCriterionErrorEnum {

                        /**
                         * Constructs a new AdGroupCriterionErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IAdGroupCriterionErrorEnum): google.ads.googleads.v8.errors.AdGroupCriterionErrorEnum;

                        /**
                         * Encodes the specified AdGroupCriterionErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.AdGroupCriterionErrorEnum.verify|verify} messages.
                         * @param m AdGroupCriterionErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IAdGroupCriterionErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupCriterionErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IAdGroupCriterionErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupCriterionErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.AdGroupCriterionErrorEnum;

                        /**
                         * Verifies an AdGroupCriterionErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupCriterionErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupCriterionErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.AdGroupCriterionErrorEnum;

                        /**
                         * Creates a plain object from an AdGroupCriterionErrorEnum message. Also converts values to other types if specified.
                         * @param m AdGroupCriterionErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.AdGroupCriterionErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupCriterionErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 AdGroupErrorEnum. */
                    interface IAdGroupErrorEnum {
                    }

                    /** Represents an AdGroupErrorEnum. */
                    class AdGroupErrorEnum implements IAdGroupErrorEnum {

                        /**
                         * Constructs a new AdGroupErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IAdGroupErrorEnum): google.ads.googleads.v8.errors.AdGroupErrorEnum;

                        /**
                         * Encodes the specified AdGroupErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.AdGroupErrorEnum.verify|verify} messages.
                         * @param m AdGroupErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IAdGroupErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IAdGroupErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.AdGroupErrorEnum;

                        /**
                         * Verifies an AdGroupErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.AdGroupErrorEnum;

                        /**
                         * Creates a plain object from an AdGroupErrorEnum message. Also converts values to other types if specified.
                         * @param m AdGroupErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.AdGroupErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of an AdGroupFeedErrorEnum. */
                    interface IAdGroupFeedErrorEnum {
                    }

                    /** Represents an AdGroupFeedErrorEnum. */
                    class AdGroupFeedErrorEnum implements IAdGroupFeedErrorEnum {

                        /**
                         * Constructs a new AdGroupFeedErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IAdGroupFeedErrorEnum): google.ads.googleads.v8.errors.AdGroupFeedErrorEnum;

                        /**
                         * Encodes the specified AdGroupFeedErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.AdGroupFeedErrorEnum.verify|verify} messages.
                         * @param m AdGroupFeedErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IAdGroupFeedErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupFeedErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IAdGroupFeedErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupFeedErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.AdGroupFeedErrorEnum;

                        /**
                         * Verifies an AdGroupFeedErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupFeedErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupFeedErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.AdGroupFeedErrorEnum;

                        /**
                         * Creates a plain object from an AdGroupFeedErrorEnum message. Also converts values to other types if specified.
                         * @param m AdGroupFeedErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.AdGroupFeedErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupFeedErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IAdParameterErrorEnum): google.ads.googleads.v8.errors.AdParameterErrorEnum;

                        /**
                         * Encodes the specified AdParameterErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.AdParameterErrorEnum.verify|verify} messages.
                         * @param m AdParameterErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IAdParameterErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdParameterErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IAdParameterErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdParameterErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.AdParameterErrorEnum;

                        /**
                         * Verifies an AdParameterErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdParameterErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdParameterErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.AdParameterErrorEnum;

                        /**
                         * Creates a plain object from an AdParameterErrorEnum message. Also converts values to other types if specified.
                         * @param m AdParameterErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.AdParameterErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdParameterErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IAdSharingErrorEnum): google.ads.googleads.v8.errors.AdSharingErrorEnum;

                        /**
                         * Encodes the specified AdSharingErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.AdSharingErrorEnum.verify|verify} messages.
                         * @param m AdSharingErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IAdSharingErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdSharingErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IAdSharingErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdSharingErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.AdSharingErrorEnum;

                        /**
                         * Verifies an AdSharingErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdSharingErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdSharingErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.AdSharingErrorEnum;

                        /**
                         * Creates a plain object from an AdSharingErrorEnum message. Also converts values to other types if specified.
                         * @param m AdSharingErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.AdSharingErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdSharingErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IAdxErrorEnum): google.ads.googleads.v8.errors.AdxErrorEnum;

                        /**
                         * Encodes the specified AdxErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.AdxErrorEnum.verify|verify} messages.
                         * @param m AdxErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IAdxErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdxErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IAdxErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdxErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.AdxErrorEnum;

                        /**
                         * Verifies an AdxErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdxErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdxErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.AdxErrorEnum;

                        /**
                         * Creates a plain object from an AdxErrorEnum message. Also converts values to other types if specified.
                         * @param m AdxErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.AdxErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdxErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IAssetErrorEnum): google.ads.googleads.v8.errors.AssetErrorEnum;

                        /**
                         * Encodes the specified AssetErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.AssetErrorEnum.verify|verify} messages.
                         * @param m AssetErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IAssetErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IAssetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.AssetErrorEnum;

                        /**
                         * Verifies an AssetErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AssetErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AssetErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.AssetErrorEnum;

                        /**
                         * Creates a plain object from an AssetErrorEnum message. Also converts values to other types if specified.
                         * @param m AssetErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.AssetErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of an AssetLinkErrorEnum. */
                    interface IAssetLinkErrorEnum {
                    }

                    /** Represents an AssetLinkErrorEnum. */
                    class AssetLinkErrorEnum implements IAssetLinkErrorEnum {

                        /**
                         * Constructs a new AssetLinkErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IAssetLinkErrorEnum): google.ads.googleads.v8.errors.AssetLinkErrorEnum;

                        /**
                         * Encodes the specified AssetLinkErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.AssetLinkErrorEnum.verify|verify} messages.
                         * @param m AssetLinkErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IAssetLinkErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetLinkErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IAssetLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetLinkErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.AssetLinkErrorEnum;

                        /**
                         * Verifies an AssetLinkErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AssetLinkErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AssetLinkErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.AssetLinkErrorEnum;

                        /**
                         * Creates a plain object from an AssetLinkErrorEnum message. Also converts values to other types if specified.
                         * @param m AssetLinkErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.AssetLinkErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetLinkErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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,
                            INVALID_STATUS = 17
                        }
                    }

                    /** Properties of an AuthenticationErrorEnum. */
                    interface IAuthenticationErrorEnum {
                    }

                    /** Represents an AuthenticationErrorEnum. */
                    class AuthenticationErrorEnum implements IAuthenticationErrorEnum {

                        /**
                         * Constructs a new AuthenticationErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IAuthenticationErrorEnum): google.ads.googleads.v8.errors.AuthenticationErrorEnum;

                        /**
                         * Encodes the specified AuthenticationErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.AuthenticationErrorEnum.verify|verify} messages.
                         * @param m AuthenticationErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IAuthenticationErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AuthenticationErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IAuthenticationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AuthenticationErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.AuthenticationErrorEnum;

                        /**
                         * Verifies an AuthenticationErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AuthenticationErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AuthenticationErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.AuthenticationErrorEnum;

                        /**
                         * Creates a plain object from an AuthenticationErrorEnum message. Also converts values to other types if specified.
                         * @param m AuthenticationErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.AuthenticationErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AuthenticationErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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,
                            USER_ID_INVALID = 22,
                            TWO_STEP_VERIFICATION_NOT_ENROLLED = 23,
                            ADVANCED_PROTECTION_NOT_ENROLLED = 24
                        }
                    }

                    /** Properties of an AuthorizationErrorEnum. */
                    interface IAuthorizationErrorEnum {
                    }

                    /** Represents an AuthorizationErrorEnum. */
                    class AuthorizationErrorEnum implements IAuthorizationErrorEnum {

                        /**
                         * Constructs a new AuthorizationErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IAuthorizationErrorEnum): google.ads.googleads.v8.errors.AuthorizationErrorEnum;

                        /**
                         * Encodes the specified AuthorizationErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.AuthorizationErrorEnum.verify|verify} messages.
                         * @param m AuthorizationErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IAuthorizationErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AuthorizationErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IAuthorizationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AuthorizationErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.AuthorizationErrorEnum;

                        /**
                         * Verifies an AuthorizationErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AuthorizationErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AuthorizationErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.AuthorizationErrorEnum;

                        /**
                         * Creates a plain object from an AuthorizationErrorEnum message. Also converts values to other types if specified.
                         * @param m AuthorizationErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.AuthorizationErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AuthorizationErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a BatchJobErrorEnum. */
                    interface IBatchJobErrorEnum {
                    }

                    /** Represents a BatchJobErrorEnum. */
                    class BatchJobErrorEnum implements IBatchJobErrorEnum {

                        /**
                         * Constructs a new BatchJobErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IBatchJobErrorEnum): google.ads.googleads.v8.errors.BatchJobErrorEnum;

                        /**
                         * Encodes the specified BatchJobErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.BatchJobErrorEnum.verify|verify} messages.
                         * @param m BatchJobErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IBatchJobErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BatchJobErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IBatchJobErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BatchJobErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.BatchJobErrorEnum;

                        /**
                         * Verifies a BatchJobErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BatchJobErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BatchJobErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.BatchJobErrorEnum;

                        /**
                         * Creates a plain object from a BatchJobErrorEnum message. Also converts values to other types if specified.
                         * @param m BatchJobErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.BatchJobErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BatchJobErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a BiddingErrorEnum. */
                    interface IBiddingErrorEnum {
                    }

                    /** Represents a BiddingErrorEnum. */
                    class BiddingErrorEnum implements IBiddingErrorEnum {

                        /**
                         * Constructs a new BiddingErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IBiddingErrorEnum): google.ads.googleads.v8.errors.BiddingErrorEnum;

                        /**
                         * Encodes the specified BiddingErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.BiddingErrorEnum.verify|verify} messages.
                         * @param m BiddingErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IBiddingErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddingErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IBiddingErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddingErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.BiddingErrorEnum;

                        /**
                         * Verifies a BiddingErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddingErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BiddingErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.BiddingErrorEnum;

                        /**
                         * Creates a plain object from a BiddingErrorEnum message. Also converts values to other types if specified.
                         * @param m BiddingErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.BiddingErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddingErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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,
                            CONVERSION_TRACKING_NOT_ENABLED = 19,
                            NOT_ENOUGH_CONVERSIONS = 20,
                            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,
                            NOT_COMPATIBLE_WITH_BUDGET_TYPE = 35,
                            NOT_COMPATIBLE_WITH_BIDDING_STRATEGY_TYPE = 36,
                            BIDDING_STRATEGY_TYPE_INCOMPATIBLE_WITH_SHARED_BUDGET = 37
                        }
                    }

                    /** Properties of a BiddingStrategyErrorEnum. */
                    interface IBiddingStrategyErrorEnum {
                    }

                    /** Represents a BiddingStrategyErrorEnum. */
                    class BiddingStrategyErrorEnum implements IBiddingStrategyErrorEnum {

                        /**
                         * Constructs a new BiddingStrategyErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IBiddingStrategyErrorEnum): google.ads.googleads.v8.errors.BiddingStrategyErrorEnum;

                        /**
                         * Encodes the specified BiddingStrategyErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.BiddingStrategyErrorEnum.verify|verify} messages.
                         * @param m BiddingStrategyErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IBiddingStrategyErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddingStrategyErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IBiddingStrategyErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddingStrategyErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.BiddingStrategyErrorEnum;

                        /**
                         * Verifies a BiddingStrategyErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddingStrategyErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BiddingStrategyErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.BiddingStrategyErrorEnum;

                        /**
                         * Creates a plain object from a BiddingStrategyErrorEnum message. Also converts values to other types if specified.
                         * @param m BiddingStrategyErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.BiddingStrategyErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddingStrategyErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IBillingSetupErrorEnum): google.ads.googleads.v8.errors.BillingSetupErrorEnum;

                        /**
                         * Encodes the specified BillingSetupErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.BillingSetupErrorEnum.verify|verify} messages.
                         * @param m BillingSetupErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IBillingSetupErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BillingSetupErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IBillingSetupErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BillingSetupErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.BillingSetupErrorEnum;

                        /**
                         * Verifies a BillingSetupErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BillingSetupErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BillingSetupErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.BillingSetupErrorEnum;

                        /**
                         * Creates a plain object from a BillingSetupErrorEnum message. Also converts values to other types if specified.
                         * @param m BillingSetupErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.BillingSetupErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BillingSetupErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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_ACCOUNT_INELIGIBLE_CURRENCY_CODE_MISMATCH = 19
                        }
                    }

                    /** Properties of a CampaignBudgetErrorEnum. */
                    interface ICampaignBudgetErrorEnum {
                    }

                    /** Represents a CampaignBudgetErrorEnum. */
                    class CampaignBudgetErrorEnum implements ICampaignBudgetErrorEnum {

                        /**
                         * Constructs a new CampaignBudgetErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.ICampaignBudgetErrorEnum): google.ads.googleads.v8.errors.CampaignBudgetErrorEnum;

                        /**
                         * Encodes the specified CampaignBudgetErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.CampaignBudgetErrorEnum.verify|verify} messages.
                         * @param m CampaignBudgetErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.ICampaignBudgetErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignBudgetErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ICampaignBudgetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignBudgetErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.CampaignBudgetErrorEnum;

                        /**
                         * Verifies a CampaignBudgetErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignBudgetErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignBudgetErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.CampaignBudgetErrorEnum;

                        /**
                         * Creates a plain object from a CampaignBudgetErrorEnum message. Also converts values to other types if specified.
                         * @param m CampaignBudgetErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.CampaignBudgetErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignBudgetErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a CampaignCriterionErrorEnum. */
                    interface ICampaignCriterionErrorEnum {
                    }

                    /** Represents a CampaignCriterionErrorEnum. */
                    class CampaignCriterionErrorEnum implements ICampaignCriterionErrorEnum {

                        /**
                         * Constructs a new CampaignCriterionErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.ICampaignCriterionErrorEnum): google.ads.googleads.v8.errors.CampaignCriterionErrorEnum;

                        /**
                         * Encodes the specified CampaignCriterionErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.CampaignCriterionErrorEnum.verify|verify} messages.
                         * @param m CampaignCriterionErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.ICampaignCriterionErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignCriterionErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ICampaignCriterionErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignCriterionErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.CampaignCriterionErrorEnum;

                        /**
                         * Verifies a CampaignCriterionErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignCriterionErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignCriterionErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.CampaignCriterionErrorEnum;

                        /**
                         * Creates a plain object from a CampaignCriterionErrorEnum message. Also converts values to other types if specified.
                         * @param m CampaignCriterionErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.CampaignCriterionErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignCriterionErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a CampaignDraftErrorEnum. */
                    interface ICampaignDraftErrorEnum {
                    }

                    /** Represents a CampaignDraftErrorEnum. */
                    class CampaignDraftErrorEnum implements ICampaignDraftErrorEnum {

                        /**
                         * Constructs a new CampaignDraftErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.ICampaignDraftErrorEnum): google.ads.googleads.v8.errors.CampaignDraftErrorEnum;

                        /**
                         * Encodes the specified CampaignDraftErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.CampaignDraftErrorEnum.verify|verify} messages.
                         * @param m CampaignDraftErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.ICampaignDraftErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignDraftErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ICampaignDraftErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignDraftErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.CampaignDraftErrorEnum;

                        /**
                         * Verifies a CampaignDraftErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignDraftErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignDraftErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.CampaignDraftErrorEnum;

                        /**
                         * Creates a plain object from a CampaignDraftErrorEnum message. Also converts values to other types if specified.
                         * @param m CampaignDraftErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.CampaignDraftErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignDraftErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.ICampaignErrorEnum): google.ads.googleads.v8.errors.CampaignErrorEnum;

                        /**
                         * Encodes the specified CampaignErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.CampaignErrorEnum.verify|verify} messages.
                         * @param m CampaignErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.ICampaignErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ICampaignErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.CampaignErrorEnum;

                        /**
                         * Verifies a CampaignErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.CampaignErrorEnum;

                        /**
                         * Creates a plain object from a CampaignErrorEnum message. Also converts values to other types if specified.
                         * @param m CampaignErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.CampaignErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a CampaignExperimentErrorEnum. */
                    interface ICampaignExperimentErrorEnum {
                    }

                    /** Represents a CampaignExperimentErrorEnum. */
                    class CampaignExperimentErrorEnum implements ICampaignExperimentErrorEnum {

                        /**
                         * Constructs a new CampaignExperimentErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.ICampaignExperimentErrorEnum): google.ads.googleads.v8.errors.CampaignExperimentErrorEnum;

                        /**
                         * Encodes the specified CampaignExperimentErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.CampaignExperimentErrorEnum.verify|verify} messages.
                         * @param m CampaignExperimentErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.ICampaignExperimentErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignExperimentErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ICampaignExperimentErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignExperimentErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.CampaignExperimentErrorEnum;

                        /**
                         * Verifies a CampaignExperimentErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignExperimentErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignExperimentErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.CampaignExperimentErrorEnum;

                        /**
                         * Creates a plain object from a CampaignExperimentErrorEnum message. Also converts values to other types if specified.
                         * @param m CampaignExperimentErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.CampaignExperimentErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignExperimentErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.ICampaignFeedErrorEnum): google.ads.googleads.v8.errors.CampaignFeedErrorEnum;

                        /**
                         * Encodes the specified CampaignFeedErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.CampaignFeedErrorEnum.verify|verify} messages.
                         * @param m CampaignFeedErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.ICampaignFeedErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignFeedErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ICampaignFeedErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignFeedErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.CampaignFeedErrorEnum;

                        /**
                         * Verifies a CampaignFeedErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignFeedErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignFeedErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.CampaignFeedErrorEnum;

                        /**
                         * Creates a plain object from a CampaignFeedErrorEnum message. Also converts values to other types if specified.
                         * @param m CampaignFeedErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.CampaignFeedErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignFeedErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a CampaignSharedSetErrorEnum. */
                    interface ICampaignSharedSetErrorEnum {
                    }

                    /** Represents a CampaignSharedSetErrorEnum. */
                    class CampaignSharedSetErrorEnum implements ICampaignSharedSetErrorEnum {

                        /**
                         * Constructs a new CampaignSharedSetErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.ICampaignSharedSetErrorEnum): google.ads.googleads.v8.errors.CampaignSharedSetErrorEnum;

                        /**
                         * Encodes the specified CampaignSharedSetErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.CampaignSharedSetErrorEnum.verify|verify} messages.
                         * @param m CampaignSharedSetErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.ICampaignSharedSetErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignSharedSetErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ICampaignSharedSetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignSharedSetErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.CampaignSharedSetErrorEnum;

                        /**
                         * Verifies a CampaignSharedSetErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignSharedSetErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignSharedSetErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.CampaignSharedSetErrorEnum;

                        /**
                         * Creates a plain object from a CampaignSharedSetErrorEnum message. Also converts values to other types if specified.
                         * @param m CampaignSharedSetErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.CampaignSharedSetErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignSharedSetErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IChangeEventErrorEnum): google.ads.googleads.v8.errors.ChangeEventErrorEnum;

                        /**
                         * Encodes the specified ChangeEventErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.ChangeEventErrorEnum.verify|verify} messages.
                         * @param m ChangeEventErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IChangeEventErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ChangeEventErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IChangeEventErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ChangeEventErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.ChangeEventErrorEnum;

                        /**
                         * Verifies a ChangeEventErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ChangeEventErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ChangeEventErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.ChangeEventErrorEnum;

                        /**
                         * Creates a plain object from a ChangeEventErrorEnum message. Also converts values to other types if specified.
                         * @param m ChangeEventErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.ChangeEventErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ChangeEventErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IChangeStatusErrorEnum): google.ads.googleads.v8.errors.ChangeStatusErrorEnum;

                        /**
                         * Encodes the specified ChangeStatusErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.ChangeStatusErrorEnum.verify|verify} messages.
                         * @param m ChangeStatusErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IChangeStatusErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ChangeStatusErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IChangeStatusErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ChangeStatusErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.ChangeStatusErrorEnum;

                        /**
                         * Verifies a ChangeStatusErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ChangeStatusErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ChangeStatusErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.ChangeStatusErrorEnum;

                        /**
                         * Creates a plain object from a ChangeStatusErrorEnum message. Also converts values to other types if specified.
                         * @param m ChangeStatusErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.ChangeStatusErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ChangeStatusErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 CollectionSizeErrorEnum. */
                    interface ICollectionSizeErrorEnum {
                    }

                    /** Represents a CollectionSizeErrorEnum. */
                    class CollectionSizeErrorEnum implements ICollectionSizeErrorEnum {

                        /**
                         * Constructs a new CollectionSizeErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.ICollectionSizeErrorEnum): google.ads.googleads.v8.errors.CollectionSizeErrorEnum;

                        /**
                         * Encodes the specified CollectionSizeErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.CollectionSizeErrorEnum.verify|verify} messages.
                         * @param m CollectionSizeErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.ICollectionSizeErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CollectionSizeErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ICollectionSizeErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CollectionSizeErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.CollectionSizeErrorEnum;

                        /**
                         * Verifies a CollectionSizeErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CollectionSizeErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CollectionSizeErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.CollectionSizeErrorEnum;

                        /**
                         * Creates a plain object from a CollectionSizeErrorEnum message. Also converts values to other types if specified.
                         * @param m CollectionSizeErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.CollectionSizeErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CollectionSizeErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IContextErrorEnum): google.ads.googleads.v8.errors.ContextErrorEnum;

                        /**
                         * Encodes the specified ContextErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.ContextErrorEnum.verify|verify} messages.
                         * @param m ContextErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IContextErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ContextErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IContextErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ContextErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.ContextErrorEnum;

                        /**
                         * Verifies a ContextErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ContextErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ContextErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.ContextErrorEnum;

                        /**
                         * Creates a plain object from a ContextErrorEnum message. Also converts values to other types if specified.
                         * @param m ContextErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.ContextErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ContextErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IConversionActionErrorEnum): google.ads.googleads.v8.errors.ConversionActionErrorEnum;

                        /**
                         * Encodes the specified ConversionActionErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.ConversionActionErrorEnum.verify|verify} messages.
                         * @param m ConversionActionErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IConversionActionErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionActionErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IConversionActionErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionActionErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.ConversionActionErrorEnum;

                        /**
                         * Verifies a ConversionActionErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionActionErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionActionErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.ConversionActionErrorEnum;

                        /**
                         * Creates a plain object from a ConversionActionErrorEnum message. Also converts values to other types if specified.
                         * @param m ConversionActionErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.ConversionActionErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionActionErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a ConversionAdjustmentUploadErrorEnum. */
                    interface IConversionAdjustmentUploadErrorEnum {
                    }

                    /** Represents a ConversionAdjustmentUploadErrorEnum. */
                    class ConversionAdjustmentUploadErrorEnum implements IConversionAdjustmentUploadErrorEnum {

                        /**
                         * Constructs a new ConversionAdjustmentUploadErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IConversionAdjustmentUploadErrorEnum): google.ads.googleads.v8.errors.ConversionAdjustmentUploadErrorEnum;

                        /**
                         * Encodes the specified ConversionAdjustmentUploadErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.ConversionAdjustmentUploadErrorEnum.verify|verify} messages.
                         * @param m ConversionAdjustmentUploadErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IConversionAdjustmentUploadErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionAdjustmentUploadErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IConversionAdjustmentUploadErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionAdjustmentUploadErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.ConversionAdjustmentUploadErrorEnum;

                        /**
                         * Verifies a ConversionAdjustmentUploadErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionAdjustmentUploadErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionAdjustmentUploadErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.ConversionAdjustmentUploadErrorEnum;

                        /**
                         * Creates a plain object from a ConversionAdjustmentUploadErrorEnum message. Also converts values to other types if specified.
                         * @param m ConversionAdjustmentUploadErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.ConversionAdjustmentUploadErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionAdjustmentUploadErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace ConversionAdjustmentUploadErrorEnum {

                        /** ConversionAdjustmentUploadError enum. */
                        enum ConversionAdjustmentUploadError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            TOO_RECENT_CONVERSION_ACTION = 2,
                            INVALID_CONVERSION_ACTION = 3,
                            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,
                            CUSTOMER_NOT_ACCEPTED_CUSTOMER_DATA_TERMS = 15,
                            CONVERSION_ACTION_NOT_ELIGIBLE_FOR_ENHANCEMENT = 16,
                            INVALID_USER_IDENTIFIER = 17,
                            UNSUPPORTED_USER_IDENTIFIER = 18,
                            INVALID_USER_IDENTIFIER_SOURCE = 19
                        }
                    }

                    /** Properties of a ConversionCustomVariableErrorEnum. */
                    interface IConversionCustomVariableErrorEnum {
                    }

                    /** Represents a ConversionCustomVariableErrorEnum. */
                    class ConversionCustomVariableErrorEnum implements IConversionCustomVariableErrorEnum {

                        /**
                         * Constructs a new ConversionCustomVariableErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IConversionCustomVariableErrorEnum): google.ads.googleads.v8.errors.ConversionCustomVariableErrorEnum;

                        /**
                         * Encodes the specified ConversionCustomVariableErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.ConversionCustomVariableErrorEnum.verify|verify} messages.
                         * @param m ConversionCustomVariableErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IConversionCustomVariableErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionCustomVariableErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IConversionCustomVariableErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionCustomVariableErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.ConversionCustomVariableErrorEnum;

                        /**
                         * Verifies a ConversionCustomVariableErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionCustomVariableErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionCustomVariableErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.ConversionCustomVariableErrorEnum;

                        /**
                         * Creates a plain object from a ConversionCustomVariableErrorEnum message. Also converts values to other types if specified.
                         * @param m ConversionCustomVariableErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.ConversionCustomVariableErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionCustomVariableErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace ConversionCustomVariableErrorEnum {

                        /** ConversionCustomVariableError enum. */
                        enum ConversionCustomVariableError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            DUPLICATE_NAME = 2,
                            DUPLICATE_TAG = 3
                        }
                    }

                    /** Properties of a ConversionUploadErrorEnum. */
                    interface IConversionUploadErrorEnum {
                    }

                    /** Represents a ConversionUploadErrorEnum. */
                    class ConversionUploadErrorEnum implements IConversionUploadErrorEnum {

                        /**
                         * Constructs a new ConversionUploadErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IConversionUploadErrorEnum): google.ads.googleads.v8.errors.ConversionUploadErrorEnum;

                        /**
                         * Encodes the specified ConversionUploadErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.ConversionUploadErrorEnum.verify|verify} messages.
                         * @param m ConversionUploadErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IConversionUploadErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionUploadErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IConversionUploadErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionUploadErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.ConversionUploadErrorEnum;

                        /**
                         * Verifies a ConversionUploadErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionUploadErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionUploadErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.ConversionUploadErrorEnum;

                        /**
                         * Creates a plain object from a ConversionUploadErrorEnum message. Also converts values to other types if specified.
                         * @param m ConversionUploadErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.ConversionUploadErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionUploadErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace ConversionUploadErrorEnum {

                        /** ConversionUploadError enum. */
                        enum ConversionUploadError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            TOO_MANY_CONVERSIONS_IN_REQUEST = 2,
                            UNPARSEABLE_GCLID = 3,
                            CONVERSION_PRECEDES_GCLID = 4,
                            EXPIRED_GCLID = 5,
                            TOO_RECENT_GCLID = 6,
                            GCLID_NOT_FOUND = 7,
                            UNAUTHORIZED_CUSTOMER = 8,
                            INVALID_CONVERSION_ACTION = 9,
                            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,
                            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,
                            INVALID_USER_IDENTIFIER_SOURCE = 37
                        }
                    }

                    /** Properties of a ConversionValueRuleErrorEnum. */
                    interface IConversionValueRuleErrorEnum {
                    }

                    /** Represents a ConversionValueRuleErrorEnum. */
                    class ConversionValueRuleErrorEnum implements IConversionValueRuleErrorEnum {

                        /**
                         * Constructs a new ConversionValueRuleErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IConversionValueRuleErrorEnum): google.ads.googleads.v8.errors.ConversionValueRuleErrorEnum;

                        /**
                         * Encodes the specified ConversionValueRuleErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.ConversionValueRuleErrorEnum.verify|verify} messages.
                         * @param m ConversionValueRuleErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IConversionValueRuleErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionValueRuleErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IConversionValueRuleErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionValueRuleErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.ConversionValueRuleErrorEnum;

                        /**
                         * Verifies a ConversionValueRuleErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionValueRuleErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionValueRuleErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.ConversionValueRuleErrorEnum;

                        /**
                         * Creates a plain object from a ConversionValueRuleErrorEnum message. Also converts values to other types if specified.
                         * @param m ConversionValueRuleErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.ConversionValueRuleErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionValueRuleErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a ConversionValueRuleSetErrorEnum. */
                    interface IConversionValueRuleSetErrorEnum {
                    }

                    /** Represents a ConversionValueRuleSetErrorEnum. */
                    class ConversionValueRuleSetErrorEnum implements IConversionValueRuleSetErrorEnum {

                        /**
                         * Constructs a new ConversionValueRuleSetErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IConversionValueRuleSetErrorEnum): google.ads.googleads.v8.errors.ConversionValueRuleSetErrorEnum;

                        /**
                         * Encodes the specified ConversionValueRuleSetErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.ConversionValueRuleSetErrorEnum.verify|verify} messages.
                         * @param m ConversionValueRuleSetErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IConversionValueRuleSetErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionValueRuleSetErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IConversionValueRuleSetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionValueRuleSetErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.ConversionValueRuleSetErrorEnum;

                        /**
                         * Verifies a ConversionValueRuleSetErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionValueRuleSetErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionValueRuleSetErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.ConversionValueRuleSetErrorEnum;

                        /**
                         * Creates a plain object from a ConversionValueRuleSetErrorEnum message. Also converts values to other types if specified.
                         * @param m ConversionValueRuleSetErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.ConversionValueRuleSetErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionValueRuleSetErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a CountryCodeErrorEnum. */
                    interface ICountryCodeErrorEnum {
                    }

                    /** Represents a CountryCodeErrorEnum. */
                    class CountryCodeErrorEnum implements ICountryCodeErrorEnum {

                        /**
                         * Constructs a new CountryCodeErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.ICountryCodeErrorEnum): google.ads.googleads.v8.errors.CountryCodeErrorEnum;

                        /**
                         * Encodes the specified CountryCodeErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.CountryCodeErrorEnum.verify|verify} messages.
                         * @param m CountryCodeErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.ICountryCodeErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CountryCodeErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ICountryCodeErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CountryCodeErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.CountryCodeErrorEnum;

                        /**
                         * Verifies a CountryCodeErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CountryCodeErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CountryCodeErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.CountryCodeErrorEnum;

                        /**
                         * Creates a plain object from a CountryCodeErrorEnum message. Also converts values to other types if specified.
                         * @param m CountryCodeErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.CountryCodeErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CountryCodeErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.ICriterionErrorEnum): google.ads.googleads.v8.errors.CriterionErrorEnum;

                        /**
                         * Encodes the specified CriterionErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.CriterionErrorEnum.verify|verify} messages.
                         * @param m CriterionErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.ICriterionErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CriterionErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ICriterionErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CriterionErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.CriterionErrorEnum;

                        /**
                         * Verifies a CriterionErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CriterionErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CriterionErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.CriterionErrorEnum;

                        /**
                         * Creates a plain object from a CriterionErrorEnum message. Also converts values to other types if specified.
                         * @param m CriterionErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.CriterionErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CriterionErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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,
                            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,
                            INVALID_LISTING_GROUP_HIERARCHY = 106,
                            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
                        }
                    }

                    /** Properties of a CurrencyCodeErrorEnum. */
                    interface ICurrencyCodeErrorEnum {
                    }

                    /** Represents a CurrencyCodeErrorEnum. */
                    class CurrencyCodeErrorEnum implements ICurrencyCodeErrorEnum {

                        /**
                         * Constructs a new CurrencyCodeErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.ICurrencyCodeErrorEnum): google.ads.googleads.v8.errors.CurrencyCodeErrorEnum;

                        /**
                         * Encodes the specified CurrencyCodeErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.CurrencyCodeErrorEnum.verify|verify} messages.
                         * @param m CurrencyCodeErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.ICurrencyCodeErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CurrencyCodeErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ICurrencyCodeErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CurrencyCodeErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.CurrencyCodeErrorEnum;

                        /**
                         * Verifies a CurrencyCodeErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CurrencyCodeErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CurrencyCodeErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.CurrencyCodeErrorEnum;

                        /**
                         * Creates a plain object from a CurrencyCodeErrorEnum message. Also converts values to other types if specified.
                         * @param m CurrencyCodeErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.CurrencyCodeErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CurrencyCodeErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace CurrencyCodeErrorEnum {

                        /** CurrencyCodeError enum. */
                        enum CurrencyCodeError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            UNSUPPORTED = 2
                        }
                    }

                    /** Properties of a CustomAudienceErrorEnum. */
                    interface ICustomAudienceErrorEnum {
                    }

                    /** Represents a CustomAudienceErrorEnum. */
                    class CustomAudienceErrorEnum implements ICustomAudienceErrorEnum {

                        /**
                         * Constructs a new CustomAudienceErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.ICustomAudienceErrorEnum): google.ads.googleads.v8.errors.CustomAudienceErrorEnum;

                        /**
                         * Encodes the specified CustomAudienceErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.CustomAudienceErrorEnum.verify|verify} messages.
                         * @param m CustomAudienceErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.ICustomAudienceErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomAudienceErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ICustomAudienceErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomAudienceErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.CustomAudienceErrorEnum;

                        /**
                         * Verifies a CustomAudienceErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomAudienceErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomAudienceErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.CustomAudienceErrorEnum;

                        /**
                         * Creates a plain object from a CustomAudienceErrorEnum message. Also converts values to other types if specified.
                         * @param m CustomAudienceErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.CustomAudienceErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomAudienceErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 CustomInterestErrorEnum. */
                    interface ICustomInterestErrorEnum {
                    }

                    /** Represents a CustomInterestErrorEnum. */
                    class CustomInterestErrorEnum implements ICustomInterestErrorEnum {

                        /**
                         * Constructs a new CustomInterestErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.ICustomInterestErrorEnum): google.ads.googleads.v8.errors.CustomInterestErrorEnum;

                        /**
                         * Encodes the specified CustomInterestErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.CustomInterestErrorEnum.verify|verify} messages.
                         * @param m CustomInterestErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.ICustomInterestErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomInterestErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ICustomInterestErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomInterestErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.CustomInterestErrorEnum;

                        /**
                         * Verifies a CustomInterestErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomInterestErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomInterestErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.CustomInterestErrorEnum;

                        /**
                         * Creates a plain object from a CustomInterestErrorEnum message. Also converts values to other types if specified.
                         * @param m CustomInterestErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.CustomInterestErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomInterestErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.ICustomerClientLinkErrorEnum): google.ads.googleads.v8.errors.CustomerClientLinkErrorEnum;

                        /**
                         * Encodes the specified CustomerClientLinkErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.CustomerClientLinkErrorEnum.verify|verify} messages.
                         * @param m CustomerClientLinkErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.ICustomerClientLinkErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerClientLinkErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ICustomerClientLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerClientLinkErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.CustomerClientLinkErrorEnum;

                        /**
                         * Verifies a CustomerClientLinkErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerClientLinkErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerClientLinkErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.CustomerClientLinkErrorEnum;

                        /**
                         * Creates a plain object from a CustomerClientLinkErrorEnum message. Also converts values to other types if specified.
                         * @param m CustomerClientLinkErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.CustomerClientLinkErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerClientLinkErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 CustomerErrorEnum. */
                    interface ICustomerErrorEnum {
                    }

                    /** Represents a CustomerErrorEnum. */
                    class CustomerErrorEnum implements ICustomerErrorEnum {

                        /**
                         * Constructs a new CustomerErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.ICustomerErrorEnum): google.ads.googleads.v8.errors.CustomerErrorEnum;

                        /**
                         * Encodes the specified CustomerErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.CustomerErrorEnum.verify|verify} messages.
                         * @param m CustomerErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.ICustomerErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ICustomerErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.CustomerErrorEnum;

                        /**
                         * Verifies a CustomerErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.CustomerErrorEnum;

                        /**
                         * Creates a plain object from a CustomerErrorEnum message. Also converts values to other types if specified.
                         * @param m CustomerErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.CustomerErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace CustomerErrorEnum {

                        /** CustomerError enum. */
                        enum CustomerError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            STATUS_CHANGE_DISALLOWED = 2,
                            ACCOUNT_NOT_SET_UP = 3
                        }
                    }

                    /** Properties of a CustomerFeedErrorEnum. */
                    interface ICustomerFeedErrorEnum {
                    }

                    /** Represents a CustomerFeedErrorEnum. */
                    class CustomerFeedErrorEnum implements ICustomerFeedErrorEnum {

                        /**
                         * Constructs a new CustomerFeedErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.ICustomerFeedErrorEnum): google.ads.googleads.v8.errors.CustomerFeedErrorEnum;

                        /**
                         * Encodes the specified CustomerFeedErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.CustomerFeedErrorEnum.verify|verify} messages.
                         * @param m CustomerFeedErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.ICustomerFeedErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerFeedErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ICustomerFeedErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerFeedErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.CustomerFeedErrorEnum;

                        /**
                         * Verifies a CustomerFeedErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerFeedErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerFeedErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.CustomerFeedErrorEnum;

                        /**
                         * Creates a plain object from a CustomerFeedErrorEnum message. Also converts values to other types if specified.
                         * @param m CustomerFeedErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.CustomerFeedErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerFeedErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 CustomerManagerLinkErrorEnum. */
                    interface ICustomerManagerLinkErrorEnum {
                    }

                    /** Represents a CustomerManagerLinkErrorEnum. */
                    class CustomerManagerLinkErrorEnum implements ICustomerManagerLinkErrorEnum {

                        /**
                         * Constructs a new CustomerManagerLinkErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.ICustomerManagerLinkErrorEnum): google.ads.googleads.v8.errors.CustomerManagerLinkErrorEnum;

                        /**
                         * Encodes the specified CustomerManagerLinkErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.CustomerManagerLinkErrorEnum.verify|verify} messages.
                         * @param m CustomerManagerLinkErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.ICustomerManagerLinkErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerManagerLinkErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ICustomerManagerLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerManagerLinkErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.CustomerManagerLinkErrorEnum;

                        /**
                         * Verifies a CustomerManagerLinkErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerManagerLinkErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerManagerLinkErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.CustomerManagerLinkErrorEnum;

                        /**
                         * Creates a plain object from a CustomerManagerLinkErrorEnum message. Also converts values to other types if specified.
                         * @param m CustomerManagerLinkErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.CustomerManagerLinkErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerManagerLinkErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 CustomerUserAccessErrorEnum. */
                    interface ICustomerUserAccessErrorEnum {
                    }

                    /** Represents a CustomerUserAccessErrorEnum. */
                    class CustomerUserAccessErrorEnum implements ICustomerUserAccessErrorEnum {

                        /**
                         * Constructs a new CustomerUserAccessErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.ICustomerUserAccessErrorEnum): google.ads.googleads.v8.errors.CustomerUserAccessErrorEnum;

                        /**
                         * Encodes the specified CustomerUserAccessErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.CustomerUserAccessErrorEnum.verify|verify} messages.
                         * @param m CustomerUserAccessErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.ICustomerUserAccessErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerUserAccessErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ICustomerUserAccessErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerUserAccessErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.CustomerUserAccessErrorEnum;

                        /**
                         * Verifies a CustomerUserAccessErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerUserAccessErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerUserAccessErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.CustomerUserAccessErrorEnum;

                        /**
                         * Creates a plain object from a CustomerUserAccessErrorEnum message. Also converts values to other types if specified.
                         * @param m CustomerUserAccessErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.CustomerUserAccessErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerUserAccessErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 DatabaseErrorEnum. */
                    interface IDatabaseErrorEnum {
                    }

                    /** Represents a DatabaseErrorEnum. */
                    class DatabaseErrorEnum implements IDatabaseErrorEnum {

                        /**
                         * Constructs a new DatabaseErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IDatabaseErrorEnum): google.ads.googleads.v8.errors.DatabaseErrorEnum;

                        /**
                         * Encodes the specified DatabaseErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.DatabaseErrorEnum.verify|verify} messages.
                         * @param m DatabaseErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IDatabaseErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DatabaseErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IDatabaseErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DatabaseErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.DatabaseErrorEnum;

                        /**
                         * Verifies a DatabaseErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DatabaseErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns DatabaseErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.DatabaseErrorEnum;

                        /**
                         * Creates a plain object from a DatabaseErrorEnum message. Also converts values to other types if specified.
                         * @param m DatabaseErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.DatabaseErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DatabaseErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IDateErrorEnum): google.ads.googleads.v8.errors.DateErrorEnum;

                        /**
                         * Encodes the specified DateErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.DateErrorEnum.verify|verify} messages.
                         * @param m DateErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IDateErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DateErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IDateErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DateErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.DateErrorEnum;

                        /**
                         * Verifies a DateErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DateErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns DateErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.DateErrorEnum;

                        /**
                         * Creates a plain object from a DateErrorEnum message. Also converts values to other types if specified.
                         * @param m DateErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.DateErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DateErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a DateRangeErrorEnum. */
                    interface IDateRangeErrorEnum {
                    }

                    /** Represents a DateRangeErrorEnum. */
                    class DateRangeErrorEnum implements IDateRangeErrorEnum {

                        /**
                         * Constructs a new DateRangeErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IDateRangeErrorEnum): google.ads.googleads.v8.errors.DateRangeErrorEnum;

                        /**
                         * Encodes the specified DateRangeErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.DateRangeErrorEnum.verify|verify} messages.
                         * @param m DateRangeErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IDateRangeErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DateRangeErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IDateRangeErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DateRangeErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.DateRangeErrorEnum;

                        /**
                         * Verifies a DateRangeErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DateRangeErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns DateRangeErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.DateRangeErrorEnum;

                        /**
                         * Creates a plain object from a DateRangeErrorEnum message. Also converts values to other types if specified.
                         * @param m DateRangeErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.DateRangeErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DateRangeErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IDistinctErrorEnum): google.ads.googleads.v8.errors.DistinctErrorEnum;

                        /**
                         * Encodes the specified DistinctErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.DistinctErrorEnum.verify|verify} messages.
                         * @param m DistinctErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IDistinctErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DistinctErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IDistinctErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DistinctErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.DistinctErrorEnum;

                        /**
                         * Verifies a DistinctErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DistinctErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns DistinctErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.DistinctErrorEnum;

                        /**
                         * Creates a plain object from a DistinctErrorEnum message. Also converts values to other types if specified.
                         * @param m DistinctErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.DistinctErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DistinctErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IEnumErrorEnum): google.ads.googleads.v8.errors.EnumErrorEnum;

                        /**
                         * Encodes the specified EnumErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.EnumErrorEnum.verify|verify} messages.
                         * @param m EnumErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IEnumErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified EnumErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IEnumErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an EnumErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.EnumErrorEnum;

                        /**
                         * Verifies an EnumErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an EnumErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns EnumErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.EnumErrorEnum;

                        /**
                         * Creates a plain object from an EnumErrorEnum message. Also converts values to other types if specified.
                         * @param m EnumErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.EnumErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this EnumErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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.v8.errors.IGoogleAdsError[]|null);

                        /** GoogleAdsFailure request_id */
                        request_id?: (string|null);
                    }

                    /** Represents a GoogleAdsFailure. */
                    class GoogleAdsFailure implements IGoogleAdsFailure {

                        /**
                         * Constructs a new GoogleAdsFailure.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.errors.IGoogleAdsFailure);

                        /** GoogleAdsFailure errors. */
                        public errors: google.ads.googleads.v8.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.v8.errors.IGoogleAdsFailure): google.ads.googleads.v8.errors.GoogleAdsFailure;

                        /**
                         * Encodes the specified GoogleAdsFailure message. Does not implicitly {@link google.ads.googleads.v8.errors.GoogleAdsFailure.verify|verify} messages.
                         * @param m GoogleAdsFailure message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IGoogleAdsFailure, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GoogleAdsFailure message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IGoogleAdsFailure, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GoogleAdsFailure message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.GoogleAdsFailure;

                        /**
                         * Verifies a GoogleAdsFailure message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GoogleAdsFailure message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GoogleAdsFailure
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.GoogleAdsFailure;

                        /**
                         * Creates a plain object from a GoogleAdsFailure message. Also converts values to other types if specified.
                         * @param m GoogleAdsFailure
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.GoogleAdsFailure, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GoogleAdsFailure to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a GoogleAdsError. */
                    interface IGoogleAdsError {

                        /** GoogleAdsError error_code */
                        error_code?: (google.ads.googleads.v8.errors.IErrorCode|null);

                        /** GoogleAdsError message */
                        message?: (string|null);

                        /** GoogleAdsError trigger */
                        trigger?: (google.ads.googleads.v8.common.IValue|null);

                        /** GoogleAdsError location */
                        location?: (google.ads.googleads.v8.errors.IErrorLocation|null);

                        /** GoogleAdsError details */
                        details?: (google.ads.googleads.v8.errors.IErrorDetails|null);
                    }

                    /** Represents a GoogleAdsError. */
                    class GoogleAdsError implements IGoogleAdsError {

                        /**
                         * Constructs a new GoogleAdsError.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.errors.IGoogleAdsError);

                        /** GoogleAdsError error_code. */
                        public error_code?: (google.ads.googleads.v8.errors.IErrorCode|null);

                        /** GoogleAdsError message. */
                        public message: string;

                        /** GoogleAdsError trigger. */
                        public trigger?: (google.ads.googleads.v8.common.IValue|null);

                        /** GoogleAdsError location. */
                        public location?: (google.ads.googleads.v8.errors.IErrorLocation|null);

                        /** GoogleAdsError details. */
                        public details?: (google.ads.googleads.v8.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.v8.errors.IGoogleAdsError): google.ads.googleads.v8.errors.GoogleAdsError;

                        /**
                         * Encodes the specified GoogleAdsError message. Does not implicitly {@link google.ads.googleads.v8.errors.GoogleAdsError.verify|verify} messages.
                         * @param m GoogleAdsError message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IGoogleAdsError, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GoogleAdsError message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IGoogleAdsError, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GoogleAdsError message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.GoogleAdsError;

                        /**
                         * Verifies a GoogleAdsError message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GoogleAdsError message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GoogleAdsError
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.GoogleAdsError;

                        /**
                         * Creates a plain object from a GoogleAdsError message. Also converts values to other types if specified.
                         * @param m GoogleAdsError
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.GoogleAdsError, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GoogleAdsError to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an ErrorCode. */
                    interface IErrorCode {

                        /** ErrorCode request_error */
                        request_error?: (google.ads.googleads.v8.errors.RequestErrorEnum.RequestError|keyof typeof google.ads.googleads.v8.errors.RequestErrorEnum.RequestError|null);

                        /** ErrorCode bidding_strategy_error */
                        bidding_strategy_error?: (google.ads.googleads.v8.errors.BiddingStrategyErrorEnum.BiddingStrategyError|keyof typeof google.ads.googleads.v8.errors.BiddingStrategyErrorEnum.BiddingStrategyError|null);

                        /** ErrorCode url_field_error */
                        url_field_error?: (google.ads.googleads.v8.errors.UrlFieldErrorEnum.UrlFieldError|keyof typeof google.ads.googleads.v8.errors.UrlFieldErrorEnum.UrlFieldError|null);

                        /** ErrorCode list_operation_error */
                        list_operation_error?: (google.ads.googleads.v8.errors.ListOperationErrorEnum.ListOperationError|keyof typeof google.ads.googleads.v8.errors.ListOperationErrorEnum.ListOperationError|null);

                        /** ErrorCode query_error */
                        query_error?: (google.ads.googleads.v8.errors.QueryErrorEnum.QueryError|keyof typeof google.ads.googleads.v8.errors.QueryErrorEnum.QueryError|null);

                        /** ErrorCode mutate_error */
                        mutate_error?: (google.ads.googleads.v8.errors.MutateErrorEnum.MutateError|keyof typeof google.ads.googleads.v8.errors.MutateErrorEnum.MutateError|null);

                        /** ErrorCode field_mask_error */
                        field_mask_error?: (google.ads.googleads.v8.errors.FieldMaskErrorEnum.FieldMaskError|keyof typeof google.ads.googleads.v8.errors.FieldMaskErrorEnum.FieldMaskError|null);

                        /** ErrorCode authorization_error */
                        authorization_error?: (google.ads.googleads.v8.errors.AuthorizationErrorEnum.AuthorizationError|keyof typeof google.ads.googleads.v8.errors.AuthorizationErrorEnum.AuthorizationError|null);

                        /** ErrorCode internal_error */
                        internal_error?: (google.ads.googleads.v8.errors.InternalErrorEnum.InternalError|keyof typeof google.ads.googleads.v8.errors.InternalErrorEnum.InternalError|null);

                        /** ErrorCode quota_error */
                        quota_error?: (google.ads.googleads.v8.errors.QuotaErrorEnum.QuotaError|keyof typeof google.ads.googleads.v8.errors.QuotaErrorEnum.QuotaError|null);

                        /** ErrorCode ad_error */
                        ad_error?: (google.ads.googleads.v8.errors.AdErrorEnum.AdError|keyof typeof google.ads.googleads.v8.errors.AdErrorEnum.AdError|null);

                        /** ErrorCode ad_group_error */
                        ad_group_error?: (google.ads.googleads.v8.errors.AdGroupErrorEnum.AdGroupError|keyof typeof google.ads.googleads.v8.errors.AdGroupErrorEnum.AdGroupError|null);

                        /** ErrorCode campaign_budget_error */
                        campaign_budget_error?: (google.ads.googleads.v8.errors.CampaignBudgetErrorEnum.CampaignBudgetError|keyof typeof google.ads.googleads.v8.errors.CampaignBudgetErrorEnum.CampaignBudgetError|null);

                        /** ErrorCode campaign_error */
                        campaign_error?: (google.ads.googleads.v8.errors.CampaignErrorEnum.CampaignError|keyof typeof google.ads.googleads.v8.errors.CampaignErrorEnum.CampaignError|null);

                        /** ErrorCode authentication_error */
                        authentication_error?: (google.ads.googleads.v8.errors.AuthenticationErrorEnum.AuthenticationError|keyof typeof google.ads.googleads.v8.errors.AuthenticationErrorEnum.AuthenticationError|null);

                        /** ErrorCode ad_group_criterion_error */
                        ad_group_criterion_error?: (google.ads.googleads.v8.errors.AdGroupCriterionErrorEnum.AdGroupCriterionError|keyof typeof google.ads.googleads.v8.errors.AdGroupCriterionErrorEnum.AdGroupCriterionError|null);

                        /** ErrorCode ad_customizer_error */
                        ad_customizer_error?: (google.ads.googleads.v8.errors.AdCustomizerErrorEnum.AdCustomizerError|keyof typeof google.ads.googleads.v8.errors.AdCustomizerErrorEnum.AdCustomizerError|null);

                        /** ErrorCode ad_group_ad_error */
                        ad_group_ad_error?: (google.ads.googleads.v8.errors.AdGroupAdErrorEnum.AdGroupAdError|keyof typeof google.ads.googleads.v8.errors.AdGroupAdErrorEnum.AdGroupAdError|null);

                        /** ErrorCode ad_sharing_error */
                        ad_sharing_error?: (google.ads.googleads.v8.errors.AdSharingErrorEnum.AdSharingError|keyof typeof google.ads.googleads.v8.errors.AdSharingErrorEnum.AdSharingError|null);

                        /** ErrorCode adx_error */
                        adx_error?: (google.ads.googleads.v8.errors.AdxErrorEnum.AdxError|keyof typeof google.ads.googleads.v8.errors.AdxErrorEnum.AdxError|null);

                        /** ErrorCode asset_error */
                        asset_error?: (google.ads.googleads.v8.errors.AssetErrorEnum.AssetError|keyof typeof google.ads.googleads.v8.errors.AssetErrorEnum.AssetError|null);

                        /** ErrorCode bidding_error */
                        bidding_error?: (google.ads.googleads.v8.errors.BiddingErrorEnum.BiddingError|keyof typeof google.ads.googleads.v8.errors.BiddingErrorEnum.BiddingError|null);

                        /** ErrorCode campaign_criterion_error */
                        campaign_criterion_error?: (google.ads.googleads.v8.errors.CampaignCriterionErrorEnum.CampaignCriterionError|keyof typeof google.ads.googleads.v8.errors.CampaignCriterionErrorEnum.CampaignCriterionError|null);

                        /** ErrorCode collection_size_error */
                        collection_size_error?: (google.ads.googleads.v8.errors.CollectionSizeErrorEnum.CollectionSizeError|keyof typeof google.ads.googleads.v8.errors.CollectionSizeErrorEnum.CollectionSizeError|null);

                        /** ErrorCode country_code_error */
                        country_code_error?: (google.ads.googleads.v8.errors.CountryCodeErrorEnum.CountryCodeError|keyof typeof google.ads.googleads.v8.errors.CountryCodeErrorEnum.CountryCodeError|null);

                        /** ErrorCode criterion_error */
                        criterion_error?: (google.ads.googleads.v8.errors.CriterionErrorEnum.CriterionError|keyof typeof google.ads.googleads.v8.errors.CriterionErrorEnum.CriterionError|null);

                        /** ErrorCode customer_error */
                        customer_error?: (google.ads.googleads.v8.errors.CustomerErrorEnum.CustomerError|keyof typeof google.ads.googleads.v8.errors.CustomerErrorEnum.CustomerError|null);

                        /** ErrorCode date_error */
                        date_error?: (google.ads.googleads.v8.errors.DateErrorEnum.DateError|keyof typeof google.ads.googleads.v8.errors.DateErrorEnum.DateError|null);

                        /** ErrorCode date_range_error */
                        date_range_error?: (google.ads.googleads.v8.errors.DateRangeErrorEnum.DateRangeError|keyof typeof google.ads.googleads.v8.errors.DateRangeErrorEnum.DateRangeError|null);

                        /** ErrorCode distinct_error */
                        distinct_error?: (google.ads.googleads.v8.errors.DistinctErrorEnum.DistinctError|keyof typeof google.ads.googleads.v8.errors.DistinctErrorEnum.DistinctError|null);

                        /** ErrorCode feed_attribute_reference_error */
                        feed_attribute_reference_error?: (google.ads.googleads.v8.errors.FeedAttributeReferenceErrorEnum.FeedAttributeReferenceError|keyof typeof google.ads.googleads.v8.errors.FeedAttributeReferenceErrorEnum.FeedAttributeReferenceError|null);

                        /** ErrorCode function_error */
                        function_error?: (google.ads.googleads.v8.errors.FunctionErrorEnum.FunctionError|keyof typeof google.ads.googleads.v8.errors.FunctionErrorEnum.FunctionError|null);

                        /** ErrorCode function_parsing_error */
                        function_parsing_error?: (google.ads.googleads.v8.errors.FunctionParsingErrorEnum.FunctionParsingError|keyof typeof google.ads.googleads.v8.errors.FunctionParsingErrorEnum.FunctionParsingError|null);

                        /** ErrorCode id_error */
                        id_error?: (google.ads.googleads.v8.errors.IdErrorEnum.IdError|keyof typeof google.ads.googleads.v8.errors.IdErrorEnum.IdError|null);

                        /** ErrorCode image_error */
                        image_error?: (google.ads.googleads.v8.errors.ImageErrorEnum.ImageError|keyof typeof google.ads.googleads.v8.errors.ImageErrorEnum.ImageError|null);

                        /** ErrorCode language_code_error */
                        language_code_error?: (google.ads.googleads.v8.errors.LanguageCodeErrorEnum.LanguageCodeError|keyof typeof google.ads.googleads.v8.errors.LanguageCodeErrorEnum.LanguageCodeError|null);

                        /** ErrorCode media_bundle_error */
                        media_bundle_error?: (google.ads.googleads.v8.errors.MediaBundleErrorEnum.MediaBundleError|keyof typeof google.ads.googleads.v8.errors.MediaBundleErrorEnum.MediaBundleError|null);

                        /** ErrorCode media_upload_error */
                        media_upload_error?: (google.ads.googleads.v8.errors.MediaUploadErrorEnum.MediaUploadError|keyof typeof google.ads.googleads.v8.errors.MediaUploadErrorEnum.MediaUploadError|null);

                        /** ErrorCode media_file_error */
                        media_file_error?: (google.ads.googleads.v8.errors.MediaFileErrorEnum.MediaFileError|keyof typeof google.ads.googleads.v8.errors.MediaFileErrorEnum.MediaFileError|null);

                        /** ErrorCode multiplier_error */
                        multiplier_error?: (google.ads.googleads.v8.errors.MultiplierErrorEnum.MultiplierError|keyof typeof google.ads.googleads.v8.errors.MultiplierErrorEnum.MultiplierError|null);

                        /** ErrorCode new_resource_creation_error */
                        new_resource_creation_error?: (google.ads.googleads.v8.errors.NewResourceCreationErrorEnum.NewResourceCreationError|keyof typeof google.ads.googleads.v8.errors.NewResourceCreationErrorEnum.NewResourceCreationError|null);

                        /** ErrorCode not_empty_error */
                        not_empty_error?: (google.ads.googleads.v8.errors.NotEmptyErrorEnum.NotEmptyError|keyof typeof google.ads.googleads.v8.errors.NotEmptyErrorEnum.NotEmptyError|null);

                        /** ErrorCode null_error */
                        null_error?: (google.ads.googleads.v8.errors.NullErrorEnum.NullError|keyof typeof google.ads.googleads.v8.errors.NullErrorEnum.NullError|null);

                        /** ErrorCode operator_error */
                        operator_error?: (google.ads.googleads.v8.errors.OperatorErrorEnum.OperatorError|keyof typeof google.ads.googleads.v8.errors.OperatorErrorEnum.OperatorError|null);

                        /** ErrorCode range_error */
                        range_error?: (google.ads.googleads.v8.errors.RangeErrorEnum.RangeError|keyof typeof google.ads.googleads.v8.errors.RangeErrorEnum.RangeError|null);

                        /** ErrorCode recommendation_error */
                        recommendation_error?: (google.ads.googleads.v8.errors.RecommendationErrorEnum.RecommendationError|keyof typeof google.ads.googleads.v8.errors.RecommendationErrorEnum.RecommendationError|null);

                        /** ErrorCode region_code_error */
                        region_code_error?: (google.ads.googleads.v8.errors.RegionCodeErrorEnum.RegionCodeError|keyof typeof google.ads.googleads.v8.errors.RegionCodeErrorEnum.RegionCodeError|null);

                        /** ErrorCode setting_error */
                        setting_error?: (google.ads.googleads.v8.errors.SettingErrorEnum.SettingError|keyof typeof google.ads.googleads.v8.errors.SettingErrorEnum.SettingError|null);

                        /** ErrorCode string_format_error */
                        string_format_error?: (google.ads.googleads.v8.errors.StringFormatErrorEnum.StringFormatError|keyof typeof google.ads.googleads.v8.errors.StringFormatErrorEnum.StringFormatError|null);

                        /** ErrorCode string_length_error */
                        string_length_error?: (google.ads.googleads.v8.errors.StringLengthErrorEnum.StringLengthError|keyof typeof google.ads.googleads.v8.errors.StringLengthErrorEnum.StringLengthError|null);

                        /** ErrorCode operation_access_denied_error */
                        operation_access_denied_error?: (google.ads.googleads.v8.errors.OperationAccessDeniedErrorEnum.OperationAccessDeniedError|keyof typeof google.ads.googleads.v8.errors.OperationAccessDeniedErrorEnum.OperationAccessDeniedError|null);

                        /** ErrorCode resource_access_denied_error */
                        resource_access_denied_error?: (google.ads.googleads.v8.errors.ResourceAccessDeniedErrorEnum.ResourceAccessDeniedError|keyof typeof google.ads.googleads.v8.errors.ResourceAccessDeniedErrorEnum.ResourceAccessDeniedError|null);

                        /** ErrorCode resource_count_limit_exceeded_error */
                        resource_count_limit_exceeded_error?: (google.ads.googleads.v8.errors.ResourceCountLimitExceededErrorEnum.ResourceCountLimitExceededError|keyof typeof google.ads.googleads.v8.errors.ResourceCountLimitExceededErrorEnum.ResourceCountLimitExceededError|null);

                        /** ErrorCode youtube_video_registration_error */
                        youtube_video_registration_error?: (google.ads.googleads.v8.errors.YoutubeVideoRegistrationErrorEnum.YoutubeVideoRegistrationError|keyof typeof google.ads.googleads.v8.errors.YoutubeVideoRegistrationErrorEnum.YoutubeVideoRegistrationError|null);

                        /** ErrorCode ad_group_bid_modifier_error */
                        ad_group_bid_modifier_error?: (google.ads.googleads.v8.errors.AdGroupBidModifierErrorEnum.AdGroupBidModifierError|keyof typeof google.ads.googleads.v8.errors.AdGroupBidModifierErrorEnum.AdGroupBidModifierError|null);

                        /** ErrorCode context_error */
                        context_error?: (google.ads.googleads.v8.errors.ContextErrorEnum.ContextError|keyof typeof google.ads.googleads.v8.errors.ContextErrorEnum.ContextError|null);

                        /** ErrorCode field_error */
                        field_error?: (google.ads.googleads.v8.errors.FieldErrorEnum.FieldError|keyof typeof google.ads.googleads.v8.errors.FieldErrorEnum.FieldError|null);

                        /** ErrorCode shared_set_error */
                        shared_set_error?: (google.ads.googleads.v8.errors.SharedSetErrorEnum.SharedSetError|keyof typeof google.ads.googleads.v8.errors.SharedSetErrorEnum.SharedSetError|null);

                        /** ErrorCode shared_criterion_error */
                        shared_criterion_error?: (google.ads.googleads.v8.errors.SharedCriterionErrorEnum.SharedCriterionError|keyof typeof google.ads.googleads.v8.errors.SharedCriterionErrorEnum.SharedCriterionError|null);

                        /** ErrorCode campaign_shared_set_error */
                        campaign_shared_set_error?: (google.ads.googleads.v8.errors.CampaignSharedSetErrorEnum.CampaignSharedSetError|keyof typeof google.ads.googleads.v8.errors.CampaignSharedSetErrorEnum.CampaignSharedSetError|null);

                        /** ErrorCode conversion_action_error */
                        conversion_action_error?: (google.ads.googleads.v8.errors.ConversionActionErrorEnum.ConversionActionError|keyof typeof google.ads.googleads.v8.errors.ConversionActionErrorEnum.ConversionActionError|null);

                        /** ErrorCode conversion_adjustment_upload_error */
                        conversion_adjustment_upload_error?: (google.ads.googleads.v8.errors.ConversionAdjustmentUploadErrorEnum.ConversionAdjustmentUploadError|keyof typeof google.ads.googleads.v8.errors.ConversionAdjustmentUploadErrorEnum.ConversionAdjustmentUploadError|null);

                        /** ErrorCode conversion_custom_variable_error */
                        conversion_custom_variable_error?: (google.ads.googleads.v8.errors.ConversionCustomVariableErrorEnum.ConversionCustomVariableError|keyof typeof google.ads.googleads.v8.errors.ConversionCustomVariableErrorEnum.ConversionCustomVariableError|null);

                        /** ErrorCode conversion_upload_error */
                        conversion_upload_error?: (google.ads.googleads.v8.errors.ConversionUploadErrorEnum.ConversionUploadError|keyof typeof google.ads.googleads.v8.errors.ConversionUploadErrorEnum.ConversionUploadError|null);

                        /** ErrorCode conversion_value_rule_error */
                        conversion_value_rule_error?: (google.ads.googleads.v8.errors.ConversionValueRuleErrorEnum.ConversionValueRuleError|keyof typeof google.ads.googleads.v8.errors.ConversionValueRuleErrorEnum.ConversionValueRuleError|null);

                        /** ErrorCode conversion_value_rule_set_error */
                        conversion_value_rule_set_error?: (google.ads.googleads.v8.errors.ConversionValueRuleSetErrorEnum.ConversionValueRuleSetError|keyof typeof google.ads.googleads.v8.errors.ConversionValueRuleSetErrorEnum.ConversionValueRuleSetError|null);

                        /** ErrorCode header_error */
                        header_error?: (google.ads.googleads.v8.errors.HeaderErrorEnum.HeaderError|keyof typeof google.ads.googleads.v8.errors.HeaderErrorEnum.HeaderError|null);

                        /** ErrorCode database_error */
                        database_error?: (google.ads.googleads.v8.errors.DatabaseErrorEnum.DatabaseError|keyof typeof google.ads.googleads.v8.errors.DatabaseErrorEnum.DatabaseError|null);

                        /** ErrorCode policy_finding_error */
                        policy_finding_error?: (google.ads.googleads.v8.errors.PolicyFindingErrorEnum.PolicyFindingError|keyof typeof google.ads.googleads.v8.errors.PolicyFindingErrorEnum.PolicyFindingError|null);

                        /** ErrorCode enum_error */
                        enum_error?: (google.ads.googleads.v8.errors.EnumErrorEnum.EnumError|keyof typeof google.ads.googleads.v8.errors.EnumErrorEnum.EnumError|null);

                        /** ErrorCode keyword_plan_error */
                        keyword_plan_error?: (google.ads.googleads.v8.errors.KeywordPlanErrorEnum.KeywordPlanError|keyof typeof google.ads.googleads.v8.errors.KeywordPlanErrorEnum.KeywordPlanError|null);

                        /** ErrorCode keyword_plan_campaign_error */
                        keyword_plan_campaign_error?: (google.ads.googleads.v8.errors.KeywordPlanCampaignErrorEnum.KeywordPlanCampaignError|keyof typeof google.ads.googleads.v8.errors.KeywordPlanCampaignErrorEnum.KeywordPlanCampaignError|null);

                        /** ErrorCode keyword_plan_campaign_keyword_error */
                        keyword_plan_campaign_keyword_error?: (google.ads.googleads.v8.errors.KeywordPlanCampaignKeywordErrorEnum.KeywordPlanCampaignKeywordError|keyof typeof google.ads.googleads.v8.errors.KeywordPlanCampaignKeywordErrorEnum.KeywordPlanCampaignKeywordError|null);

                        /** ErrorCode keyword_plan_ad_group_error */
                        keyword_plan_ad_group_error?: (google.ads.googleads.v8.errors.KeywordPlanAdGroupErrorEnum.KeywordPlanAdGroupError|keyof typeof google.ads.googleads.v8.errors.KeywordPlanAdGroupErrorEnum.KeywordPlanAdGroupError|null);

                        /** ErrorCode keyword_plan_ad_group_keyword_error */
                        keyword_plan_ad_group_keyword_error?: (google.ads.googleads.v8.errors.KeywordPlanAdGroupKeywordErrorEnum.KeywordPlanAdGroupKeywordError|keyof typeof google.ads.googleads.v8.errors.KeywordPlanAdGroupKeywordErrorEnum.KeywordPlanAdGroupKeywordError|null);

                        /** ErrorCode keyword_plan_idea_error */
                        keyword_plan_idea_error?: (google.ads.googleads.v8.errors.KeywordPlanIdeaErrorEnum.KeywordPlanIdeaError|keyof typeof google.ads.googleads.v8.errors.KeywordPlanIdeaErrorEnum.KeywordPlanIdeaError|null);

                        /** ErrorCode account_budget_proposal_error */
                        account_budget_proposal_error?: (google.ads.googleads.v8.errors.AccountBudgetProposalErrorEnum.AccountBudgetProposalError|keyof typeof google.ads.googleads.v8.errors.AccountBudgetProposalErrorEnum.AccountBudgetProposalError|null);

                        /** ErrorCode user_list_error */
                        user_list_error?: (google.ads.googleads.v8.errors.UserListErrorEnum.UserListError|keyof typeof google.ads.googleads.v8.errors.UserListErrorEnum.UserListError|null);

                        /** ErrorCode change_event_error */
                        change_event_error?: (google.ads.googleads.v8.errors.ChangeEventErrorEnum.ChangeEventError|keyof typeof google.ads.googleads.v8.errors.ChangeEventErrorEnum.ChangeEventError|null);

                        /** ErrorCode change_status_error */
                        change_status_error?: (google.ads.googleads.v8.errors.ChangeStatusErrorEnum.ChangeStatusError|keyof typeof google.ads.googleads.v8.errors.ChangeStatusErrorEnum.ChangeStatusError|null);

                        /** ErrorCode feed_error */
                        feed_error?: (google.ads.googleads.v8.errors.FeedErrorEnum.FeedError|keyof typeof google.ads.googleads.v8.errors.FeedErrorEnum.FeedError|null);

                        /** ErrorCode geo_target_constant_suggestion_error */
                        geo_target_constant_suggestion_error?: (google.ads.googleads.v8.errors.GeoTargetConstantSuggestionErrorEnum.GeoTargetConstantSuggestionError|keyof typeof google.ads.googleads.v8.errors.GeoTargetConstantSuggestionErrorEnum.GeoTargetConstantSuggestionError|null);

                        /** ErrorCode campaign_draft_error */
                        campaign_draft_error?: (google.ads.googleads.v8.errors.CampaignDraftErrorEnum.CampaignDraftError|keyof typeof google.ads.googleads.v8.errors.CampaignDraftErrorEnum.CampaignDraftError|null);

                        /** ErrorCode feed_item_error */
                        feed_item_error?: (google.ads.googleads.v8.errors.FeedItemErrorEnum.FeedItemError|keyof typeof google.ads.googleads.v8.errors.FeedItemErrorEnum.FeedItemError|null);

                        /** ErrorCode label_error */
                        label_error?: (google.ads.googleads.v8.errors.LabelErrorEnum.LabelError|keyof typeof google.ads.googleads.v8.errors.LabelErrorEnum.LabelError|null);

                        /** ErrorCode billing_setup_error */
                        billing_setup_error?: (google.ads.googleads.v8.errors.BillingSetupErrorEnum.BillingSetupError|keyof typeof google.ads.googleads.v8.errors.BillingSetupErrorEnum.BillingSetupError|null);

                        /** ErrorCode customer_client_link_error */
                        customer_client_link_error?: (google.ads.googleads.v8.errors.CustomerClientLinkErrorEnum.CustomerClientLinkError|keyof typeof google.ads.googleads.v8.errors.CustomerClientLinkErrorEnum.CustomerClientLinkError|null);

                        /** ErrorCode customer_manager_link_error */
                        customer_manager_link_error?: (google.ads.googleads.v8.errors.CustomerManagerLinkErrorEnum.CustomerManagerLinkError|keyof typeof google.ads.googleads.v8.errors.CustomerManagerLinkErrorEnum.CustomerManagerLinkError|null);

                        /** ErrorCode feed_mapping_error */
                        feed_mapping_error?: (google.ads.googleads.v8.errors.FeedMappingErrorEnum.FeedMappingError|keyof typeof google.ads.googleads.v8.errors.FeedMappingErrorEnum.FeedMappingError|null);

                        /** ErrorCode customer_feed_error */
                        customer_feed_error?: (google.ads.googleads.v8.errors.CustomerFeedErrorEnum.CustomerFeedError|keyof typeof google.ads.googleads.v8.errors.CustomerFeedErrorEnum.CustomerFeedError|null);

                        /** ErrorCode ad_group_feed_error */
                        ad_group_feed_error?: (google.ads.googleads.v8.errors.AdGroupFeedErrorEnum.AdGroupFeedError|keyof typeof google.ads.googleads.v8.errors.AdGroupFeedErrorEnum.AdGroupFeedError|null);

                        /** ErrorCode campaign_feed_error */
                        campaign_feed_error?: (google.ads.googleads.v8.errors.CampaignFeedErrorEnum.CampaignFeedError|keyof typeof google.ads.googleads.v8.errors.CampaignFeedErrorEnum.CampaignFeedError|null);

                        /** ErrorCode custom_interest_error */
                        custom_interest_error?: (google.ads.googleads.v8.errors.CustomInterestErrorEnum.CustomInterestError|keyof typeof google.ads.googleads.v8.errors.CustomInterestErrorEnum.CustomInterestError|null);

                        /** ErrorCode campaign_experiment_error */
                        campaign_experiment_error?: (google.ads.googleads.v8.errors.CampaignExperimentErrorEnum.CampaignExperimentError|keyof typeof google.ads.googleads.v8.errors.CampaignExperimentErrorEnum.CampaignExperimentError|null);

                        /** ErrorCode extension_feed_item_error */
                        extension_feed_item_error?: (google.ads.googleads.v8.errors.ExtensionFeedItemErrorEnum.ExtensionFeedItemError|keyof typeof google.ads.googleads.v8.errors.ExtensionFeedItemErrorEnum.ExtensionFeedItemError|null);

                        /** ErrorCode ad_parameter_error */
                        ad_parameter_error?: (google.ads.googleads.v8.errors.AdParameterErrorEnum.AdParameterError|keyof typeof google.ads.googleads.v8.errors.AdParameterErrorEnum.AdParameterError|null);

                        /** ErrorCode feed_item_validation_error */
                        feed_item_validation_error?: (google.ads.googleads.v8.errors.FeedItemValidationErrorEnum.FeedItemValidationError|keyof typeof google.ads.googleads.v8.errors.FeedItemValidationErrorEnum.FeedItemValidationError|null);

                        /** ErrorCode extension_setting_error */
                        extension_setting_error?: (google.ads.googleads.v8.errors.ExtensionSettingErrorEnum.ExtensionSettingError|keyof typeof google.ads.googleads.v8.errors.ExtensionSettingErrorEnum.ExtensionSettingError|null);

                        /** ErrorCode feed_item_set_error */
                        feed_item_set_error?: (google.ads.googleads.v8.errors.FeedItemSetErrorEnum.FeedItemSetError|keyof typeof google.ads.googleads.v8.errors.FeedItemSetErrorEnum.FeedItemSetError|null);

                        /** ErrorCode feed_item_set_link_error */
                        feed_item_set_link_error?: (google.ads.googleads.v8.errors.FeedItemSetLinkErrorEnum.FeedItemSetLinkError|keyof typeof google.ads.googleads.v8.errors.FeedItemSetLinkErrorEnum.FeedItemSetLinkError|null);

                        /** ErrorCode feed_item_target_error */
                        feed_item_target_error?: (google.ads.googleads.v8.errors.FeedItemTargetErrorEnum.FeedItemTargetError|keyof typeof google.ads.googleads.v8.errors.FeedItemTargetErrorEnum.FeedItemTargetError|null);

                        /** ErrorCode policy_violation_error */
                        policy_violation_error?: (google.ads.googleads.v8.errors.PolicyViolationErrorEnum.PolicyViolationError|keyof typeof google.ads.googleads.v8.errors.PolicyViolationErrorEnum.PolicyViolationError|null);

                        /** ErrorCode partial_failure_error */
                        partial_failure_error?: (google.ads.googleads.v8.errors.PartialFailureErrorEnum.PartialFailureError|keyof typeof google.ads.googleads.v8.errors.PartialFailureErrorEnum.PartialFailureError|null);

                        /** ErrorCode policy_validation_parameter_error */
                        policy_validation_parameter_error?: (google.ads.googleads.v8.errors.PolicyValidationParameterErrorEnum.PolicyValidationParameterError|keyof typeof google.ads.googleads.v8.errors.PolicyValidationParameterErrorEnum.PolicyValidationParameterError|null);

                        /** ErrorCode size_limit_error */
                        size_limit_error?: (google.ads.googleads.v8.errors.SizeLimitErrorEnum.SizeLimitError|keyof typeof google.ads.googleads.v8.errors.SizeLimitErrorEnum.SizeLimitError|null);

                        /** ErrorCode offline_user_data_job_error */
                        offline_user_data_job_error?: (google.ads.googleads.v8.errors.OfflineUserDataJobErrorEnum.OfflineUserDataJobError|keyof typeof google.ads.googleads.v8.errors.OfflineUserDataJobErrorEnum.OfflineUserDataJobError|null);

                        /** ErrorCode not_allowlisted_error */
                        not_allowlisted_error?: (google.ads.googleads.v8.errors.NotAllowlistedErrorEnum.NotAllowlistedError|keyof typeof google.ads.googleads.v8.errors.NotAllowlistedErrorEnum.NotAllowlistedError|null);

                        /** ErrorCode manager_link_error */
                        manager_link_error?: (google.ads.googleads.v8.errors.ManagerLinkErrorEnum.ManagerLinkError|keyof typeof google.ads.googleads.v8.errors.ManagerLinkErrorEnum.ManagerLinkError|null);

                        /** ErrorCode currency_code_error */
                        currency_code_error?: (google.ads.googleads.v8.errors.CurrencyCodeErrorEnum.CurrencyCodeError|keyof typeof google.ads.googleads.v8.errors.CurrencyCodeErrorEnum.CurrencyCodeError|null);

                        /** ErrorCode access_invitation_error */
                        access_invitation_error?: (google.ads.googleads.v8.errors.AccessInvitationErrorEnum.AccessInvitationError|keyof typeof google.ads.googleads.v8.errors.AccessInvitationErrorEnum.AccessInvitationError|null);

                        /** ErrorCode reach_plan_error */
                        reach_plan_error?: (google.ads.googleads.v8.errors.ReachPlanErrorEnum.ReachPlanError|keyof typeof google.ads.googleads.v8.errors.ReachPlanErrorEnum.ReachPlanError|null);

                        /** ErrorCode invoice_error */
                        invoice_error?: (google.ads.googleads.v8.errors.InvoiceErrorEnum.InvoiceError|keyof typeof google.ads.googleads.v8.errors.InvoiceErrorEnum.InvoiceError|null);

                        /** ErrorCode payments_account_error */
                        payments_account_error?: (google.ads.googleads.v8.errors.PaymentsAccountErrorEnum.PaymentsAccountError|keyof typeof google.ads.googleads.v8.errors.PaymentsAccountErrorEnum.PaymentsAccountError|null);

                        /** ErrorCode time_zone_error */
                        time_zone_error?: (google.ads.googleads.v8.errors.TimeZoneErrorEnum.TimeZoneError|keyof typeof google.ads.googleads.v8.errors.TimeZoneErrorEnum.TimeZoneError|null);

                        /** ErrorCode asset_link_error */
                        asset_link_error?: (google.ads.googleads.v8.errors.AssetLinkErrorEnum.AssetLinkError|keyof typeof google.ads.googleads.v8.errors.AssetLinkErrorEnum.AssetLinkError|null);

                        /** ErrorCode user_data_error */
                        user_data_error?: (google.ads.googleads.v8.errors.UserDataErrorEnum.UserDataError|keyof typeof google.ads.googleads.v8.errors.UserDataErrorEnum.UserDataError|null);

                        /** ErrorCode batch_job_error */
                        batch_job_error?: (google.ads.googleads.v8.errors.BatchJobErrorEnum.BatchJobError|keyof typeof google.ads.googleads.v8.errors.BatchJobErrorEnum.BatchJobError|null);

                        /** ErrorCode account_link_error */
                        account_link_error?: (google.ads.googleads.v8.errors.AccountLinkErrorEnum.AccountLinkError|keyof typeof google.ads.googleads.v8.errors.AccountLinkErrorEnum.AccountLinkError|null);

                        /** ErrorCode third_party_app_analytics_link_error */
                        third_party_app_analytics_link_error?: (google.ads.googleads.v8.errors.ThirdPartyAppAnalyticsLinkErrorEnum.ThirdPartyAppAnalyticsLinkError|keyof typeof google.ads.googleads.v8.errors.ThirdPartyAppAnalyticsLinkErrorEnum.ThirdPartyAppAnalyticsLinkError|null);

                        /** ErrorCode customer_user_access_error */
                        customer_user_access_error?: (google.ads.googleads.v8.errors.CustomerUserAccessErrorEnum.CustomerUserAccessError|keyof typeof google.ads.googleads.v8.errors.CustomerUserAccessErrorEnum.CustomerUserAccessError|null);

                        /** ErrorCode custom_audience_error */
                        custom_audience_error?: (google.ads.googleads.v8.errors.CustomAudienceErrorEnum.CustomAudienceError|keyof typeof google.ads.googleads.v8.errors.CustomAudienceErrorEnum.CustomAudienceError|null);
                    }

                    /** Represents an ErrorCode. */
                    class ErrorCode implements IErrorCode {

                        /**
                         * Constructs a new ErrorCode.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.errors.IErrorCode);

                        /** ErrorCode request_error. */
                        public request_error?: (google.ads.googleads.v8.errors.RequestErrorEnum.RequestError|keyof typeof google.ads.googleads.v8.errors.RequestErrorEnum.RequestError|null);

                        /** ErrorCode bidding_strategy_error. */
                        public bidding_strategy_error?: (google.ads.googleads.v8.errors.BiddingStrategyErrorEnum.BiddingStrategyError|keyof typeof google.ads.googleads.v8.errors.BiddingStrategyErrorEnum.BiddingStrategyError|null);

                        /** ErrorCode url_field_error. */
                        public url_field_error?: (google.ads.googleads.v8.errors.UrlFieldErrorEnum.UrlFieldError|keyof typeof google.ads.googleads.v8.errors.UrlFieldErrorEnum.UrlFieldError|null);

                        /** ErrorCode list_operation_error. */
                        public list_operation_error?: (google.ads.googleads.v8.errors.ListOperationErrorEnum.ListOperationError|keyof typeof google.ads.googleads.v8.errors.ListOperationErrorEnum.ListOperationError|null);

                        /** ErrorCode query_error. */
                        public query_error?: (google.ads.googleads.v8.errors.QueryErrorEnum.QueryError|keyof typeof google.ads.googleads.v8.errors.QueryErrorEnum.QueryError|null);

                        /** ErrorCode mutate_error. */
                        public mutate_error?: (google.ads.googleads.v8.errors.MutateErrorEnum.MutateError|keyof typeof google.ads.googleads.v8.errors.MutateErrorEnum.MutateError|null);

                        /** ErrorCode field_mask_error. */
                        public field_mask_error?: (google.ads.googleads.v8.errors.FieldMaskErrorEnum.FieldMaskError|keyof typeof google.ads.googleads.v8.errors.FieldMaskErrorEnum.FieldMaskError|null);

                        /** ErrorCode authorization_error. */
                        public authorization_error?: (google.ads.googleads.v8.errors.AuthorizationErrorEnum.AuthorizationError|keyof typeof google.ads.googleads.v8.errors.AuthorizationErrorEnum.AuthorizationError|null);

                        /** ErrorCode internal_error. */
                        public internal_error?: (google.ads.googleads.v8.errors.InternalErrorEnum.InternalError|keyof typeof google.ads.googleads.v8.errors.InternalErrorEnum.InternalError|null);

                        /** ErrorCode quota_error. */
                        public quota_error?: (google.ads.googleads.v8.errors.QuotaErrorEnum.QuotaError|keyof typeof google.ads.googleads.v8.errors.QuotaErrorEnum.QuotaError|null);

                        /** ErrorCode ad_error. */
                        public ad_error?: (google.ads.googleads.v8.errors.AdErrorEnum.AdError|keyof typeof google.ads.googleads.v8.errors.AdErrorEnum.AdError|null);

                        /** ErrorCode ad_group_error. */
                        public ad_group_error?: (google.ads.googleads.v8.errors.AdGroupErrorEnum.AdGroupError|keyof typeof google.ads.googleads.v8.errors.AdGroupErrorEnum.AdGroupError|null);

                        /** ErrorCode campaign_budget_error. */
                        public campaign_budget_error?: (google.ads.googleads.v8.errors.CampaignBudgetErrorEnum.CampaignBudgetError|keyof typeof google.ads.googleads.v8.errors.CampaignBudgetErrorEnum.CampaignBudgetError|null);

                        /** ErrorCode campaign_error. */
                        public campaign_error?: (google.ads.googleads.v8.errors.CampaignErrorEnum.CampaignError|keyof typeof google.ads.googleads.v8.errors.CampaignErrorEnum.CampaignError|null);

                        /** ErrorCode authentication_error. */
                        public authentication_error?: (google.ads.googleads.v8.errors.AuthenticationErrorEnum.AuthenticationError|keyof typeof google.ads.googleads.v8.errors.AuthenticationErrorEnum.AuthenticationError|null);

                        /** ErrorCode ad_group_criterion_error. */
                        public ad_group_criterion_error?: (google.ads.googleads.v8.errors.AdGroupCriterionErrorEnum.AdGroupCriterionError|keyof typeof google.ads.googleads.v8.errors.AdGroupCriterionErrorEnum.AdGroupCriterionError|null);

                        /** ErrorCode ad_customizer_error. */
                        public ad_customizer_error?: (google.ads.googleads.v8.errors.AdCustomizerErrorEnum.AdCustomizerError|keyof typeof google.ads.googleads.v8.errors.AdCustomizerErrorEnum.AdCustomizerError|null);

                        /** ErrorCode ad_group_ad_error. */
                        public ad_group_ad_error?: (google.ads.googleads.v8.errors.AdGroupAdErrorEnum.AdGroupAdError|keyof typeof google.ads.googleads.v8.errors.AdGroupAdErrorEnum.AdGroupAdError|null);

                        /** ErrorCode ad_sharing_error. */
                        public ad_sharing_error?: (google.ads.googleads.v8.errors.AdSharingErrorEnum.AdSharingError|keyof typeof google.ads.googleads.v8.errors.AdSharingErrorEnum.AdSharingError|null);

                        /** ErrorCode adx_error. */
                        public adx_error?: (google.ads.googleads.v8.errors.AdxErrorEnum.AdxError|keyof typeof google.ads.googleads.v8.errors.AdxErrorEnum.AdxError|null);

                        /** ErrorCode asset_error. */
                        public asset_error?: (google.ads.googleads.v8.errors.AssetErrorEnum.AssetError|keyof typeof google.ads.googleads.v8.errors.AssetErrorEnum.AssetError|null);

                        /** ErrorCode bidding_error. */
                        public bidding_error?: (google.ads.googleads.v8.errors.BiddingErrorEnum.BiddingError|keyof typeof google.ads.googleads.v8.errors.BiddingErrorEnum.BiddingError|null);

                        /** ErrorCode campaign_criterion_error. */
                        public campaign_criterion_error?: (google.ads.googleads.v8.errors.CampaignCriterionErrorEnum.CampaignCriterionError|keyof typeof google.ads.googleads.v8.errors.CampaignCriterionErrorEnum.CampaignCriterionError|null);

                        /** ErrorCode collection_size_error. */
                        public collection_size_error?: (google.ads.googleads.v8.errors.CollectionSizeErrorEnum.CollectionSizeError|keyof typeof google.ads.googleads.v8.errors.CollectionSizeErrorEnum.CollectionSizeError|null);

                        /** ErrorCode country_code_error. */
                        public country_code_error?: (google.ads.googleads.v8.errors.CountryCodeErrorEnum.CountryCodeError|keyof typeof google.ads.googleads.v8.errors.CountryCodeErrorEnum.CountryCodeError|null);

                        /** ErrorCode criterion_error. */
                        public criterion_error?: (google.ads.googleads.v8.errors.CriterionErrorEnum.CriterionError|keyof typeof google.ads.googleads.v8.errors.CriterionErrorEnum.CriterionError|null);

                        /** ErrorCode customer_error. */
                        public customer_error?: (google.ads.googleads.v8.errors.CustomerErrorEnum.CustomerError|keyof typeof google.ads.googleads.v8.errors.CustomerErrorEnum.CustomerError|null);

                        /** ErrorCode date_error. */
                        public date_error?: (google.ads.googleads.v8.errors.DateErrorEnum.DateError|keyof typeof google.ads.googleads.v8.errors.DateErrorEnum.DateError|null);

                        /** ErrorCode date_range_error. */
                        public date_range_error?: (google.ads.googleads.v8.errors.DateRangeErrorEnum.DateRangeError|keyof typeof google.ads.googleads.v8.errors.DateRangeErrorEnum.DateRangeError|null);

                        /** ErrorCode distinct_error. */
                        public distinct_error?: (google.ads.googleads.v8.errors.DistinctErrorEnum.DistinctError|keyof typeof google.ads.googleads.v8.errors.DistinctErrorEnum.DistinctError|null);

                        /** ErrorCode feed_attribute_reference_error. */
                        public feed_attribute_reference_error?: (google.ads.googleads.v8.errors.FeedAttributeReferenceErrorEnum.FeedAttributeReferenceError|keyof typeof google.ads.googleads.v8.errors.FeedAttributeReferenceErrorEnum.FeedAttributeReferenceError|null);

                        /** ErrorCode function_error. */
                        public function_error?: (google.ads.googleads.v8.errors.FunctionErrorEnum.FunctionError|keyof typeof google.ads.googleads.v8.errors.FunctionErrorEnum.FunctionError|null);

                        /** ErrorCode function_parsing_error. */
                        public function_parsing_error?: (google.ads.googleads.v8.errors.FunctionParsingErrorEnum.FunctionParsingError|keyof typeof google.ads.googleads.v8.errors.FunctionParsingErrorEnum.FunctionParsingError|null);

                        /** ErrorCode id_error. */
                        public id_error?: (google.ads.googleads.v8.errors.IdErrorEnum.IdError|keyof typeof google.ads.googleads.v8.errors.IdErrorEnum.IdError|null);

                        /** ErrorCode image_error. */
                        public image_error?: (google.ads.googleads.v8.errors.ImageErrorEnum.ImageError|keyof typeof google.ads.googleads.v8.errors.ImageErrorEnum.ImageError|null);

                        /** ErrorCode language_code_error. */
                        public language_code_error?: (google.ads.googleads.v8.errors.LanguageCodeErrorEnum.LanguageCodeError|keyof typeof google.ads.googleads.v8.errors.LanguageCodeErrorEnum.LanguageCodeError|null);

                        /** ErrorCode media_bundle_error. */
                        public media_bundle_error?: (google.ads.googleads.v8.errors.MediaBundleErrorEnum.MediaBundleError|keyof typeof google.ads.googleads.v8.errors.MediaBundleErrorEnum.MediaBundleError|null);

                        /** ErrorCode media_upload_error. */
                        public media_upload_error?: (google.ads.googleads.v8.errors.MediaUploadErrorEnum.MediaUploadError|keyof typeof google.ads.googleads.v8.errors.MediaUploadErrorEnum.MediaUploadError|null);

                        /** ErrorCode media_file_error. */
                        public media_file_error?: (google.ads.googleads.v8.errors.MediaFileErrorEnum.MediaFileError|keyof typeof google.ads.googleads.v8.errors.MediaFileErrorEnum.MediaFileError|null);

                        /** ErrorCode multiplier_error. */
                        public multiplier_error?: (google.ads.googleads.v8.errors.MultiplierErrorEnum.MultiplierError|keyof typeof google.ads.googleads.v8.errors.MultiplierErrorEnum.MultiplierError|null);

                        /** ErrorCode new_resource_creation_error. */
                        public new_resource_creation_error?: (google.ads.googleads.v8.errors.NewResourceCreationErrorEnum.NewResourceCreationError|keyof typeof google.ads.googleads.v8.errors.NewResourceCreationErrorEnum.NewResourceCreationError|null);

                        /** ErrorCode not_empty_error. */
                        public not_empty_error?: (google.ads.googleads.v8.errors.NotEmptyErrorEnum.NotEmptyError|keyof typeof google.ads.googleads.v8.errors.NotEmptyErrorEnum.NotEmptyError|null);

                        /** ErrorCode null_error. */
                        public null_error?: (google.ads.googleads.v8.errors.NullErrorEnum.NullError|keyof typeof google.ads.googleads.v8.errors.NullErrorEnum.NullError|null);

                        /** ErrorCode operator_error. */
                        public operator_error?: (google.ads.googleads.v8.errors.OperatorErrorEnum.OperatorError|keyof typeof google.ads.googleads.v8.errors.OperatorErrorEnum.OperatorError|null);

                        /** ErrorCode range_error. */
                        public range_error?: (google.ads.googleads.v8.errors.RangeErrorEnum.RangeError|keyof typeof google.ads.googleads.v8.errors.RangeErrorEnum.RangeError|null);

                        /** ErrorCode recommendation_error. */
                        public recommendation_error?: (google.ads.googleads.v8.errors.RecommendationErrorEnum.RecommendationError|keyof typeof google.ads.googleads.v8.errors.RecommendationErrorEnum.RecommendationError|null);

                        /** ErrorCode region_code_error. */
                        public region_code_error?: (google.ads.googleads.v8.errors.RegionCodeErrorEnum.RegionCodeError|keyof typeof google.ads.googleads.v8.errors.RegionCodeErrorEnum.RegionCodeError|null);

                        /** ErrorCode setting_error. */
                        public setting_error?: (google.ads.googleads.v8.errors.SettingErrorEnum.SettingError|keyof typeof google.ads.googleads.v8.errors.SettingErrorEnum.SettingError|null);

                        /** ErrorCode string_format_error. */
                        public string_format_error?: (google.ads.googleads.v8.errors.StringFormatErrorEnum.StringFormatError|keyof typeof google.ads.googleads.v8.errors.StringFormatErrorEnum.StringFormatError|null);

                        /** ErrorCode string_length_error. */
                        public string_length_error?: (google.ads.googleads.v8.errors.StringLengthErrorEnum.StringLengthError|keyof typeof google.ads.googleads.v8.errors.StringLengthErrorEnum.StringLengthError|null);

                        /** ErrorCode operation_access_denied_error. */
                        public operation_access_denied_error?: (google.ads.googleads.v8.errors.OperationAccessDeniedErrorEnum.OperationAccessDeniedError|keyof typeof google.ads.googleads.v8.errors.OperationAccessDeniedErrorEnum.OperationAccessDeniedError|null);

                        /** ErrorCode resource_access_denied_error. */
                        public resource_access_denied_error?: (google.ads.googleads.v8.errors.ResourceAccessDeniedErrorEnum.ResourceAccessDeniedError|keyof typeof google.ads.googleads.v8.errors.ResourceAccessDeniedErrorEnum.ResourceAccessDeniedError|null);

                        /** ErrorCode resource_count_limit_exceeded_error. */
                        public resource_count_limit_exceeded_error?: (google.ads.googleads.v8.errors.ResourceCountLimitExceededErrorEnum.ResourceCountLimitExceededError|keyof typeof google.ads.googleads.v8.errors.ResourceCountLimitExceededErrorEnum.ResourceCountLimitExceededError|null);

                        /** ErrorCode youtube_video_registration_error. */
                        public youtube_video_registration_error?: (google.ads.googleads.v8.errors.YoutubeVideoRegistrationErrorEnum.YoutubeVideoRegistrationError|keyof typeof google.ads.googleads.v8.errors.YoutubeVideoRegistrationErrorEnum.YoutubeVideoRegistrationError|null);

                        /** ErrorCode ad_group_bid_modifier_error. */
                        public ad_group_bid_modifier_error?: (google.ads.googleads.v8.errors.AdGroupBidModifierErrorEnum.AdGroupBidModifierError|keyof typeof google.ads.googleads.v8.errors.AdGroupBidModifierErrorEnum.AdGroupBidModifierError|null);

                        /** ErrorCode context_error. */
                        public context_error?: (google.ads.googleads.v8.errors.ContextErrorEnum.ContextError|keyof typeof google.ads.googleads.v8.errors.ContextErrorEnum.ContextError|null);

                        /** ErrorCode field_error. */
                        public field_error?: (google.ads.googleads.v8.errors.FieldErrorEnum.FieldError|keyof typeof google.ads.googleads.v8.errors.FieldErrorEnum.FieldError|null);

                        /** ErrorCode shared_set_error. */
                        public shared_set_error?: (google.ads.googleads.v8.errors.SharedSetErrorEnum.SharedSetError|keyof typeof google.ads.googleads.v8.errors.SharedSetErrorEnum.SharedSetError|null);

                        /** ErrorCode shared_criterion_error. */
                        public shared_criterion_error?: (google.ads.googleads.v8.errors.SharedCriterionErrorEnum.SharedCriterionError|keyof typeof google.ads.googleads.v8.errors.SharedCriterionErrorEnum.SharedCriterionError|null);

                        /** ErrorCode campaign_shared_set_error. */
                        public campaign_shared_set_error?: (google.ads.googleads.v8.errors.CampaignSharedSetErrorEnum.CampaignSharedSetError|keyof typeof google.ads.googleads.v8.errors.CampaignSharedSetErrorEnum.CampaignSharedSetError|null);

                        /** ErrorCode conversion_action_error. */
                        public conversion_action_error?: (google.ads.googleads.v8.errors.ConversionActionErrorEnum.ConversionActionError|keyof typeof google.ads.googleads.v8.errors.ConversionActionErrorEnum.ConversionActionError|null);

                        /** ErrorCode conversion_adjustment_upload_error. */
                        public conversion_adjustment_upload_error?: (google.ads.googleads.v8.errors.ConversionAdjustmentUploadErrorEnum.ConversionAdjustmentUploadError|keyof typeof google.ads.googleads.v8.errors.ConversionAdjustmentUploadErrorEnum.ConversionAdjustmentUploadError|null);

                        /** ErrorCode conversion_custom_variable_error. */
                        public conversion_custom_variable_error?: (google.ads.googleads.v8.errors.ConversionCustomVariableErrorEnum.ConversionCustomVariableError|keyof typeof google.ads.googleads.v8.errors.ConversionCustomVariableErrorEnum.ConversionCustomVariableError|null);

                        /** ErrorCode conversion_upload_error. */
                        public conversion_upload_error?: (google.ads.googleads.v8.errors.ConversionUploadErrorEnum.ConversionUploadError|keyof typeof google.ads.googleads.v8.errors.ConversionUploadErrorEnum.ConversionUploadError|null);

                        /** ErrorCode conversion_value_rule_error. */
                        public conversion_value_rule_error?: (google.ads.googleads.v8.errors.ConversionValueRuleErrorEnum.ConversionValueRuleError|keyof typeof google.ads.googleads.v8.errors.ConversionValueRuleErrorEnum.ConversionValueRuleError|null);

                        /** ErrorCode conversion_value_rule_set_error. */
                        public conversion_value_rule_set_error?: (google.ads.googleads.v8.errors.ConversionValueRuleSetErrorEnum.ConversionValueRuleSetError|keyof typeof google.ads.googleads.v8.errors.ConversionValueRuleSetErrorEnum.ConversionValueRuleSetError|null);

                        /** ErrorCode header_error. */
                        public header_error?: (google.ads.googleads.v8.errors.HeaderErrorEnum.HeaderError|keyof typeof google.ads.googleads.v8.errors.HeaderErrorEnum.HeaderError|null);

                        /** ErrorCode database_error. */
                        public database_error?: (google.ads.googleads.v8.errors.DatabaseErrorEnum.DatabaseError|keyof typeof google.ads.googleads.v8.errors.DatabaseErrorEnum.DatabaseError|null);

                        /** ErrorCode policy_finding_error. */
                        public policy_finding_error?: (google.ads.googleads.v8.errors.PolicyFindingErrorEnum.PolicyFindingError|keyof typeof google.ads.googleads.v8.errors.PolicyFindingErrorEnum.PolicyFindingError|null);

                        /** ErrorCode enum_error. */
                        public enum_error?: (google.ads.googleads.v8.errors.EnumErrorEnum.EnumError|keyof typeof google.ads.googleads.v8.errors.EnumErrorEnum.EnumError|null);

                        /** ErrorCode keyword_plan_error. */
                        public keyword_plan_error?: (google.ads.googleads.v8.errors.KeywordPlanErrorEnum.KeywordPlanError|keyof typeof google.ads.googleads.v8.errors.KeywordPlanErrorEnum.KeywordPlanError|null);

                        /** ErrorCode keyword_plan_campaign_error. */
                        public keyword_plan_campaign_error?: (google.ads.googleads.v8.errors.KeywordPlanCampaignErrorEnum.KeywordPlanCampaignError|keyof typeof google.ads.googleads.v8.errors.KeywordPlanCampaignErrorEnum.KeywordPlanCampaignError|null);

                        /** ErrorCode keyword_plan_campaign_keyword_error. */
                        public keyword_plan_campaign_keyword_error?: (google.ads.googleads.v8.errors.KeywordPlanCampaignKeywordErrorEnum.KeywordPlanCampaignKeywordError|keyof typeof google.ads.googleads.v8.errors.KeywordPlanCampaignKeywordErrorEnum.KeywordPlanCampaignKeywordError|null);

                        /** ErrorCode keyword_plan_ad_group_error. */
                        public keyword_plan_ad_group_error?: (google.ads.googleads.v8.errors.KeywordPlanAdGroupErrorEnum.KeywordPlanAdGroupError|keyof typeof google.ads.googleads.v8.errors.KeywordPlanAdGroupErrorEnum.KeywordPlanAdGroupError|null);

                        /** ErrorCode keyword_plan_ad_group_keyword_error. */
                        public keyword_plan_ad_group_keyword_error?: (google.ads.googleads.v8.errors.KeywordPlanAdGroupKeywordErrorEnum.KeywordPlanAdGroupKeywordError|keyof typeof google.ads.googleads.v8.errors.KeywordPlanAdGroupKeywordErrorEnum.KeywordPlanAdGroupKeywordError|null);

                        /** ErrorCode keyword_plan_idea_error. */
                        public keyword_plan_idea_error?: (google.ads.googleads.v8.errors.KeywordPlanIdeaErrorEnum.KeywordPlanIdeaError|keyof typeof google.ads.googleads.v8.errors.KeywordPlanIdeaErrorEnum.KeywordPlanIdeaError|null);

                        /** ErrorCode account_budget_proposal_error. */
                        public account_budget_proposal_error?: (google.ads.googleads.v8.errors.AccountBudgetProposalErrorEnum.AccountBudgetProposalError|keyof typeof google.ads.googleads.v8.errors.AccountBudgetProposalErrorEnum.AccountBudgetProposalError|null);

                        /** ErrorCode user_list_error. */
                        public user_list_error?: (google.ads.googleads.v8.errors.UserListErrorEnum.UserListError|keyof typeof google.ads.googleads.v8.errors.UserListErrorEnum.UserListError|null);

                        /** ErrorCode change_event_error. */
                        public change_event_error?: (google.ads.googleads.v8.errors.ChangeEventErrorEnum.ChangeEventError|keyof typeof google.ads.googleads.v8.errors.ChangeEventErrorEnum.ChangeEventError|null);

                        /** ErrorCode change_status_error. */
                        public change_status_error?: (google.ads.googleads.v8.errors.ChangeStatusErrorEnum.ChangeStatusError|keyof typeof google.ads.googleads.v8.errors.ChangeStatusErrorEnum.ChangeStatusError|null);

                        /** ErrorCode feed_error. */
                        public feed_error?: (google.ads.googleads.v8.errors.FeedErrorEnum.FeedError|keyof typeof google.ads.googleads.v8.errors.FeedErrorEnum.FeedError|null);

                        /** ErrorCode geo_target_constant_suggestion_error. */
                        public geo_target_constant_suggestion_error?: (google.ads.googleads.v8.errors.GeoTargetConstantSuggestionErrorEnum.GeoTargetConstantSuggestionError|keyof typeof google.ads.googleads.v8.errors.GeoTargetConstantSuggestionErrorEnum.GeoTargetConstantSuggestionError|null);

                        /** ErrorCode campaign_draft_error. */
                        public campaign_draft_error?: (google.ads.googleads.v8.errors.CampaignDraftErrorEnum.CampaignDraftError|keyof typeof google.ads.googleads.v8.errors.CampaignDraftErrorEnum.CampaignDraftError|null);

                        /** ErrorCode feed_item_error. */
                        public feed_item_error?: (google.ads.googleads.v8.errors.FeedItemErrorEnum.FeedItemError|keyof typeof google.ads.googleads.v8.errors.FeedItemErrorEnum.FeedItemError|null);

                        /** ErrorCode label_error. */
                        public label_error?: (google.ads.googleads.v8.errors.LabelErrorEnum.LabelError|keyof typeof google.ads.googleads.v8.errors.LabelErrorEnum.LabelError|null);

                        /** ErrorCode billing_setup_error. */
                        public billing_setup_error?: (google.ads.googleads.v8.errors.BillingSetupErrorEnum.BillingSetupError|keyof typeof google.ads.googleads.v8.errors.BillingSetupErrorEnum.BillingSetupError|null);

                        /** ErrorCode customer_client_link_error. */
                        public customer_client_link_error?: (google.ads.googleads.v8.errors.CustomerClientLinkErrorEnum.CustomerClientLinkError|keyof typeof google.ads.googleads.v8.errors.CustomerClientLinkErrorEnum.CustomerClientLinkError|null);

                        /** ErrorCode customer_manager_link_error. */
                        public customer_manager_link_error?: (google.ads.googleads.v8.errors.CustomerManagerLinkErrorEnum.CustomerManagerLinkError|keyof typeof google.ads.googleads.v8.errors.CustomerManagerLinkErrorEnum.CustomerManagerLinkError|null);

                        /** ErrorCode feed_mapping_error. */
                        public feed_mapping_error?: (google.ads.googleads.v8.errors.FeedMappingErrorEnum.FeedMappingError|keyof typeof google.ads.googleads.v8.errors.FeedMappingErrorEnum.FeedMappingError|null);

                        /** ErrorCode customer_feed_error. */
                        public customer_feed_error?: (google.ads.googleads.v8.errors.CustomerFeedErrorEnum.CustomerFeedError|keyof typeof google.ads.googleads.v8.errors.CustomerFeedErrorEnum.CustomerFeedError|null);

                        /** ErrorCode ad_group_feed_error. */
                        public ad_group_feed_error?: (google.ads.googleads.v8.errors.AdGroupFeedErrorEnum.AdGroupFeedError|keyof typeof google.ads.googleads.v8.errors.AdGroupFeedErrorEnum.AdGroupFeedError|null);

                        /** ErrorCode campaign_feed_error. */
                        public campaign_feed_error?: (google.ads.googleads.v8.errors.CampaignFeedErrorEnum.CampaignFeedError|keyof typeof google.ads.googleads.v8.errors.CampaignFeedErrorEnum.CampaignFeedError|null);

                        /** ErrorCode custom_interest_error. */
                        public custom_interest_error?: (google.ads.googleads.v8.errors.CustomInterestErrorEnum.CustomInterestError|keyof typeof google.ads.googleads.v8.errors.CustomInterestErrorEnum.CustomInterestError|null);

                        /** ErrorCode campaign_experiment_error. */
                        public campaign_experiment_error?: (google.ads.googleads.v8.errors.CampaignExperimentErrorEnum.CampaignExperimentError|keyof typeof google.ads.googleads.v8.errors.CampaignExperimentErrorEnum.CampaignExperimentError|null);

                        /** ErrorCode extension_feed_item_error. */
                        public extension_feed_item_error?: (google.ads.googleads.v8.errors.ExtensionFeedItemErrorEnum.ExtensionFeedItemError|keyof typeof google.ads.googleads.v8.errors.ExtensionFeedItemErrorEnum.ExtensionFeedItemError|null);

                        /** ErrorCode ad_parameter_error. */
                        public ad_parameter_error?: (google.ads.googleads.v8.errors.AdParameterErrorEnum.AdParameterError|keyof typeof google.ads.googleads.v8.errors.AdParameterErrorEnum.AdParameterError|null);

                        /** ErrorCode feed_item_validation_error. */
                        public feed_item_validation_error?: (google.ads.googleads.v8.errors.FeedItemValidationErrorEnum.FeedItemValidationError|keyof typeof google.ads.googleads.v8.errors.FeedItemValidationErrorEnum.FeedItemValidationError|null);

                        /** ErrorCode extension_setting_error. */
                        public extension_setting_error?: (google.ads.googleads.v8.errors.ExtensionSettingErrorEnum.ExtensionSettingError|keyof typeof google.ads.googleads.v8.errors.ExtensionSettingErrorEnum.ExtensionSettingError|null);

                        /** ErrorCode feed_item_set_error. */
                        public feed_item_set_error?: (google.ads.googleads.v8.errors.FeedItemSetErrorEnum.FeedItemSetError|keyof typeof google.ads.googleads.v8.errors.FeedItemSetErrorEnum.FeedItemSetError|null);

                        /** ErrorCode feed_item_set_link_error. */
                        public feed_item_set_link_error?: (google.ads.googleads.v8.errors.FeedItemSetLinkErrorEnum.FeedItemSetLinkError|keyof typeof google.ads.googleads.v8.errors.FeedItemSetLinkErrorEnum.FeedItemSetLinkError|null);

                        /** ErrorCode feed_item_target_error. */
                        public feed_item_target_error?: (google.ads.googleads.v8.errors.FeedItemTargetErrorEnum.FeedItemTargetError|keyof typeof google.ads.googleads.v8.errors.FeedItemTargetErrorEnum.FeedItemTargetError|null);

                        /** ErrorCode policy_violation_error. */
                        public policy_violation_error?: (google.ads.googleads.v8.errors.PolicyViolationErrorEnum.PolicyViolationError|keyof typeof google.ads.googleads.v8.errors.PolicyViolationErrorEnum.PolicyViolationError|null);

                        /** ErrorCode partial_failure_error. */
                        public partial_failure_error?: (google.ads.googleads.v8.errors.PartialFailureErrorEnum.PartialFailureError|keyof typeof google.ads.googleads.v8.errors.PartialFailureErrorEnum.PartialFailureError|null);

                        /** ErrorCode policy_validation_parameter_error. */
                        public policy_validation_parameter_error?: (google.ads.googleads.v8.errors.PolicyValidationParameterErrorEnum.PolicyValidationParameterError|keyof typeof google.ads.googleads.v8.errors.PolicyValidationParameterErrorEnum.PolicyValidationParameterError|null);

                        /** ErrorCode size_limit_error. */
                        public size_limit_error?: (google.ads.googleads.v8.errors.SizeLimitErrorEnum.SizeLimitError|keyof typeof google.ads.googleads.v8.errors.SizeLimitErrorEnum.SizeLimitError|null);

                        /** ErrorCode offline_user_data_job_error. */
                        public offline_user_data_job_error?: (google.ads.googleads.v8.errors.OfflineUserDataJobErrorEnum.OfflineUserDataJobError|keyof typeof google.ads.googleads.v8.errors.OfflineUserDataJobErrorEnum.OfflineUserDataJobError|null);

                        /** ErrorCode not_allowlisted_error. */
                        public not_allowlisted_error?: (google.ads.googleads.v8.errors.NotAllowlistedErrorEnum.NotAllowlistedError|keyof typeof google.ads.googleads.v8.errors.NotAllowlistedErrorEnum.NotAllowlistedError|null);

                        /** ErrorCode manager_link_error. */
                        public manager_link_error?: (google.ads.googleads.v8.errors.ManagerLinkErrorEnum.ManagerLinkError|keyof typeof google.ads.googleads.v8.errors.ManagerLinkErrorEnum.ManagerLinkError|null);

                        /** ErrorCode currency_code_error. */
                        public currency_code_error?: (google.ads.googleads.v8.errors.CurrencyCodeErrorEnum.CurrencyCodeError|keyof typeof google.ads.googleads.v8.errors.CurrencyCodeErrorEnum.CurrencyCodeError|null);

                        /** ErrorCode access_invitation_error. */
                        public access_invitation_error?: (google.ads.googleads.v8.errors.AccessInvitationErrorEnum.AccessInvitationError|keyof typeof google.ads.googleads.v8.errors.AccessInvitationErrorEnum.AccessInvitationError|null);

                        /** ErrorCode reach_plan_error. */
                        public reach_plan_error?: (google.ads.googleads.v8.errors.ReachPlanErrorEnum.ReachPlanError|keyof typeof google.ads.googleads.v8.errors.ReachPlanErrorEnum.ReachPlanError|null);

                        /** ErrorCode invoice_error. */
                        public invoice_error?: (google.ads.googleads.v8.errors.InvoiceErrorEnum.InvoiceError|keyof typeof google.ads.googleads.v8.errors.InvoiceErrorEnum.InvoiceError|null);

                        /** ErrorCode payments_account_error. */
                        public payments_account_error?: (google.ads.googleads.v8.errors.PaymentsAccountErrorEnum.PaymentsAccountError|keyof typeof google.ads.googleads.v8.errors.PaymentsAccountErrorEnum.PaymentsAccountError|null);

                        /** ErrorCode time_zone_error. */
                        public time_zone_error?: (google.ads.googleads.v8.errors.TimeZoneErrorEnum.TimeZoneError|keyof typeof google.ads.googleads.v8.errors.TimeZoneErrorEnum.TimeZoneError|null);

                        /** ErrorCode asset_link_error. */
                        public asset_link_error?: (google.ads.googleads.v8.errors.AssetLinkErrorEnum.AssetLinkError|keyof typeof google.ads.googleads.v8.errors.AssetLinkErrorEnum.AssetLinkError|null);

                        /** ErrorCode user_data_error. */
                        public user_data_error?: (google.ads.googleads.v8.errors.UserDataErrorEnum.UserDataError|keyof typeof google.ads.googleads.v8.errors.UserDataErrorEnum.UserDataError|null);

                        /** ErrorCode batch_job_error. */
                        public batch_job_error?: (google.ads.googleads.v8.errors.BatchJobErrorEnum.BatchJobError|keyof typeof google.ads.googleads.v8.errors.BatchJobErrorEnum.BatchJobError|null);

                        /** ErrorCode account_link_error. */
                        public account_link_error?: (google.ads.googleads.v8.errors.AccountLinkErrorEnum.AccountLinkError|keyof typeof google.ads.googleads.v8.errors.AccountLinkErrorEnum.AccountLinkError|null);

                        /** ErrorCode third_party_app_analytics_link_error. */
                        public third_party_app_analytics_link_error?: (google.ads.googleads.v8.errors.ThirdPartyAppAnalyticsLinkErrorEnum.ThirdPartyAppAnalyticsLinkError|keyof typeof google.ads.googleads.v8.errors.ThirdPartyAppAnalyticsLinkErrorEnum.ThirdPartyAppAnalyticsLinkError|null);

                        /** ErrorCode customer_user_access_error. */
                        public customer_user_access_error?: (google.ads.googleads.v8.errors.CustomerUserAccessErrorEnum.CustomerUserAccessError|keyof typeof google.ads.googleads.v8.errors.CustomerUserAccessErrorEnum.CustomerUserAccessError|null);

                        /** ErrorCode custom_audience_error. */
                        public custom_audience_error?: (google.ads.googleads.v8.errors.CustomAudienceErrorEnum.CustomAudienceError|keyof typeof google.ads.googleads.v8.errors.CustomAudienceErrorEnum.CustomAudienceError|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"|"authentication_error"|"ad_group_criterion_error"|"ad_customizer_error"|"ad_group_ad_error"|"ad_sharing_error"|"adx_error"|"asset_error"|"bidding_error"|"campaign_criterion_error"|"collection_size_error"|"country_code_error"|"criterion_error"|"customer_error"|"date_error"|"date_range_error"|"distinct_error"|"feed_attribute_reference_error"|"function_error"|"function_parsing_error"|"id_error"|"image_error"|"language_code_error"|"media_bundle_error"|"media_upload_error"|"media_file_error"|"multiplier_error"|"new_resource_creation_error"|"not_empty_error"|"null_error"|"operator_error"|"range_error"|"recommendation_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"|"policy_validation_parameter_error"|"size_limit_error"|"offline_user_data_job_error"|"not_allowlisted_error"|"manager_link_error"|"currency_code_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");

                        /**
                         * Creates a new ErrorCode instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ErrorCode instance
                         */
                        public static create(properties?: google.ads.googleads.v8.errors.IErrorCode): google.ads.googleads.v8.errors.ErrorCode;

                        /**
                         * Encodes the specified ErrorCode message. Does not implicitly {@link google.ads.googleads.v8.errors.ErrorCode.verify|verify} messages.
                         * @param m ErrorCode message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IErrorCode, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ErrorCode message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IErrorCode, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ErrorCode message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.ErrorCode;

                        /**
                         * Verifies an ErrorCode message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an ErrorCode message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ErrorCode
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.ErrorCode;

                        /**
                         * Creates a plain object from an ErrorCode message. Also converts values to other types if specified.
                         * @param m ErrorCode
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.ErrorCode, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ErrorCode to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an ErrorLocation. */
                    interface IErrorLocation {

                        /** ErrorLocation field_path_elements */
                        field_path_elements?: (google.ads.googleads.v8.errors.ErrorLocation.IFieldPathElement[]|null);
                    }

                    /** Represents an ErrorLocation. */
                    class ErrorLocation implements IErrorLocation {

                        /**
                         * Constructs a new ErrorLocation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.errors.IErrorLocation);

                        /** ErrorLocation field_path_elements. */
                        public field_path_elements: google.ads.googleads.v8.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.v8.errors.IErrorLocation): google.ads.googleads.v8.errors.ErrorLocation;

                        /**
                         * Encodes the specified ErrorLocation message. Does not implicitly {@link google.ads.googleads.v8.errors.ErrorLocation.verify|verify} messages.
                         * @param m ErrorLocation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IErrorLocation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ErrorLocation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IErrorLocation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ErrorLocation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.ErrorLocation;

                        /**
                         * Verifies an ErrorLocation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an ErrorLocation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ErrorLocation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.ErrorLocation;

                        /**
                         * Creates a plain object from an ErrorLocation message. Also converts values to other types if specified.
                         * @param m ErrorLocation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.ErrorLocation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ErrorLocation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.errors.ErrorLocation.IFieldPathElement);

                            /** FieldPathElement field_name. */
                            public field_name: string;

                            /** FieldPathElement index. */
                            public index?: (number|null);

                            /** FieldPathElement _index. */
                            public _index?: "index";

                            /**
                             * Creates a new FieldPathElement instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns FieldPathElement instance
                             */
                            public static create(properties?: google.ads.googleads.v8.errors.ErrorLocation.IFieldPathElement): google.ads.googleads.v8.errors.ErrorLocation.FieldPathElement;

                            /**
                             * Encodes the specified FieldPathElement message. Does not implicitly {@link google.ads.googleads.v8.errors.ErrorLocation.FieldPathElement.verify|verify} messages.
                             * @param m FieldPathElement message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.errors.ErrorLocation.IFieldPathElement, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified FieldPathElement message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ErrorLocation.IFieldPathElement, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a FieldPathElement message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.ErrorLocation.FieldPathElement;

                            /**
                             * Verifies a FieldPathElement message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a FieldPathElement message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns FieldPathElement
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.ErrorLocation.FieldPathElement;

                            /**
                             * Creates a plain object from a FieldPathElement message. Also converts values to other types if specified.
                             * @param m FieldPathElement
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.errors.ErrorLocation.FieldPathElement, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this FieldPathElement to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }
                    }

                    /** 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.v8.errors.IPolicyViolationDetails|null);

                        /** ErrorDetails policy_finding_details */
                        policy_finding_details?: (google.ads.googleads.v8.errors.IPolicyFindingDetails|null);

                        /** ErrorDetails quota_error_details */
                        quota_error_details?: (google.ads.googleads.v8.errors.IQuotaErrorDetails|null);

                        /** ErrorDetails resource_count_details */
                        resource_count_details?: (google.ads.googleads.v8.errors.IResourceCountDetails|null);
                    }

                    /** Represents an ErrorDetails. */
                    class ErrorDetails implements IErrorDetails {

                        /**
                         * Constructs a new ErrorDetails.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.errors.IErrorDetails);

                        /** ErrorDetails unpublished_error_code. */
                        public unpublished_error_code: string;

                        /** ErrorDetails policy_violation_details. */
                        public policy_violation_details?: (google.ads.googleads.v8.errors.IPolicyViolationDetails|null);

                        /** ErrorDetails policy_finding_details. */
                        public policy_finding_details?: (google.ads.googleads.v8.errors.IPolicyFindingDetails|null);

                        /** ErrorDetails quota_error_details. */
                        public quota_error_details?: (google.ads.googleads.v8.errors.IQuotaErrorDetails|null);

                        /** ErrorDetails resource_count_details. */
                        public resource_count_details?: (google.ads.googleads.v8.errors.IResourceCountDetails|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.v8.errors.IErrorDetails): google.ads.googleads.v8.errors.ErrorDetails;

                        /**
                         * Encodes the specified ErrorDetails message. Does not implicitly {@link google.ads.googleads.v8.errors.ErrorDetails.verify|verify} messages.
                         * @param m ErrorDetails message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IErrorDetails, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ErrorDetails message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IErrorDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ErrorDetails message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.ErrorDetails;

                        /**
                         * Verifies an ErrorDetails message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an ErrorDetails message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ErrorDetails
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.ErrorDetails;

                        /**
                         * Creates a plain object from an ErrorDetails message. Also converts values to other types if specified.
                         * @param m ErrorDetails
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.ErrorDetails, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ErrorDetails to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a PolicyViolationDetails. */
                    interface IPolicyViolationDetails {

                        /** PolicyViolationDetails external_policy_description */
                        external_policy_description?: (string|null);

                        /** PolicyViolationDetails key */
                        key?: (google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.errors.IPolicyViolationDetails);

                        /** PolicyViolationDetails external_policy_description. */
                        public external_policy_description: string;

                        /** PolicyViolationDetails key. */
                        public key?: (google.ads.googleads.v8.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.v8.errors.IPolicyViolationDetails): google.ads.googleads.v8.errors.PolicyViolationDetails;

                        /**
                         * Encodes the specified PolicyViolationDetails message. Does not implicitly {@link google.ads.googleads.v8.errors.PolicyViolationDetails.verify|verify} messages.
                         * @param m PolicyViolationDetails message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IPolicyViolationDetails, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyViolationDetails message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IPolicyViolationDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyViolationDetails message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.PolicyViolationDetails;

                        /**
                         * Verifies a PolicyViolationDetails message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PolicyViolationDetails message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PolicyViolationDetails
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.PolicyViolationDetails;

                        /**
                         * Creates a plain object from a PolicyViolationDetails message. Also converts values to other types if specified.
                         * @param m PolicyViolationDetails
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.PolicyViolationDetails, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PolicyViolationDetails to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a PolicyFindingDetails. */
                    interface IPolicyFindingDetails {

                        /** PolicyFindingDetails policy_topic_entries */
                        policy_topic_entries?: (google.ads.googleads.v8.common.IPolicyTopicEntry[]|null);
                    }

                    /** Represents a PolicyFindingDetails. */
                    class PolicyFindingDetails implements IPolicyFindingDetails {

                        /**
                         * Constructs a new PolicyFindingDetails.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.errors.IPolicyFindingDetails);

                        /** PolicyFindingDetails policy_topic_entries. */
                        public policy_topic_entries: google.ads.googleads.v8.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.v8.errors.IPolicyFindingDetails): google.ads.googleads.v8.errors.PolicyFindingDetails;

                        /**
                         * Encodes the specified PolicyFindingDetails message. Does not implicitly {@link google.ads.googleads.v8.errors.PolicyFindingDetails.verify|verify} messages.
                         * @param m PolicyFindingDetails message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IPolicyFindingDetails, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyFindingDetails message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IPolicyFindingDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyFindingDetails message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.PolicyFindingDetails;

                        /**
                         * Verifies a PolicyFindingDetails message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PolicyFindingDetails message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PolicyFindingDetails
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.PolicyFindingDetails;

                        /**
                         * Creates a plain object from a PolicyFindingDetails message. Also converts values to other types if specified.
                         * @param m PolicyFindingDetails
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.PolicyFindingDetails, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PolicyFindingDetails to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a QuotaErrorDetails. */
                    interface IQuotaErrorDetails {

                        /** QuotaErrorDetails rate_scope */
                        rate_scope?: (google.ads.googleads.v8.errors.QuotaErrorDetails.QuotaRateScope|keyof typeof google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.errors.IQuotaErrorDetails);

                        /** QuotaErrorDetails rate_scope. */
                        public rate_scope: (google.ads.googleads.v8.errors.QuotaErrorDetails.QuotaRateScope|keyof typeof google.ads.googleads.v8.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.v8.errors.IQuotaErrorDetails): google.ads.googleads.v8.errors.QuotaErrorDetails;

                        /**
                         * Encodes the specified QuotaErrorDetails message. Does not implicitly {@link google.ads.googleads.v8.errors.QuotaErrorDetails.verify|verify} messages.
                         * @param m QuotaErrorDetails message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IQuotaErrorDetails, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified QuotaErrorDetails message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IQuotaErrorDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a QuotaErrorDetails message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.QuotaErrorDetails;

                        /**
                         * Verifies a QuotaErrorDetails message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a QuotaErrorDetails message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns QuotaErrorDetails
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.QuotaErrorDetails;

                        /**
                         * Creates a plain object from a QuotaErrorDetails message. Also converts values to other types if specified.
                         * @param m QuotaErrorDetails
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.QuotaErrorDetails, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this QuotaErrorDetails to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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.v8.enums.ResourceLimitTypeEnum.ResourceLimitType|keyof typeof google.ads.googleads.v8.enums.ResourceLimitTypeEnum.ResourceLimitType|null);

                        /** ResourceCountDetails existing_count */
                        existing_count?: (number|null);
                    }

                    /** Represents a ResourceCountDetails. */
                    class ResourceCountDetails implements IResourceCountDetails {

                        /**
                         * Constructs a new ResourceCountDetails.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ResourceLimitTypeEnum.ResourceLimitType|keyof typeof google.ads.googleads.v8.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.v8.errors.IResourceCountDetails): google.ads.googleads.v8.errors.ResourceCountDetails;

                        /**
                         * Encodes the specified ResourceCountDetails message. Does not implicitly {@link google.ads.googleads.v8.errors.ResourceCountDetails.verify|verify} messages.
                         * @param m ResourceCountDetails message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IResourceCountDetails, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ResourceCountDetails message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IResourceCountDetails, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ResourceCountDetails message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.ResourceCountDetails;

                        /**
                         * Verifies a ResourceCountDetails message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ResourceCountDetails message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ResourceCountDetails
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.ResourceCountDetails;

                        /**
                         * Creates a plain object from a ResourceCountDetails message. Also converts values to other types if specified.
                         * @param m ResourceCountDetails
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.ResourceCountDetails, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ResourceCountDetails to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an ExtensionFeedItemErrorEnum. */
                    interface IExtensionFeedItemErrorEnum {
                    }

                    /** Represents an ExtensionFeedItemErrorEnum. */
                    class ExtensionFeedItemErrorEnum implements IExtensionFeedItemErrorEnum {

                        /**
                         * Constructs a new ExtensionFeedItemErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IExtensionFeedItemErrorEnum): google.ads.googleads.v8.errors.ExtensionFeedItemErrorEnum;

                        /**
                         * Encodes the specified ExtensionFeedItemErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.ExtensionFeedItemErrorEnum.verify|verify} messages.
                         * @param m ExtensionFeedItemErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IExtensionFeedItemErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExtensionFeedItemErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IExtensionFeedItemErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExtensionFeedItemErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.ExtensionFeedItemErrorEnum;

                        /**
                         * Verifies an ExtensionFeedItemErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an ExtensionFeedItemErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ExtensionFeedItemErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.ExtensionFeedItemErrorEnum;

                        /**
                         * Creates a plain object from an ExtensionFeedItemErrorEnum message. Also converts values to other types if specified.
                         * @param m ExtensionFeedItemErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.ExtensionFeedItemErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExtensionFeedItemErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IExtensionSettingErrorEnum): google.ads.googleads.v8.errors.ExtensionSettingErrorEnum;

                        /**
                         * Encodes the specified ExtensionSettingErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.ExtensionSettingErrorEnum.verify|verify} messages.
                         * @param m ExtensionSettingErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IExtensionSettingErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExtensionSettingErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IExtensionSettingErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExtensionSettingErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.ExtensionSettingErrorEnum;

                        /**
                         * Verifies an ExtensionSettingErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an ExtensionSettingErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ExtensionSettingErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.ExtensionSettingErrorEnum;

                        /**
                         * Creates a plain object from an ExtensionSettingErrorEnum message. Also converts values to other types if specified.
                         * @param m ExtensionSettingErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.ExtensionSettingErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExtensionSettingErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IFeedAttributeReferenceErrorEnum): google.ads.googleads.v8.errors.FeedAttributeReferenceErrorEnum;

                        /**
                         * Encodes the specified FeedAttributeReferenceErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.FeedAttributeReferenceErrorEnum.verify|verify} messages.
                         * @param m FeedAttributeReferenceErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IFeedAttributeReferenceErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedAttributeReferenceErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IFeedAttributeReferenceErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedAttributeReferenceErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.FeedAttributeReferenceErrorEnum;

                        /**
                         * Verifies a FeedAttributeReferenceErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedAttributeReferenceErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedAttributeReferenceErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.FeedAttributeReferenceErrorEnum;

                        /**
                         * Creates a plain object from a FeedAttributeReferenceErrorEnum message. Also converts values to other types if specified.
                         * @param m FeedAttributeReferenceErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.FeedAttributeReferenceErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedAttributeReferenceErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IFeedErrorEnum): google.ads.googleads.v8.errors.FeedErrorEnum;

                        /**
                         * Encodes the specified FeedErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.FeedErrorEnum.verify|verify} messages.
                         * @param m FeedErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IFeedErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IFeedErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.FeedErrorEnum;

                        /**
                         * Verifies a FeedErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.FeedErrorEnum;

                        /**
                         * Creates a plain object from a FeedErrorEnum message. Also converts values to other types if specified.
                         * @param m FeedErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.FeedErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a FeedItemErrorEnum. */
                    interface IFeedItemErrorEnum {
                    }

                    /** Represents a FeedItemErrorEnum. */
                    class FeedItemErrorEnum implements IFeedItemErrorEnum {

                        /**
                         * Constructs a new FeedItemErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IFeedItemErrorEnum): google.ads.googleads.v8.errors.FeedItemErrorEnum;

                        /**
                         * Encodes the specified FeedItemErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.FeedItemErrorEnum.verify|verify} messages.
                         * @param m FeedItemErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IFeedItemErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IFeedItemErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.FeedItemErrorEnum;

                        /**
                         * Verifies a FeedItemErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedItemErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.FeedItemErrorEnum;

                        /**
                         * Creates a plain object from a FeedItemErrorEnum message. Also converts values to other types if specified.
                         * @param m FeedItemErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.FeedItemErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a FeedItemSetErrorEnum. */
                    interface IFeedItemSetErrorEnum {
                    }

                    /** Represents a FeedItemSetErrorEnum. */
                    class FeedItemSetErrorEnum implements IFeedItemSetErrorEnum {

                        /**
                         * Constructs a new FeedItemSetErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IFeedItemSetErrorEnum): google.ads.googleads.v8.errors.FeedItemSetErrorEnum;

                        /**
                         * Encodes the specified FeedItemSetErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.FeedItemSetErrorEnum.verify|verify} messages.
                         * @param m FeedItemSetErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IFeedItemSetErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemSetErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IFeedItemSetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemSetErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.FeedItemSetErrorEnum;

                        /**
                         * Verifies a FeedItemSetErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemSetErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedItemSetErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.FeedItemSetErrorEnum;

                        /**
                         * Creates a plain object from a FeedItemSetErrorEnum message. Also converts values to other types if specified.
                         * @param m FeedItemSetErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.FeedItemSetErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemSetErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IFeedItemSetLinkErrorEnum): google.ads.googleads.v8.errors.FeedItemSetLinkErrorEnum;

                        /**
                         * Encodes the specified FeedItemSetLinkErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.FeedItemSetLinkErrorEnum.verify|verify} messages.
                         * @param m FeedItemSetLinkErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IFeedItemSetLinkErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemSetLinkErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IFeedItemSetLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemSetLinkErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.FeedItemSetLinkErrorEnum;

                        /**
                         * Verifies a FeedItemSetLinkErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemSetLinkErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedItemSetLinkErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.FeedItemSetLinkErrorEnum;

                        /**
                         * Creates a plain object from a FeedItemSetLinkErrorEnum message. Also converts values to other types if specified.
                         * @param m FeedItemSetLinkErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.FeedItemSetLinkErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemSetLinkErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IFeedItemTargetErrorEnum): google.ads.googleads.v8.errors.FeedItemTargetErrorEnum;

                        /**
                         * Encodes the specified FeedItemTargetErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.FeedItemTargetErrorEnum.verify|verify} messages.
                         * @param m FeedItemTargetErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IFeedItemTargetErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemTargetErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IFeedItemTargetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemTargetErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.FeedItemTargetErrorEnum;

                        /**
                         * Verifies a FeedItemTargetErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemTargetErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedItemTargetErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.FeedItemTargetErrorEnum;

                        /**
                         * Creates a plain object from a FeedItemTargetErrorEnum message. Also converts values to other types if specified.
                         * @param m FeedItemTargetErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.FeedItemTargetErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemTargetErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IFeedItemValidationErrorEnum): google.ads.googleads.v8.errors.FeedItemValidationErrorEnum;

                        /**
                         * Encodes the specified FeedItemValidationErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.FeedItemValidationErrorEnum.verify|verify} messages.
                         * @param m FeedItemValidationErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IFeedItemValidationErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemValidationErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IFeedItemValidationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemValidationErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.FeedItemValidationErrorEnum;

                        /**
                         * Verifies a FeedItemValidationErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemValidationErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedItemValidationErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.FeedItemValidationErrorEnum;

                        /**
                         * Creates a plain object from a FeedItemValidationErrorEnum message. Also converts values to other types if specified.
                         * @param m FeedItemValidationErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.FeedItemValidationErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemValidationErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IFeedMappingErrorEnum): google.ads.googleads.v8.errors.FeedMappingErrorEnum;

                        /**
                         * Encodes the specified FeedMappingErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.FeedMappingErrorEnum.verify|verify} messages.
                         * @param m FeedMappingErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IFeedMappingErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedMappingErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IFeedMappingErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedMappingErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.FeedMappingErrorEnum;

                        /**
                         * Verifies a FeedMappingErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedMappingErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedMappingErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.FeedMappingErrorEnum;

                        /**
                         * Creates a plain object from a FeedMappingErrorEnum message. Also converts values to other types if specified.
                         * @param m FeedMappingErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.FeedMappingErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedMappingErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a FieldErrorEnum. */
                    interface IFieldErrorEnum {
                    }

                    /** Represents a FieldErrorEnum. */
                    class FieldErrorEnum implements IFieldErrorEnum {

                        /**
                         * Constructs a new FieldErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IFieldErrorEnum): google.ads.googleads.v8.errors.FieldErrorEnum;

                        /**
                         * Encodes the specified FieldErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.FieldErrorEnum.verify|verify} messages.
                         * @param m FieldErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IFieldErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FieldErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IFieldErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FieldErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.FieldErrorEnum;

                        /**
                         * Verifies a FieldErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FieldErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FieldErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.FieldErrorEnum;

                        /**
                         * Creates a plain object from a FieldErrorEnum message. Also converts values to other types if specified.
                         * @param m FieldErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.FieldErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FieldErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a FieldMaskErrorEnum. */
                    interface IFieldMaskErrorEnum {
                    }

                    /** Represents a FieldMaskErrorEnum. */
                    class FieldMaskErrorEnum implements IFieldMaskErrorEnum {

                        /**
                         * Constructs a new FieldMaskErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IFieldMaskErrorEnum): google.ads.googleads.v8.errors.FieldMaskErrorEnum;

                        /**
                         * Encodes the specified FieldMaskErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.FieldMaskErrorEnum.verify|verify} messages.
                         * @param m FieldMaskErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IFieldMaskErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FieldMaskErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IFieldMaskErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FieldMaskErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.FieldMaskErrorEnum;

                        /**
                         * Verifies a FieldMaskErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FieldMaskErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FieldMaskErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.FieldMaskErrorEnum;

                        /**
                         * Creates a plain object from a FieldMaskErrorEnum message. Also converts values to other types if specified.
                         * @param m FieldMaskErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.FieldMaskErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FieldMaskErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 FunctionErrorEnum. */
                    interface IFunctionErrorEnum {
                    }

                    /** Represents a FunctionErrorEnum. */
                    class FunctionErrorEnum implements IFunctionErrorEnum {

                        /**
                         * Constructs a new FunctionErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IFunctionErrorEnum): google.ads.googleads.v8.errors.FunctionErrorEnum;

                        /**
                         * Encodes the specified FunctionErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.FunctionErrorEnum.verify|verify} messages.
                         * @param m FunctionErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IFunctionErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FunctionErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IFunctionErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FunctionErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.FunctionErrorEnum;

                        /**
                         * Verifies a FunctionErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FunctionErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FunctionErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.FunctionErrorEnum;

                        /**
                         * Creates a plain object from a FunctionErrorEnum message. Also converts values to other types if specified.
                         * @param m FunctionErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.FunctionErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FunctionErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IFunctionParsingErrorEnum): google.ads.googleads.v8.errors.FunctionParsingErrorEnum;

                        /**
                         * Encodes the specified FunctionParsingErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.FunctionParsingErrorEnum.verify|verify} messages.
                         * @param m FunctionParsingErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IFunctionParsingErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FunctionParsingErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IFunctionParsingErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FunctionParsingErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.FunctionParsingErrorEnum;

                        /**
                         * Verifies a FunctionParsingErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FunctionParsingErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FunctionParsingErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.FunctionParsingErrorEnum;

                        /**
                         * Creates a plain object from a FunctionParsingErrorEnum message. Also converts values to other types if specified.
                         * @param m FunctionParsingErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.FunctionParsingErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FunctionParsingErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IGeoTargetConstantSuggestionErrorEnum): google.ads.googleads.v8.errors.GeoTargetConstantSuggestionErrorEnum;

                        /**
                         * Encodes the specified GeoTargetConstantSuggestionErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.GeoTargetConstantSuggestionErrorEnum.verify|verify} messages.
                         * @param m GeoTargetConstantSuggestionErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IGeoTargetConstantSuggestionErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GeoTargetConstantSuggestionErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IGeoTargetConstantSuggestionErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GeoTargetConstantSuggestionErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.GeoTargetConstantSuggestionErrorEnum;

                        /**
                         * Verifies a GeoTargetConstantSuggestionErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GeoTargetConstantSuggestionErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GeoTargetConstantSuggestionErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.GeoTargetConstantSuggestionErrorEnum;

                        /**
                         * Creates a plain object from a GeoTargetConstantSuggestionErrorEnum message. Also converts values to other types if specified.
                         * @param m GeoTargetConstantSuggestionErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.GeoTargetConstantSuggestionErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GeoTargetConstantSuggestionErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 HeaderErrorEnum. */
                    interface IHeaderErrorEnum {
                    }

                    /** Represents a HeaderErrorEnum. */
                    class HeaderErrorEnum implements IHeaderErrorEnum {

                        /**
                         * Constructs a new HeaderErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IHeaderErrorEnum): google.ads.googleads.v8.errors.HeaderErrorEnum;

                        /**
                         * Encodes the specified HeaderErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.HeaderErrorEnum.verify|verify} messages.
                         * @param m HeaderErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IHeaderErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HeaderErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IHeaderErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HeaderErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.HeaderErrorEnum;

                        /**
                         * Verifies a HeaderErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HeaderErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns HeaderErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.HeaderErrorEnum;

                        /**
                         * Creates a plain object from a HeaderErrorEnum message. Also converts values to other types if specified.
                         * @param m HeaderErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.HeaderErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HeaderErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IIdErrorEnum): google.ads.googleads.v8.errors.IdErrorEnum;

                        /**
                         * Encodes the specified IdErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.IdErrorEnum.verify|verify} messages.
                         * @param m IdErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IIdErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified IdErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IIdErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an IdErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.IdErrorEnum;

                        /**
                         * Verifies an IdErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an IdErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns IdErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.IdErrorEnum;

                        /**
                         * Creates a plain object from an IdErrorEnum message. Also converts values to other types if specified.
                         * @param m IdErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.IdErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this IdErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace IdErrorEnum {

                        /** IdError enum. */
                        enum IdError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NOT_FOUND = 2
                        }
                    }

                    /** Properties of an ImageErrorEnum. */
                    interface IImageErrorEnum {
                    }

                    /** Represents an ImageErrorEnum. */
                    class ImageErrorEnum implements IImageErrorEnum {

                        /**
                         * Constructs a new ImageErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IImageErrorEnum): google.ads.googleads.v8.errors.ImageErrorEnum;

                        /**
                         * Encodes the specified ImageErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.ImageErrorEnum.verify|verify} messages.
                         * @param m ImageErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IImageErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ImageErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IImageErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ImageErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.ImageErrorEnum;

                        /**
                         * Verifies an ImageErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an ImageErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ImageErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.ImageErrorEnum;

                        /**
                         * Creates a plain object from an ImageErrorEnum message. Also converts values to other types if specified.
                         * @param m ImageErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.ImageErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ImageErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 InternalErrorEnum. */
                    interface IInternalErrorEnum {
                    }

                    /** Represents an InternalErrorEnum. */
                    class InternalErrorEnum implements IInternalErrorEnum {

                        /**
                         * Constructs a new InternalErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IInternalErrorEnum): google.ads.googleads.v8.errors.InternalErrorEnum;

                        /**
                         * Encodes the specified InternalErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.InternalErrorEnum.verify|verify} messages.
                         * @param m InternalErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IInternalErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified InternalErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IInternalErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an InternalErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.InternalErrorEnum;

                        /**
                         * Verifies an InternalErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an InternalErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns InternalErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.InternalErrorEnum;

                        /**
                         * Creates a plain object from an InternalErrorEnum message. Also converts values to other types if specified.
                         * @param m InternalErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.InternalErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this InternalErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IInvoiceErrorEnum): google.ads.googleads.v8.errors.InvoiceErrorEnum;

                        /**
                         * Encodes the specified InvoiceErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.InvoiceErrorEnum.verify|verify} messages.
                         * @param m InvoiceErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IInvoiceErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified InvoiceErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IInvoiceErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an InvoiceErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.InvoiceErrorEnum;

                        /**
                         * Verifies an InvoiceErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an InvoiceErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns InvoiceErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.InvoiceErrorEnum;

                        /**
                         * Creates a plain object from an InvoiceErrorEnum message. Also converts values to other types if specified.
                         * @param m InvoiceErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.InvoiceErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this InvoiceErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace InvoiceErrorEnum {

                        /** InvoiceError enum. */
                        enum InvoiceError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            YEAR_MONTH_TOO_OLD = 2,
                            NOT_INVOICED_CUSTOMER = 3,
                            BILLING_SETUP_NOT_APPROVED = 4
                        }
                    }

                    /** Properties of a KeywordPlanAdGroupErrorEnum. */
                    interface IKeywordPlanAdGroupErrorEnum {
                    }

                    /** Represents a KeywordPlanAdGroupErrorEnum. */
                    class KeywordPlanAdGroupErrorEnum implements IKeywordPlanAdGroupErrorEnum {

                        /**
                         * Constructs a new KeywordPlanAdGroupErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IKeywordPlanAdGroupErrorEnum): google.ads.googleads.v8.errors.KeywordPlanAdGroupErrorEnum;

                        /**
                         * Encodes the specified KeywordPlanAdGroupErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.KeywordPlanAdGroupErrorEnum.verify|verify} messages.
                         * @param m KeywordPlanAdGroupErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IKeywordPlanAdGroupErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanAdGroupErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IKeywordPlanAdGroupErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanAdGroupErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.KeywordPlanAdGroupErrorEnum;

                        /**
                         * Verifies a KeywordPlanAdGroupErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanAdGroupErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanAdGroupErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.KeywordPlanAdGroupErrorEnum;

                        /**
                         * Creates a plain object from a KeywordPlanAdGroupErrorEnum message. Also converts values to other types if specified.
                         * @param m KeywordPlanAdGroupErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.KeywordPlanAdGroupErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanAdGroupErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IKeywordPlanAdGroupKeywordErrorEnum): google.ads.googleads.v8.errors.KeywordPlanAdGroupKeywordErrorEnum;

                        /**
                         * Encodes the specified KeywordPlanAdGroupKeywordErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.KeywordPlanAdGroupKeywordErrorEnum.verify|verify} messages.
                         * @param m KeywordPlanAdGroupKeywordErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IKeywordPlanAdGroupKeywordErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanAdGroupKeywordErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IKeywordPlanAdGroupKeywordErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanAdGroupKeywordErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.KeywordPlanAdGroupKeywordErrorEnum;

                        /**
                         * Verifies a KeywordPlanAdGroupKeywordErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanAdGroupKeywordErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanAdGroupKeywordErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.KeywordPlanAdGroupKeywordErrorEnum;

                        /**
                         * Creates a plain object from a KeywordPlanAdGroupKeywordErrorEnum message. Also converts values to other types if specified.
                         * @param m KeywordPlanAdGroupKeywordErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.KeywordPlanAdGroupKeywordErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanAdGroupKeywordErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a KeywordPlanCampaignErrorEnum. */
                    interface IKeywordPlanCampaignErrorEnum {
                    }

                    /** Represents a KeywordPlanCampaignErrorEnum. */
                    class KeywordPlanCampaignErrorEnum implements IKeywordPlanCampaignErrorEnum {

                        /**
                         * Constructs a new KeywordPlanCampaignErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IKeywordPlanCampaignErrorEnum): google.ads.googleads.v8.errors.KeywordPlanCampaignErrorEnum;

                        /**
                         * Encodes the specified KeywordPlanCampaignErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.KeywordPlanCampaignErrorEnum.verify|verify} messages.
                         * @param m KeywordPlanCampaignErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IKeywordPlanCampaignErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanCampaignErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IKeywordPlanCampaignErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanCampaignErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.KeywordPlanCampaignErrorEnum;

                        /**
                         * Verifies a KeywordPlanCampaignErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanCampaignErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanCampaignErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.KeywordPlanCampaignErrorEnum;

                        /**
                         * Creates a plain object from a KeywordPlanCampaignErrorEnum message. Also converts values to other types if specified.
                         * @param m KeywordPlanCampaignErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.KeywordPlanCampaignErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanCampaignErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IKeywordPlanCampaignKeywordErrorEnum): google.ads.googleads.v8.errors.KeywordPlanCampaignKeywordErrorEnum;

                        /**
                         * Encodes the specified KeywordPlanCampaignKeywordErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.KeywordPlanCampaignKeywordErrorEnum.verify|verify} messages.
                         * @param m KeywordPlanCampaignKeywordErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IKeywordPlanCampaignKeywordErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanCampaignKeywordErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IKeywordPlanCampaignKeywordErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanCampaignKeywordErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.KeywordPlanCampaignKeywordErrorEnum;

                        /**
                         * Verifies a KeywordPlanCampaignKeywordErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanCampaignKeywordErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanCampaignKeywordErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.KeywordPlanCampaignKeywordErrorEnum;

                        /**
                         * Creates a plain object from a KeywordPlanCampaignKeywordErrorEnum message. Also converts values to other types if specified.
                         * @param m KeywordPlanCampaignKeywordErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.KeywordPlanCampaignKeywordErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanCampaignKeywordErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IKeywordPlanErrorEnum): google.ads.googleads.v8.errors.KeywordPlanErrorEnum;

                        /**
                         * Encodes the specified KeywordPlanErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.KeywordPlanErrorEnum.verify|verify} messages.
                         * @param m KeywordPlanErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IKeywordPlanErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IKeywordPlanErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.KeywordPlanErrorEnum;

                        /**
                         * Verifies a KeywordPlanErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.KeywordPlanErrorEnum;

                        /**
                         * Creates a plain object from a KeywordPlanErrorEnum message. Also converts values to other types if specified.
                         * @param m KeywordPlanErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.KeywordPlanErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IKeywordPlanIdeaErrorEnum): google.ads.googleads.v8.errors.KeywordPlanIdeaErrorEnum;

                        /**
                         * Encodes the specified KeywordPlanIdeaErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.KeywordPlanIdeaErrorEnum.verify|verify} messages.
                         * @param m KeywordPlanIdeaErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IKeywordPlanIdeaErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanIdeaErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IKeywordPlanIdeaErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanIdeaErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.KeywordPlanIdeaErrorEnum;

                        /**
                         * Verifies a KeywordPlanIdeaErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanIdeaErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanIdeaErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.KeywordPlanIdeaErrorEnum;

                        /**
                         * Creates a plain object from a KeywordPlanIdeaErrorEnum message. Also converts values to other types if specified.
                         * @param m KeywordPlanIdeaErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.KeywordPlanIdeaErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanIdeaErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.ILabelErrorEnum): google.ads.googleads.v8.errors.LabelErrorEnum;

                        /**
                         * Encodes the specified LabelErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.LabelErrorEnum.verify|verify} messages.
                         * @param m LabelErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.ILabelErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LabelErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ILabelErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LabelErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.LabelErrorEnum;

                        /**
                         * Verifies a LabelErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LabelErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns LabelErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.LabelErrorEnum;

                        /**
                         * Creates a plain object from a LabelErrorEnum message. Also converts values to other types if specified.
                         * @param m LabelErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.LabelErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LabelErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.ILanguageCodeErrorEnum): google.ads.googleads.v8.errors.LanguageCodeErrorEnum;

                        /**
                         * Encodes the specified LanguageCodeErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.LanguageCodeErrorEnum.verify|verify} messages.
                         * @param m LanguageCodeErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.ILanguageCodeErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LanguageCodeErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ILanguageCodeErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LanguageCodeErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.LanguageCodeErrorEnum;

                        /**
                         * Verifies a LanguageCodeErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LanguageCodeErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns LanguageCodeErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.LanguageCodeErrorEnum;

                        /**
                         * Creates a plain object from a LanguageCodeErrorEnum message. Also converts values to other types if specified.
                         * @param m LanguageCodeErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.LanguageCodeErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LanguageCodeErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IListOperationErrorEnum): google.ads.googleads.v8.errors.ListOperationErrorEnum;

                        /**
                         * Encodes the specified ListOperationErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.ListOperationErrorEnum.verify|verify} messages.
                         * @param m ListOperationErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IListOperationErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListOperationErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IListOperationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListOperationErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.ListOperationErrorEnum;

                        /**
                         * Verifies a ListOperationErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListOperationErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ListOperationErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.ListOperationErrorEnum;

                        /**
                         * Creates a plain object from a ListOperationErrorEnum message. Also converts values to other types if specified.
                         * @param m ListOperationErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.ListOperationErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListOperationErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IManagerLinkErrorEnum): google.ads.googleads.v8.errors.ManagerLinkErrorEnum;

                        /**
                         * Encodes the specified ManagerLinkErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.ManagerLinkErrorEnum.verify|verify} messages.
                         * @param m ManagerLinkErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IManagerLinkErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ManagerLinkErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IManagerLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ManagerLinkErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.ManagerLinkErrorEnum;

                        /**
                         * Verifies a ManagerLinkErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ManagerLinkErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ManagerLinkErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.ManagerLinkErrorEnum;

                        /**
                         * Creates a plain object from a ManagerLinkErrorEnum message. Also converts values to other types if specified.
                         * @param m ManagerLinkErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.ManagerLinkErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ManagerLinkErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a MediaBundleErrorEnum. */
                    interface IMediaBundleErrorEnum {
                    }

                    /** Represents a MediaBundleErrorEnum. */
                    class MediaBundleErrorEnum implements IMediaBundleErrorEnum {

                        /**
                         * Constructs a new MediaBundleErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IMediaBundleErrorEnum): google.ads.googleads.v8.errors.MediaBundleErrorEnum;

                        /**
                         * Encodes the specified MediaBundleErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.MediaBundleErrorEnum.verify|verify} messages.
                         * @param m MediaBundleErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IMediaBundleErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MediaBundleErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IMediaBundleErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MediaBundleErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.MediaBundleErrorEnum;

                        /**
                         * Verifies a MediaBundleErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MediaBundleErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MediaBundleErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.MediaBundleErrorEnum;

                        /**
                         * Creates a plain object from a MediaBundleErrorEnum message. Also converts values to other types if specified.
                         * @param m MediaBundleErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.MediaBundleErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MediaBundleErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IMediaFileErrorEnum): google.ads.googleads.v8.errors.MediaFileErrorEnum;

                        /**
                         * Encodes the specified MediaFileErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.MediaFileErrorEnum.verify|verify} messages.
                         * @param m MediaFileErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IMediaFileErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MediaFileErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IMediaFileErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MediaFileErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.MediaFileErrorEnum;

                        /**
                         * Verifies a MediaFileErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MediaFileErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MediaFileErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.MediaFileErrorEnum;

                        /**
                         * Creates a plain object from a MediaFileErrorEnum message. Also converts values to other types if specified.
                         * @param m MediaFileErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.MediaFileErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MediaFileErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IMediaUploadErrorEnum): google.ads.googleads.v8.errors.MediaUploadErrorEnum;

                        /**
                         * Encodes the specified MediaUploadErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.MediaUploadErrorEnum.verify|verify} messages.
                         * @param m MediaUploadErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IMediaUploadErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MediaUploadErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IMediaUploadErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MediaUploadErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.MediaUploadErrorEnum;

                        /**
                         * Verifies a MediaUploadErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MediaUploadErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MediaUploadErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.MediaUploadErrorEnum;

                        /**
                         * Creates a plain object from a MediaUploadErrorEnum message. Also converts values to other types if specified.
                         * @param m MediaUploadErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.MediaUploadErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MediaUploadErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 MultiplierErrorEnum. */
                    interface IMultiplierErrorEnum {
                    }

                    /** Represents a MultiplierErrorEnum. */
                    class MultiplierErrorEnum implements IMultiplierErrorEnum {

                        /**
                         * Constructs a new MultiplierErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IMultiplierErrorEnum): google.ads.googleads.v8.errors.MultiplierErrorEnum;

                        /**
                         * Encodes the specified MultiplierErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.MultiplierErrorEnum.verify|verify} messages.
                         * @param m MultiplierErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IMultiplierErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MultiplierErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IMultiplierErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MultiplierErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.MultiplierErrorEnum;

                        /**
                         * Verifies a MultiplierErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MultiplierErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MultiplierErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.MultiplierErrorEnum;

                        /**
                         * Creates a plain object from a MultiplierErrorEnum message. Also converts values to other types if specified.
                         * @param m MultiplierErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.MultiplierErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MultiplierErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IMutateErrorEnum): google.ads.googleads.v8.errors.MutateErrorEnum;

                        /**
                         * Encodes the specified MutateErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.MutateErrorEnum.verify|verify} messages.
                         * @param m MutateErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IMutateErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IMutateErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.MutateErrorEnum;

                        /**
                         * Verifies a MutateErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.MutateErrorEnum;

                        /**
                         * Creates a plain object from a MutateErrorEnum message. Also converts values to other types if specified.
                         * @param m MutateErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.MutateErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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,
                            RESOURCE_READ_ONLY = 13
                        }
                    }

                    /** Properties of a NewResourceCreationErrorEnum. */
                    interface INewResourceCreationErrorEnum {
                    }

                    /** Represents a NewResourceCreationErrorEnum. */
                    class NewResourceCreationErrorEnum implements INewResourceCreationErrorEnum {

                        /**
                         * Constructs a new NewResourceCreationErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.INewResourceCreationErrorEnum): google.ads.googleads.v8.errors.NewResourceCreationErrorEnum;

                        /**
                         * Encodes the specified NewResourceCreationErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.NewResourceCreationErrorEnum.verify|verify} messages.
                         * @param m NewResourceCreationErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.INewResourceCreationErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified NewResourceCreationErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.INewResourceCreationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a NewResourceCreationErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.NewResourceCreationErrorEnum;

                        /**
                         * Verifies a NewResourceCreationErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a NewResourceCreationErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns NewResourceCreationErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.NewResourceCreationErrorEnum;

                        /**
                         * Creates a plain object from a NewResourceCreationErrorEnum message. Also converts values to other types if specified.
                         * @param m NewResourceCreationErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.NewResourceCreationErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this NewResourceCreationErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.INotAllowlistedErrorEnum): google.ads.googleads.v8.errors.NotAllowlistedErrorEnum;

                        /**
                         * Encodes the specified NotAllowlistedErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.NotAllowlistedErrorEnum.verify|verify} messages.
                         * @param m NotAllowlistedErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.INotAllowlistedErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified NotAllowlistedErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.INotAllowlistedErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a NotAllowlistedErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.NotAllowlistedErrorEnum;

                        /**
                         * Verifies a NotAllowlistedErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a NotAllowlistedErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns NotAllowlistedErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.NotAllowlistedErrorEnum;

                        /**
                         * Creates a plain object from a NotAllowlistedErrorEnum message. Also converts values to other types if specified.
                         * @param m NotAllowlistedErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.NotAllowlistedErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this NotAllowlistedErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.INotEmptyErrorEnum): google.ads.googleads.v8.errors.NotEmptyErrorEnum;

                        /**
                         * Encodes the specified NotEmptyErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.NotEmptyErrorEnum.verify|verify} messages.
                         * @param m NotEmptyErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.INotEmptyErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified NotEmptyErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.INotEmptyErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a NotEmptyErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.NotEmptyErrorEnum;

                        /**
                         * Verifies a NotEmptyErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a NotEmptyErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns NotEmptyErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.NotEmptyErrorEnum;

                        /**
                         * Creates a plain object from a NotEmptyErrorEnum message. Also converts values to other types if specified.
                         * @param m NotEmptyErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.NotEmptyErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this NotEmptyErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.INullErrorEnum): google.ads.googleads.v8.errors.NullErrorEnum;

                        /**
                         * Encodes the specified NullErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.NullErrorEnum.verify|verify} messages.
                         * @param m NullErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.INullErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified NullErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.INullErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a NullErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.NullErrorEnum;

                        /**
                         * Verifies a NullErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a NullErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns NullErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.NullErrorEnum;

                        /**
                         * Creates a plain object from a NullErrorEnum message. Also converts values to other types if specified.
                         * @param m NullErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.NullErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this NullErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IOfflineUserDataJobErrorEnum): google.ads.googleads.v8.errors.OfflineUserDataJobErrorEnum;

                        /**
                         * Encodes the specified OfflineUserDataJobErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.OfflineUserDataJobErrorEnum.verify|verify} messages.
                         * @param m OfflineUserDataJobErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IOfflineUserDataJobErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OfflineUserDataJobErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IOfflineUserDataJobErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OfflineUserDataJobErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.OfflineUserDataJobErrorEnum;

                        /**
                         * Verifies an OfflineUserDataJobErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an OfflineUserDataJobErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns OfflineUserDataJobErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.OfflineUserDataJobErrorEnum;

                        /**
                         * Creates a plain object from an OfflineUserDataJobErrorEnum message. Also converts values to other types if specified.
                         * @param m OfflineUserDataJobErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.OfflineUserDataJobErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OfflineUserDataJobErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of an OperationAccessDeniedErrorEnum. */
                    interface IOperationAccessDeniedErrorEnum {
                    }

                    /** Represents an OperationAccessDeniedErrorEnum. */
                    class OperationAccessDeniedErrorEnum implements IOperationAccessDeniedErrorEnum {

                        /**
                         * Constructs a new OperationAccessDeniedErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IOperationAccessDeniedErrorEnum): google.ads.googleads.v8.errors.OperationAccessDeniedErrorEnum;

                        /**
                         * Encodes the specified OperationAccessDeniedErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.OperationAccessDeniedErrorEnum.verify|verify} messages.
                         * @param m OperationAccessDeniedErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IOperationAccessDeniedErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OperationAccessDeniedErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IOperationAccessDeniedErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OperationAccessDeniedErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.OperationAccessDeniedErrorEnum;

                        /**
                         * Verifies an OperationAccessDeniedErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an OperationAccessDeniedErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns OperationAccessDeniedErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.OperationAccessDeniedErrorEnum;

                        /**
                         * Creates a plain object from an OperationAccessDeniedErrorEnum message. Also converts values to other types if specified.
                         * @param m OperationAccessDeniedErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.OperationAccessDeniedErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OperationAccessDeniedErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IOperatorErrorEnum): google.ads.googleads.v8.errors.OperatorErrorEnum;

                        /**
                         * Encodes the specified OperatorErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.OperatorErrorEnum.verify|verify} messages.
                         * @param m OperatorErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IOperatorErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OperatorErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IOperatorErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OperatorErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.OperatorErrorEnum;

                        /**
                         * Verifies an OperatorErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an OperatorErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns OperatorErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.OperatorErrorEnum;

                        /**
                         * Creates a plain object from an OperatorErrorEnum message. Also converts values to other types if specified.
                         * @param m OperatorErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.OperatorErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OperatorErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IPartialFailureErrorEnum): google.ads.googleads.v8.errors.PartialFailureErrorEnum;

                        /**
                         * Encodes the specified PartialFailureErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.PartialFailureErrorEnum.verify|verify} messages.
                         * @param m PartialFailureErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IPartialFailureErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PartialFailureErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IPartialFailureErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PartialFailureErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.PartialFailureErrorEnum;

                        /**
                         * Verifies a PartialFailureErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PartialFailureErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PartialFailureErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.PartialFailureErrorEnum;

                        /**
                         * Creates a plain object from a PartialFailureErrorEnum message. Also converts values to other types if specified.
                         * @param m PartialFailureErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.PartialFailureErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PartialFailureErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IPaymentsAccountErrorEnum): google.ads.googleads.v8.errors.PaymentsAccountErrorEnum;

                        /**
                         * Encodes the specified PaymentsAccountErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.PaymentsAccountErrorEnum.verify|verify} messages.
                         * @param m PaymentsAccountErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IPaymentsAccountErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PaymentsAccountErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IPaymentsAccountErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PaymentsAccountErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.PaymentsAccountErrorEnum;

                        /**
                         * Verifies a PaymentsAccountErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PaymentsAccountErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PaymentsAccountErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.PaymentsAccountErrorEnum;

                        /**
                         * Creates a plain object from a PaymentsAccountErrorEnum message. Also converts values to other types if specified.
                         * @param m PaymentsAccountErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.PaymentsAccountErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PaymentsAccountErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IPolicyFindingErrorEnum): google.ads.googleads.v8.errors.PolicyFindingErrorEnum;

                        /**
                         * Encodes the specified PolicyFindingErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.PolicyFindingErrorEnum.verify|verify} messages.
                         * @param m PolicyFindingErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IPolicyFindingErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyFindingErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IPolicyFindingErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyFindingErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.PolicyFindingErrorEnum;

                        /**
                         * Verifies a PolicyFindingErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PolicyFindingErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PolicyFindingErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.PolicyFindingErrorEnum;

                        /**
                         * Creates a plain object from a PolicyFindingErrorEnum message. Also converts values to other types if specified.
                         * @param m PolicyFindingErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.PolicyFindingErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PolicyFindingErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IPolicyValidationParameterErrorEnum): google.ads.googleads.v8.errors.PolicyValidationParameterErrorEnum;

                        /**
                         * Encodes the specified PolicyValidationParameterErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.PolicyValidationParameterErrorEnum.verify|verify} messages.
                         * @param m PolicyValidationParameterErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IPolicyValidationParameterErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyValidationParameterErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IPolicyValidationParameterErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyValidationParameterErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.PolicyValidationParameterErrorEnum;

                        /**
                         * Verifies a PolicyValidationParameterErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PolicyValidationParameterErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PolicyValidationParameterErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.PolicyValidationParameterErrorEnum;

                        /**
                         * Creates a plain object from a PolicyValidationParameterErrorEnum message. Also converts values to other types if specified.
                         * @param m PolicyValidationParameterErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.PolicyValidationParameterErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PolicyValidationParameterErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IPolicyViolationErrorEnum): google.ads.googleads.v8.errors.PolicyViolationErrorEnum;

                        /**
                         * Encodes the specified PolicyViolationErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.PolicyViolationErrorEnum.verify|verify} messages.
                         * @param m PolicyViolationErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IPolicyViolationErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PolicyViolationErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IPolicyViolationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PolicyViolationErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.PolicyViolationErrorEnum;

                        /**
                         * Verifies a PolicyViolationErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PolicyViolationErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PolicyViolationErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.PolicyViolationErrorEnum;

                        /**
                         * Creates a plain object from a PolicyViolationErrorEnum message. Also converts values to other types if specified.
                         * @param m PolicyViolationErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.PolicyViolationErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PolicyViolationErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace PolicyViolationErrorEnum {

                        /** PolicyViolationError enum. */
                        enum PolicyViolationError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            POLICY_ERROR = 2
                        }
                    }

                    /** Properties of a QueryErrorEnum. */
                    interface IQueryErrorEnum {
                    }

                    /** Represents a QueryErrorEnum. */
                    class QueryErrorEnum implements IQueryErrorEnum {

                        /**
                         * Constructs a new QueryErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IQueryErrorEnum): google.ads.googleads.v8.errors.QueryErrorEnum;

                        /**
                         * Encodes the specified QueryErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.QueryErrorEnum.verify|verify} messages.
                         * @param m QueryErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IQueryErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified QueryErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IQueryErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a QueryErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.QueryErrorEnum;

                        /**
                         * Verifies a QueryErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a QueryErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns QueryErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.QueryErrorEnum;

                        /**
                         * Creates a plain object from a QueryErrorEnum message. Also converts values to other types if specified.
                         * @param m QueryErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.QueryErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this QueryErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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,
                            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,
                            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
                        }
                    }

                    /** Properties of a QuotaErrorEnum. */
                    interface IQuotaErrorEnum {
                    }

                    /** Represents a QuotaErrorEnum. */
                    class QuotaErrorEnum implements IQuotaErrorEnum {

                        /**
                         * Constructs a new QuotaErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IQuotaErrorEnum): google.ads.googleads.v8.errors.QuotaErrorEnum;

                        /**
                         * Encodes the specified QuotaErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.QuotaErrorEnum.verify|verify} messages.
                         * @param m QuotaErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IQuotaErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified QuotaErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IQuotaErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a QuotaErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.QuotaErrorEnum;

                        /**
                         * Verifies a QuotaErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a QuotaErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns QuotaErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.QuotaErrorEnum;

                        /**
                         * Creates a plain object from a QuotaErrorEnum message. Also converts values to other types if specified.
                         * @param m QuotaErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.QuotaErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this QuotaErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace QuotaErrorEnum {

                        /** QuotaError enum. */
                        enum QuotaError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            RESOURCE_EXHAUSTED = 2,
                            ACCESS_PROHIBITED = 3,
                            RESOURCE_TEMPORARILY_EXHAUSTED = 4
                        }
                    }

                    /** Properties of a RangeErrorEnum. */
                    interface IRangeErrorEnum {
                    }

                    /** Represents a RangeErrorEnum. */
                    class RangeErrorEnum implements IRangeErrorEnum {

                        /**
                         * Constructs a new RangeErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IRangeErrorEnum): google.ads.googleads.v8.errors.RangeErrorEnum;

                        /**
                         * Encodes the specified RangeErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.RangeErrorEnum.verify|verify} messages.
                         * @param m RangeErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IRangeErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RangeErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IRangeErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RangeErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.RangeErrorEnum;

                        /**
                         * Verifies a RangeErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RangeErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns RangeErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.RangeErrorEnum;

                        /**
                         * Creates a plain object from a RangeErrorEnum message. Also converts values to other types if specified.
                         * @param m RangeErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.RangeErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RangeErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IReachPlanErrorEnum): google.ads.googleads.v8.errors.ReachPlanErrorEnum;

                        /**
                         * Encodes the specified ReachPlanErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.ReachPlanErrorEnum.verify|verify} messages.
                         * @param m ReachPlanErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IReachPlanErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ReachPlanErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IReachPlanErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ReachPlanErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.ReachPlanErrorEnum;

                        /**
                         * Verifies a ReachPlanErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ReachPlanErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ReachPlanErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.ReachPlanErrorEnum;

                        /**
                         * Creates a plain object from a ReachPlanErrorEnum message. Also converts values to other types if specified.
                         * @param m ReachPlanErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.ReachPlanErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ReachPlanErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace ReachPlanErrorEnum {

                        /** ReachPlanError enum. */
                        enum ReachPlanError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            NOT_FORECASTABLE_MISSING_RATE = 2
                        }
                    }

                    /** Properties of a RecommendationErrorEnum. */
                    interface IRecommendationErrorEnum {
                    }

                    /** Represents a RecommendationErrorEnum. */
                    class RecommendationErrorEnum implements IRecommendationErrorEnum {

                        /**
                         * Constructs a new RecommendationErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IRecommendationErrorEnum): google.ads.googleads.v8.errors.RecommendationErrorEnum;

                        /**
                         * Encodes the specified RecommendationErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.RecommendationErrorEnum.verify|verify} messages.
                         * @param m RecommendationErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IRecommendationErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RecommendationErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IRecommendationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RecommendationErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.RecommendationErrorEnum;

                        /**
                         * Verifies a RecommendationErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RecommendationErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns RecommendationErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.RecommendationErrorEnum;

                        /**
                         * Creates a plain object from a RecommendationErrorEnum message. Also converts values to other types if specified.
                         * @param m RecommendationErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.RecommendationErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RecommendationErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a RegionCodeErrorEnum. */
                    interface IRegionCodeErrorEnum {
                    }

                    /** Represents a RegionCodeErrorEnum. */
                    class RegionCodeErrorEnum implements IRegionCodeErrorEnum {

                        /**
                         * Constructs a new RegionCodeErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IRegionCodeErrorEnum): google.ads.googleads.v8.errors.RegionCodeErrorEnum;

                        /**
                         * Encodes the specified RegionCodeErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.RegionCodeErrorEnum.verify|verify} messages.
                         * @param m RegionCodeErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IRegionCodeErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RegionCodeErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IRegionCodeErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RegionCodeErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.RegionCodeErrorEnum;

                        /**
                         * Verifies a RegionCodeErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RegionCodeErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns RegionCodeErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.RegionCodeErrorEnum;

                        /**
                         * Creates a plain object from a RegionCodeErrorEnum message. Also converts values to other types if specified.
                         * @param m RegionCodeErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.RegionCodeErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RegionCodeErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IRequestErrorEnum): google.ads.googleads.v8.errors.RequestErrorEnum;

                        /**
                         * Encodes the specified RequestErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.RequestErrorEnum.verify|verify} messages.
                         * @param m RequestErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IRequestErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RequestErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IRequestErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RequestErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.RequestErrorEnum;

                        /**
                         * Verifies a RequestErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RequestErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns RequestErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.RequestErrorEnum;

                        /**
                         * Creates a plain object from a RequestErrorEnum message. Also converts values to other types if specified.
                         * @param m RequestErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.RequestErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RequestErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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,
                            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
                        }
                    }

                    /** Properties of a ResourceAccessDeniedErrorEnum. */
                    interface IResourceAccessDeniedErrorEnum {
                    }

                    /** Represents a ResourceAccessDeniedErrorEnum. */
                    class ResourceAccessDeniedErrorEnum implements IResourceAccessDeniedErrorEnum {

                        /**
                         * Constructs a new ResourceAccessDeniedErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IResourceAccessDeniedErrorEnum): google.ads.googleads.v8.errors.ResourceAccessDeniedErrorEnum;

                        /**
                         * Encodes the specified ResourceAccessDeniedErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.ResourceAccessDeniedErrorEnum.verify|verify} messages.
                         * @param m ResourceAccessDeniedErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IResourceAccessDeniedErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ResourceAccessDeniedErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IResourceAccessDeniedErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ResourceAccessDeniedErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.ResourceAccessDeniedErrorEnum;

                        /**
                         * Verifies a ResourceAccessDeniedErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ResourceAccessDeniedErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ResourceAccessDeniedErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.ResourceAccessDeniedErrorEnum;

                        /**
                         * Creates a plain object from a ResourceAccessDeniedErrorEnum message. Also converts values to other types if specified.
                         * @param m ResourceAccessDeniedErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.ResourceAccessDeniedErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ResourceAccessDeniedErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IResourceCountLimitExceededErrorEnum): google.ads.googleads.v8.errors.ResourceCountLimitExceededErrorEnum;

                        /**
                         * Encodes the specified ResourceCountLimitExceededErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.ResourceCountLimitExceededErrorEnum.verify|verify} messages.
                         * @param m ResourceCountLimitExceededErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IResourceCountLimitExceededErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ResourceCountLimitExceededErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IResourceCountLimitExceededErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ResourceCountLimitExceededErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.ResourceCountLimitExceededErrorEnum;

                        /**
                         * Verifies a ResourceCountLimitExceededErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ResourceCountLimitExceededErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ResourceCountLimitExceededErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.ResourceCountLimitExceededErrorEnum;

                        /**
                         * Creates a plain object from a ResourceCountLimitExceededErrorEnum message. Also converts values to other types if specified.
                         * @param m ResourceCountLimitExceededErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.ResourceCountLimitExceededErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ResourceCountLimitExceededErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 SettingErrorEnum. */
                    interface ISettingErrorEnum {
                    }

                    /** Represents a SettingErrorEnum. */
                    class SettingErrorEnum implements ISettingErrorEnum {

                        /**
                         * Constructs a new SettingErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.ISettingErrorEnum): google.ads.googleads.v8.errors.SettingErrorEnum;

                        /**
                         * Encodes the specified SettingErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.SettingErrorEnum.verify|verify} messages.
                         * @param m SettingErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.ISettingErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SettingErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ISettingErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SettingErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.SettingErrorEnum;

                        /**
                         * Verifies a SettingErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SettingErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SettingErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.SettingErrorEnum;

                        /**
                         * Creates a plain object from a SettingErrorEnum message. Also converts values to other types if specified.
                         * @param m SettingErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.SettingErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SettingErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a SharedCriterionErrorEnum. */
                    interface ISharedCriterionErrorEnum {
                    }

                    /** Represents a SharedCriterionErrorEnum. */
                    class SharedCriterionErrorEnum implements ISharedCriterionErrorEnum {

                        /**
                         * Constructs a new SharedCriterionErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.ISharedCriterionErrorEnum): google.ads.googleads.v8.errors.SharedCriterionErrorEnum;

                        /**
                         * Encodes the specified SharedCriterionErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.SharedCriterionErrorEnum.verify|verify} messages.
                         * @param m SharedCriterionErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.ISharedCriterionErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SharedCriterionErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ISharedCriterionErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SharedCriterionErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.SharedCriterionErrorEnum;

                        /**
                         * Verifies a SharedCriterionErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SharedCriterionErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SharedCriterionErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.SharedCriterionErrorEnum;

                        /**
                         * Creates a plain object from a SharedCriterionErrorEnum message. Also converts values to other types if specified.
                         * @param m SharedCriterionErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.SharedCriterionErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SharedCriterionErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.ISharedSetErrorEnum): google.ads.googleads.v8.errors.SharedSetErrorEnum;

                        /**
                         * Encodes the specified SharedSetErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.SharedSetErrorEnum.verify|verify} messages.
                         * @param m SharedSetErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.ISharedSetErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SharedSetErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ISharedSetErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SharedSetErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.SharedSetErrorEnum;

                        /**
                         * Verifies a SharedSetErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SharedSetErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SharedSetErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.SharedSetErrorEnum;

                        /**
                         * Creates a plain object from a SharedSetErrorEnum message. Also converts values to other types if specified.
                         * @param m SharedSetErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.SharedSetErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SharedSetErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 SizeLimitErrorEnum. */
                    interface ISizeLimitErrorEnum {
                    }

                    /** Represents a SizeLimitErrorEnum. */
                    class SizeLimitErrorEnum implements ISizeLimitErrorEnum {

                        /**
                         * Constructs a new SizeLimitErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.ISizeLimitErrorEnum): google.ads.googleads.v8.errors.SizeLimitErrorEnum;

                        /**
                         * Encodes the specified SizeLimitErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.SizeLimitErrorEnum.verify|verify} messages.
                         * @param m SizeLimitErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.ISizeLimitErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SizeLimitErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ISizeLimitErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SizeLimitErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.SizeLimitErrorEnum;

                        /**
                         * Verifies a SizeLimitErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SizeLimitErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SizeLimitErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.SizeLimitErrorEnum;

                        /**
                         * Creates a plain object from a SizeLimitErrorEnum message. Also converts values to other types if specified.
                         * @param m SizeLimitErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.SizeLimitErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SizeLimitErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace SizeLimitErrorEnum {

                        /** SizeLimitError enum. */
                        enum SizeLimitError {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            REQUEST_SIZE_LIMIT_EXCEEDED = 2,
                            RESPONSE_SIZE_LIMIT_EXCEEDED = 3
                        }
                    }

                    /** Properties of a StringFormatErrorEnum. */
                    interface IStringFormatErrorEnum {
                    }

                    /** Represents a StringFormatErrorEnum. */
                    class StringFormatErrorEnum implements IStringFormatErrorEnum {

                        /**
                         * Constructs a new StringFormatErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IStringFormatErrorEnum): google.ads.googleads.v8.errors.StringFormatErrorEnum;

                        /**
                         * Encodes the specified StringFormatErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.StringFormatErrorEnum.verify|verify} messages.
                         * @param m StringFormatErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IStringFormatErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified StringFormatErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IStringFormatErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a StringFormatErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.StringFormatErrorEnum;

                        /**
                         * Verifies a StringFormatErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a StringFormatErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns StringFormatErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.StringFormatErrorEnum;

                        /**
                         * Creates a plain object from a StringFormatErrorEnum message. Also converts values to other types if specified.
                         * @param m StringFormatErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.StringFormatErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this StringFormatErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IStringLengthErrorEnum): google.ads.googleads.v8.errors.StringLengthErrorEnum;

                        /**
                         * Encodes the specified StringLengthErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.StringLengthErrorEnum.verify|verify} messages.
                         * @param m StringLengthErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IStringLengthErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified StringLengthErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IStringLengthErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a StringLengthErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.StringLengthErrorEnum;

                        /**
                         * Verifies a StringLengthErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a StringLengthErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns StringLengthErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.StringLengthErrorEnum;

                        /**
                         * Creates a plain object from a StringLengthErrorEnum message. Also converts values to other types if specified.
                         * @param m StringLengthErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.StringLengthErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this StringLengthErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IThirdPartyAppAnalyticsLinkErrorEnum): google.ads.googleads.v8.errors.ThirdPartyAppAnalyticsLinkErrorEnum;

                        /**
                         * Encodes the specified ThirdPartyAppAnalyticsLinkErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.ThirdPartyAppAnalyticsLinkErrorEnum.verify|verify} messages.
                         * @param m ThirdPartyAppAnalyticsLinkErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IThirdPartyAppAnalyticsLinkErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ThirdPartyAppAnalyticsLinkErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IThirdPartyAppAnalyticsLinkErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ThirdPartyAppAnalyticsLinkErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.ThirdPartyAppAnalyticsLinkErrorEnum;

                        /**
                         * Verifies a ThirdPartyAppAnalyticsLinkErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ThirdPartyAppAnalyticsLinkErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ThirdPartyAppAnalyticsLinkErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.ThirdPartyAppAnalyticsLinkErrorEnum;

                        /**
                         * Creates a plain object from a ThirdPartyAppAnalyticsLinkErrorEnum message. Also converts values to other types if specified.
                         * @param m ThirdPartyAppAnalyticsLinkErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.ThirdPartyAppAnalyticsLinkErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ThirdPartyAppAnalyticsLinkErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.ITimeZoneErrorEnum): google.ads.googleads.v8.errors.TimeZoneErrorEnum;

                        /**
                         * Encodes the specified TimeZoneErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.TimeZoneErrorEnum.verify|verify} messages.
                         * @param m TimeZoneErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.ITimeZoneErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TimeZoneErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.ITimeZoneErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TimeZoneErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.TimeZoneErrorEnum;

                        /**
                         * Verifies a TimeZoneErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TimeZoneErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TimeZoneErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.TimeZoneErrorEnum;

                        /**
                         * Creates a plain object from a TimeZoneErrorEnum message. Also converts values to other types if specified.
                         * @param m TimeZoneErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.TimeZoneErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TimeZoneErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IUrlFieldErrorEnum): google.ads.googleads.v8.errors.UrlFieldErrorEnum;

                        /**
                         * Encodes the specified UrlFieldErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.UrlFieldErrorEnum.verify|verify} messages.
                         * @param m UrlFieldErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IUrlFieldErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UrlFieldErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IUrlFieldErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UrlFieldErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.UrlFieldErrorEnum;

                        /**
                         * Verifies an UrlFieldErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an UrlFieldErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UrlFieldErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.UrlFieldErrorEnum;

                        /**
                         * Creates a plain object from an UrlFieldErrorEnum message. Also converts values to other types if specified.
                         * @param m UrlFieldErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.UrlFieldErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UrlFieldErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a UserDataErrorEnum. */
                    interface IUserDataErrorEnum {
                    }

                    /** Represents a UserDataErrorEnum. */
                    class UserDataErrorEnum implements IUserDataErrorEnum {

                        /**
                         * Constructs a new UserDataErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IUserDataErrorEnum): google.ads.googleads.v8.errors.UserDataErrorEnum;

                        /**
                         * Encodes the specified UserDataErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.UserDataErrorEnum.verify|verify} messages.
                         * @param m UserDataErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IUserDataErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserDataErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IUserDataErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserDataErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.UserDataErrorEnum;

                        /**
                         * Verifies a UserDataErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserDataErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserDataErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.UserDataErrorEnum;

                        /**
                         * Creates a plain object from a UserDataErrorEnum message. Also converts values to other types if specified.
                         * @param m UserDataErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.UserDataErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserDataErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 UserListErrorEnum. */
                    interface IUserListErrorEnum {
                    }

                    /** Represents a UserListErrorEnum. */
                    class UserListErrorEnum implements IUserListErrorEnum {

                        /**
                         * Constructs a new UserListErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IUserListErrorEnum): google.ads.googleads.v8.errors.UserListErrorEnum;

                        /**
                         * Encodes the specified UserListErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.UserListErrorEnum.verify|verify} messages.
                         * @param m UserListErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IUserListErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IUserListErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.UserListErrorEnum;

                        /**
                         * Verifies a UserListErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserListErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.UserListErrorEnum;

                        /**
                         * Creates a plain object from a UserListErrorEnum message. Also converts values to other types if specified.
                         * @param m UserListErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.UserListErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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
                        }
                    }

                    /** Properties of a YoutubeVideoRegistrationErrorEnum. */
                    interface IYoutubeVideoRegistrationErrorEnum {
                    }

                    /** Represents a YoutubeVideoRegistrationErrorEnum. */
                    class YoutubeVideoRegistrationErrorEnum implements IYoutubeVideoRegistrationErrorEnum {

                        /**
                         * Constructs a new YoutubeVideoRegistrationErrorEnum.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.errors.IYoutubeVideoRegistrationErrorEnum): google.ads.googleads.v8.errors.YoutubeVideoRegistrationErrorEnum;

                        /**
                         * Encodes the specified YoutubeVideoRegistrationErrorEnum message. Does not implicitly {@link google.ads.googleads.v8.errors.YoutubeVideoRegistrationErrorEnum.verify|verify} messages.
                         * @param m YoutubeVideoRegistrationErrorEnum message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.errors.IYoutubeVideoRegistrationErrorEnum, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified YoutubeVideoRegistrationErrorEnum message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.errors.IYoutubeVideoRegistrationErrorEnum, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a YoutubeVideoRegistrationErrorEnum message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.errors.YoutubeVideoRegistrationErrorEnum;

                        /**
                         * Verifies a YoutubeVideoRegistrationErrorEnum message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a YoutubeVideoRegistrationErrorEnum message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns YoutubeVideoRegistrationErrorEnum
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.errors.YoutubeVideoRegistrationErrorEnum;

                        /**
                         * Creates a plain object from a YoutubeVideoRegistrationErrorEnum message. Also converts values to other types if specified.
                         * @param m YoutubeVideoRegistrationErrorEnum
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.errors.YoutubeVideoRegistrationErrorEnum, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this YoutubeVideoRegistrationErrorEnum to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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.v8.enums.BiddingStrategyTypeEnum.BiddingStrategyType|keyof typeof google.ads.googleads.v8.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.v8.resources.AccessibleBiddingStrategy.IMaximizeConversionValue|null);

                        /** AccessibleBiddingStrategy maximize_conversions */
                        maximize_conversions?: (google.ads.googleads.v8.resources.AccessibleBiddingStrategy.IMaximizeConversions|null);

                        /** AccessibleBiddingStrategy target_cpa */
                        target_cpa?: (google.ads.googleads.v8.resources.AccessibleBiddingStrategy.ITargetCpa|null);

                        /** AccessibleBiddingStrategy target_impression_share */
                        target_impression_share?: (google.ads.googleads.v8.resources.AccessibleBiddingStrategy.ITargetImpressionShare|null);

                        /** AccessibleBiddingStrategy target_roas */
                        target_roas?: (google.ads.googleads.v8.resources.AccessibleBiddingStrategy.ITargetRoas|null);

                        /** AccessibleBiddingStrategy target_spend */
                        target_spend?: (google.ads.googleads.v8.resources.AccessibleBiddingStrategy.ITargetSpend|null);
                    }

                    /** Represents an AccessibleBiddingStrategy. */
                    class AccessibleBiddingStrategy implements IAccessibleBiddingStrategy {

                        /**
                         * Constructs a new AccessibleBiddingStrategy.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.BiddingStrategyTypeEnum.BiddingStrategyType|keyof typeof google.ads.googleads.v8.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.v8.resources.AccessibleBiddingStrategy.IMaximizeConversionValue|null);

                        /** AccessibleBiddingStrategy maximize_conversions. */
                        public maximize_conversions?: (google.ads.googleads.v8.resources.AccessibleBiddingStrategy.IMaximizeConversions|null);

                        /** AccessibleBiddingStrategy target_cpa. */
                        public target_cpa?: (google.ads.googleads.v8.resources.AccessibleBiddingStrategy.ITargetCpa|null);

                        /** AccessibleBiddingStrategy target_impression_share. */
                        public target_impression_share?: (google.ads.googleads.v8.resources.AccessibleBiddingStrategy.ITargetImpressionShare|null);

                        /** AccessibleBiddingStrategy target_roas. */
                        public target_roas?: (google.ads.googleads.v8.resources.AccessibleBiddingStrategy.ITargetRoas|null);

                        /** AccessibleBiddingStrategy target_spend. */
                        public target_spend?: (google.ads.googleads.v8.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.v8.resources.IAccessibleBiddingStrategy): google.ads.googleads.v8.resources.AccessibleBiddingStrategy;

                        /**
                         * Encodes the specified AccessibleBiddingStrategy message. Does not implicitly {@link google.ads.googleads.v8.resources.AccessibleBiddingStrategy.verify|verify} messages.
                         * @param m AccessibleBiddingStrategy message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAccessibleBiddingStrategy, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccessibleBiddingStrategy message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IAccessibleBiddingStrategy, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccessibleBiddingStrategy message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AccessibleBiddingStrategy;

                        /**
                         * Verifies an AccessibleBiddingStrategy message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AccessibleBiddingStrategy message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AccessibleBiddingStrategy
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AccessibleBiddingStrategy;

                        /**
                         * Creates a plain object from an AccessibleBiddingStrategy message. Also converts values to other types if specified.
                         * @param m AccessibleBiddingStrategy
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AccessibleBiddingStrategy, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccessibleBiddingStrategy to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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.v8.resources.AccessibleBiddingStrategy.IMaximizeConversionValue): google.ads.googleads.v8.resources.AccessibleBiddingStrategy.MaximizeConversionValue;

                            /**
                             * Encodes the specified MaximizeConversionValue message. Does not implicitly {@link google.ads.googleads.v8.resources.AccessibleBiddingStrategy.MaximizeConversionValue.verify|verify} messages.
                             * @param m MaximizeConversionValue message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.AccessibleBiddingStrategy.IMaximizeConversionValue, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified MaximizeConversionValue message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.AccessibleBiddingStrategy.IMaximizeConversionValue, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a MaximizeConversionValue message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AccessibleBiddingStrategy.MaximizeConversionValue;

                            /**
                             * Verifies a MaximizeConversionValue message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a MaximizeConversionValue message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns MaximizeConversionValue
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AccessibleBiddingStrategy.MaximizeConversionValue;

                            /**
                             * Creates a plain object from a MaximizeConversionValue message. Also converts values to other types if specified.
                             * @param m MaximizeConversionValue
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.AccessibleBiddingStrategy.MaximizeConversionValue, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this MaximizeConversionValue to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a MaximizeConversions. */
                        interface IMaximizeConversions {

                            /** MaximizeConversions target_cpa */
                            target_cpa?: (number|null);
                        }

                        /** Represents a MaximizeConversions. */
                        class MaximizeConversions implements IMaximizeConversions {

                            /**
                             * Constructs a new MaximizeConversions.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.AccessibleBiddingStrategy.IMaximizeConversions);

                            /** MaximizeConversions target_cpa. */
                            public target_cpa: 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.v8.resources.AccessibleBiddingStrategy.IMaximizeConversions): google.ads.googleads.v8.resources.AccessibleBiddingStrategy.MaximizeConversions;

                            /**
                             * Encodes the specified MaximizeConversions message. Does not implicitly {@link google.ads.googleads.v8.resources.AccessibleBiddingStrategy.MaximizeConversions.verify|verify} messages.
                             * @param m MaximizeConversions message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.AccessibleBiddingStrategy.IMaximizeConversions, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified MaximizeConversions message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.AccessibleBiddingStrategy.IMaximizeConversions, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a MaximizeConversions message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AccessibleBiddingStrategy.MaximizeConversions;

                            /**
                             * Verifies a MaximizeConversions message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a MaximizeConversions message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns MaximizeConversions
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AccessibleBiddingStrategy.MaximizeConversions;

                            /**
                             * Creates a plain object from a MaximizeConversions message. Also converts values to other types if specified.
                             * @param m MaximizeConversions
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.AccessibleBiddingStrategy.MaximizeConversions, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this MaximizeConversions to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** 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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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);

                            /** TargetSpend _target_spend_micros. */
                            public _target_spend_micros?: "target_spend_micros";

                            /** TargetSpend _cpc_bid_ceiling_micros. */
                            public _cpc_bid_ceiling_micros?: "cpc_bid_ceiling_micros";

                            /**
                             * Creates a new TargetSpend instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TargetSpend instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.AccessibleBiddingStrategy.ITargetSpend): google.ads.googleads.v8.resources.AccessibleBiddingStrategy.TargetSpend;

                            /**
                             * Encodes the specified TargetSpend message. Does not implicitly {@link google.ads.googleads.v8.resources.AccessibleBiddingStrategy.TargetSpend.verify|verify} messages.
                             * @param m TargetSpend message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.AccessibleBiddingStrategy.ITargetSpend, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TargetSpend message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.AccessibleBiddingStrategy.ITargetSpend, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TargetSpend message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AccessibleBiddingStrategy.TargetSpend;

                            /**
                             * Verifies a TargetSpend message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TargetSpend message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns TargetSpend
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AccessibleBiddingStrategy.TargetSpend;

                            /**
                             * Creates a plain object from a TargetSpend message. Also converts values to other types if specified.
                             * @param m TargetSpend
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.AccessibleBiddingStrategy.TargetSpend, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TargetSpend to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** 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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.AccessibleBiddingStrategy.ITargetCpa);

                            /** TargetCpa target_cpa_micros. */
                            public target_cpa_micros?: (number|null);

                            /** TargetCpa _target_cpa_micros. */
                            public _target_cpa_micros?: "target_cpa_micros";

                            /**
                             * Creates a new TargetCpa instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TargetCpa instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.AccessibleBiddingStrategy.ITargetCpa): google.ads.googleads.v8.resources.AccessibleBiddingStrategy.TargetCpa;

                            /**
                             * Encodes the specified TargetCpa message. Does not implicitly {@link google.ads.googleads.v8.resources.AccessibleBiddingStrategy.TargetCpa.verify|verify} messages.
                             * @param m TargetCpa message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.AccessibleBiddingStrategy.ITargetCpa, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TargetCpa message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.AccessibleBiddingStrategy.ITargetCpa, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TargetCpa message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AccessibleBiddingStrategy.TargetCpa;

                            /**
                             * Verifies a TargetCpa message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TargetCpa message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns TargetCpa
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AccessibleBiddingStrategy.TargetCpa;

                            /**
                             * Creates a plain object from a TargetCpa message. Also converts values to other types if specified.
                             * @param m TargetCpa
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.AccessibleBiddingStrategy.TargetCpa, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TargetCpa to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a TargetImpressionShare. */
                        interface ITargetImpressionShare {

                            /** TargetImpressionShare location */
                            location?: (google.ads.googleads.v8.enums.TargetImpressionShareLocationEnum.TargetImpressionShareLocation|keyof typeof google.ads.googleads.v8.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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.AccessibleBiddingStrategy.ITargetImpressionShare);

                            /** TargetImpressionShare location. */
                            public location: (google.ads.googleads.v8.enums.TargetImpressionShareLocationEnum.TargetImpressionShareLocation|keyof typeof google.ads.googleads.v8.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);

                            /** TargetImpressionShare _location_fraction_micros. */
                            public _location_fraction_micros?: "location_fraction_micros";

                            /** TargetImpressionShare _cpc_bid_ceiling_micros. */
                            public _cpc_bid_ceiling_micros?: "cpc_bid_ceiling_micros";

                            /**
                             * Creates a new TargetImpressionShare instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TargetImpressionShare instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.AccessibleBiddingStrategy.ITargetImpressionShare): google.ads.googleads.v8.resources.AccessibleBiddingStrategy.TargetImpressionShare;

                            /**
                             * Encodes the specified TargetImpressionShare message. Does not implicitly {@link google.ads.googleads.v8.resources.AccessibleBiddingStrategy.TargetImpressionShare.verify|verify} messages.
                             * @param m TargetImpressionShare message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.AccessibleBiddingStrategy.ITargetImpressionShare, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TargetImpressionShare message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.AccessibleBiddingStrategy.ITargetImpressionShare, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TargetImpressionShare message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AccessibleBiddingStrategy.TargetImpressionShare;

                            /**
                             * Verifies a TargetImpressionShare message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TargetImpressionShare message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns TargetImpressionShare
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AccessibleBiddingStrategy.TargetImpressionShare;

                            /**
                             * Creates a plain object from a TargetImpressionShare message. Also converts values to other types if specified.
                             * @param m TargetImpressionShare
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.AccessibleBiddingStrategy.TargetImpressionShare, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TargetImpressionShare to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** 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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.AccessibleBiddingStrategy.ITargetRoas);

                            /** TargetRoas target_roas. */
                            public target_roas?: (number|null);

                            /** TargetRoas _target_roas. */
                            public _target_roas?: "target_roas";

                            /**
                             * Creates a new TargetRoas instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TargetRoas instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.AccessibleBiddingStrategy.ITargetRoas): google.ads.googleads.v8.resources.AccessibleBiddingStrategy.TargetRoas;

                            /**
                             * Encodes the specified TargetRoas message. Does not implicitly {@link google.ads.googleads.v8.resources.AccessibleBiddingStrategy.TargetRoas.verify|verify} messages.
                             * @param m TargetRoas message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.AccessibleBiddingStrategy.ITargetRoas, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TargetRoas message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.AccessibleBiddingStrategy.ITargetRoas, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TargetRoas message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AccessibleBiddingStrategy.TargetRoas;

                            /**
                             * Verifies a TargetRoas message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TargetRoas message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns TargetRoas
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AccessibleBiddingStrategy.TargetRoas;

                            /**
                             * Creates a plain object from a TargetRoas message. Also converts values to other types if specified.
                             * @param m TargetRoas
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.AccessibleBiddingStrategy.TargetRoas, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TargetRoas to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }
                    }

                    /** 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.v8.enums.AccountBudgetStatusEnum.AccountBudgetStatus|keyof typeof google.ads.googleads.v8.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.v8.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.v8.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v8.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.v8.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v8.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.v8.enums.SpendingLimitTypeEnum.SpendingLimitType|keyof typeof google.ads.googleads.v8.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.v8.enums.SpendingLimitTypeEnum.SpendingLimitType|keyof typeof google.ads.googleads.v8.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.v8.enums.SpendingLimitTypeEnum.SpendingLimitType|keyof typeof google.ads.googleads.v8.enums.SpendingLimitTypeEnum.SpendingLimitType|null);
                    }

                    /** Represents an AccountBudget. */
                    class AccountBudget implements IAccountBudget {

                        /**
                         * Constructs a new AccountBudget.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.AccountBudgetStatusEnum.AccountBudgetStatus|keyof typeof google.ads.googleads.v8.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.v8.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.v8.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v8.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.v8.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v8.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.v8.enums.SpendingLimitTypeEnum.SpendingLimitType|keyof typeof google.ads.googleads.v8.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.v8.enums.SpendingLimitTypeEnum.SpendingLimitType|keyof typeof google.ads.googleads.v8.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.v8.enums.SpendingLimitTypeEnum.SpendingLimitType|keyof typeof google.ads.googleads.v8.enums.SpendingLimitTypeEnum.SpendingLimitType|null);

                        /** AccountBudget _id. */
                        public _id?: "id";

                        /** AccountBudget _billing_setup. */
                        public _billing_setup?: "billing_setup";

                        /** AccountBudget _name. */
                        public _name?: "name";

                        /** AccountBudget _proposed_start_date_time. */
                        public _proposed_start_date_time?: "proposed_start_date_time";

                        /** AccountBudget _approved_start_date_time. */
                        public _approved_start_date_time?: "approved_start_date_time";

                        /** AccountBudget _purchase_order_number. */
                        public _purchase_order_number?: "purchase_order_number";

                        /** AccountBudget _notes. */
                        public _notes?: "notes";

                        /** 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.v8.resources.IAccountBudget): google.ads.googleads.v8.resources.AccountBudget;

                        /**
                         * Encodes the specified AccountBudget message. Does not implicitly {@link google.ads.googleads.v8.resources.AccountBudget.verify|verify} messages.
                         * @param m AccountBudget message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAccountBudget, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccountBudget message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IAccountBudget, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccountBudget message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AccountBudget;

                        /**
                         * Verifies an AccountBudget message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AccountBudget message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AccountBudget
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AccountBudget;

                        /**
                         * Creates a plain object from an AccountBudget message. Also converts values to other types if specified.
                         * @param m AccountBudget
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AccountBudget, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccountBudget to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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.v8.enums.AccountBudgetProposalTypeEnum.AccountBudgetProposalType|keyof typeof google.ads.googleads.v8.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.v8.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v8.enums.TimeTypeEnum.TimeType|null);

                            /** PendingAccountBudgetProposal spending_limit_micros */
                            spending_limit_micros?: (number|null);

                            /** PendingAccountBudgetProposal spending_limit_type */
                            spending_limit_type?: (google.ads.googleads.v8.enums.SpendingLimitTypeEnum.SpendingLimitType|keyof typeof google.ads.googleads.v8.enums.SpendingLimitTypeEnum.SpendingLimitType|null);
                        }

                        /** Represents a PendingAccountBudgetProposal. */
                        class PendingAccountBudgetProposal implements IPendingAccountBudgetProposal {

                            /**
                             * Constructs a new PendingAccountBudgetProposal.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.AccountBudget.IPendingAccountBudgetProposal);

                            /** PendingAccountBudgetProposal account_budget_proposal. */
                            public account_budget_proposal?: (string|null);

                            /** PendingAccountBudgetProposal proposal_type. */
                            public proposal_type: (google.ads.googleads.v8.enums.AccountBudgetProposalTypeEnum.AccountBudgetProposalType|keyof typeof google.ads.googleads.v8.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.v8.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v8.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.v8.enums.SpendingLimitTypeEnum.SpendingLimitType|keyof typeof google.ads.googleads.v8.enums.SpendingLimitTypeEnum.SpendingLimitType|null);

                            /** PendingAccountBudgetProposal _account_budget_proposal. */
                            public _account_budget_proposal?: "account_budget_proposal";

                            /** PendingAccountBudgetProposal _name. */
                            public _name?: "name";

                            /** PendingAccountBudgetProposal _start_date_time. */
                            public _start_date_time?: "start_date_time";

                            /** PendingAccountBudgetProposal _purchase_order_number. */
                            public _purchase_order_number?: "purchase_order_number";

                            /** PendingAccountBudgetProposal _notes. */
                            public _notes?: "notes";

                            /** PendingAccountBudgetProposal _creation_date_time. */
                            public _creation_date_time?: "creation_date_time";

                            /** 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.v8.resources.AccountBudget.IPendingAccountBudgetProposal): google.ads.googleads.v8.resources.AccountBudget.PendingAccountBudgetProposal;

                            /**
                             * Encodes the specified PendingAccountBudgetProposal message. Does not implicitly {@link google.ads.googleads.v8.resources.AccountBudget.PendingAccountBudgetProposal.verify|verify} messages.
                             * @param m PendingAccountBudgetProposal message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.AccountBudget.IPendingAccountBudgetProposal, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified PendingAccountBudgetProposal message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.AccountBudget.IPendingAccountBudgetProposal, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a PendingAccountBudgetProposal message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AccountBudget.PendingAccountBudgetProposal;

                            /**
                             * Verifies a PendingAccountBudgetProposal message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a PendingAccountBudgetProposal message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns PendingAccountBudgetProposal
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AccountBudget.PendingAccountBudgetProposal;

                            /**
                             * Creates a plain object from a PendingAccountBudgetProposal message. Also converts values to other types if specified.
                             * @param m PendingAccountBudgetProposal
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.AccountBudget.PendingAccountBudgetProposal, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this PendingAccountBudgetProposal to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }
                    }

                    /** 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.v8.enums.AccountBudgetProposalTypeEnum.AccountBudgetProposalType|keyof typeof google.ads.googleads.v8.enums.AccountBudgetProposalTypeEnum.AccountBudgetProposalType|null);

                        /** AccountBudgetProposal status */
                        status?: (google.ads.googleads.v8.enums.AccountBudgetProposalStatusEnum.AccountBudgetProposalStatus|keyof typeof google.ads.googleads.v8.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.v8.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v8.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.v8.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v8.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.v8.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v8.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.v8.enums.SpendingLimitTypeEnum.SpendingLimitType|keyof typeof google.ads.googleads.v8.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.v8.enums.SpendingLimitTypeEnum.SpendingLimitType|keyof typeof google.ads.googleads.v8.enums.SpendingLimitTypeEnum.SpendingLimitType|null);
                    }

                    /** Represents an AccountBudgetProposal. */
                    class AccountBudgetProposal implements IAccountBudgetProposal {

                        /**
                         * Constructs a new AccountBudgetProposal.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.AccountBudgetProposalTypeEnum.AccountBudgetProposalType|keyof typeof google.ads.googleads.v8.enums.AccountBudgetProposalTypeEnum.AccountBudgetProposalType);

                        /** AccountBudgetProposal status. */
                        public status: (google.ads.googleads.v8.enums.AccountBudgetProposalStatusEnum.AccountBudgetProposalStatus|keyof typeof google.ads.googleads.v8.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.v8.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v8.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.v8.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v8.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.v8.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v8.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.v8.enums.SpendingLimitTypeEnum.SpendingLimitType|keyof typeof google.ads.googleads.v8.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.v8.enums.SpendingLimitTypeEnum.SpendingLimitType|keyof typeof google.ads.googleads.v8.enums.SpendingLimitTypeEnum.SpendingLimitType|null);

                        /** AccountBudgetProposal _id. */
                        public _id?: "id";

                        /** AccountBudgetProposal _billing_setup. */
                        public _billing_setup?: "billing_setup";

                        /** AccountBudgetProposal _account_budget. */
                        public _account_budget?: "account_budget";

                        /** AccountBudgetProposal _proposed_name. */
                        public _proposed_name?: "proposed_name";

                        /** AccountBudgetProposal _approved_start_date_time. */
                        public _approved_start_date_time?: "approved_start_date_time";

                        /** AccountBudgetProposal _proposed_purchase_order_number. */
                        public _proposed_purchase_order_number?: "proposed_purchase_order_number";

                        /** AccountBudgetProposal _proposed_notes. */
                        public _proposed_notes?: "proposed_notes";

                        /** AccountBudgetProposal _creation_date_time. */
                        public _creation_date_time?: "creation_date_time";

                        /** AccountBudgetProposal _approval_date_time. */
                        public _approval_date_time?: "approval_date_time";

                        /** 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.v8.resources.IAccountBudgetProposal): google.ads.googleads.v8.resources.AccountBudgetProposal;

                        /**
                         * Encodes the specified AccountBudgetProposal message. Does not implicitly {@link google.ads.googleads.v8.resources.AccountBudgetProposal.verify|verify} messages.
                         * @param m AccountBudgetProposal message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAccountBudgetProposal, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccountBudgetProposal message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IAccountBudgetProposal, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccountBudgetProposal message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AccountBudgetProposal;

                        /**
                         * Verifies an AccountBudgetProposal message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AccountBudgetProposal message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AccountBudgetProposal
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AccountBudgetProposal;

                        /**
                         * Creates a plain object from an AccountBudgetProposal message. Also converts values to other types if specified.
                         * @param m AccountBudgetProposal
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AccountBudgetProposal, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccountBudgetProposal to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.AccountLinkStatusEnum.AccountLinkStatus|keyof typeof google.ads.googleads.v8.enums.AccountLinkStatusEnum.AccountLinkStatus|null);

                        /** AccountLink type */
                        type?: (google.ads.googleads.v8.enums.LinkedAccountTypeEnum.LinkedAccountType|keyof typeof google.ads.googleads.v8.enums.LinkedAccountTypeEnum.LinkedAccountType|null);

                        /** AccountLink third_party_app_analytics */
                        third_party_app_analytics?: (google.ads.googleads.v8.resources.IThirdPartyAppAnalyticsLinkIdentifier|null);

                        /** AccountLink data_partner */
                        data_partner?: (google.ads.googleads.v8.resources.IDataPartnerLinkIdentifier|null);

                        /** AccountLink google_ads */
                        google_ads?: (google.ads.googleads.v8.resources.IGoogleAdsLinkIdentifier|null);
                    }

                    /** Represents an AccountLink. */
                    class AccountLink implements IAccountLink {

                        /**
                         * Constructs a new AccountLink.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.AccountLinkStatusEnum.AccountLinkStatus|keyof typeof google.ads.googleads.v8.enums.AccountLinkStatusEnum.AccountLinkStatus);

                        /** AccountLink type. */
                        public type: (google.ads.googleads.v8.enums.LinkedAccountTypeEnum.LinkedAccountType|keyof typeof google.ads.googleads.v8.enums.LinkedAccountTypeEnum.LinkedAccountType);

                        /** AccountLink third_party_app_analytics. */
                        public third_party_app_analytics?: (google.ads.googleads.v8.resources.IThirdPartyAppAnalyticsLinkIdentifier|null);

                        /** AccountLink data_partner. */
                        public data_partner?: (google.ads.googleads.v8.resources.IDataPartnerLinkIdentifier|null);

                        /** AccountLink google_ads. */
                        public google_ads?: (google.ads.googleads.v8.resources.IGoogleAdsLinkIdentifier|null);

                        /** AccountLink _account_link_id. */
                        public _account_link_id?: "account_link_id";

                        /** AccountLink linked_account. */
                        public linked_account?: ("third_party_app_analytics"|"data_partner"|"google_ads");

                        /**
                         * Creates a new AccountLink instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AccountLink instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IAccountLink): google.ads.googleads.v8.resources.AccountLink;

                        /**
                         * Encodes the specified AccountLink message. Does not implicitly {@link google.ads.googleads.v8.resources.AccountLink.verify|verify} messages.
                         * @param m AccountLink message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAccountLink, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccountLink message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IAccountLink, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccountLink message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AccountLink;

                        /**
                         * Verifies an AccountLink message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AccountLink message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AccountLink
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AccountLink;

                        /**
                         * Creates a plain object from an AccountLink message. Also converts values to other types if specified.
                         * @param m AccountLink
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AccountLink, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccountLink to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.MobileAppVendorEnum.MobileAppVendor|keyof typeof google.ads.googleads.v8.enums.MobileAppVendorEnum.MobileAppVendor|null);
                    }

                    /** Represents a ThirdPartyAppAnalyticsLinkIdentifier. */
                    class ThirdPartyAppAnalyticsLinkIdentifier implements IThirdPartyAppAnalyticsLinkIdentifier {

                        /**
                         * Constructs a new ThirdPartyAppAnalyticsLinkIdentifier.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.MobileAppVendorEnum.MobileAppVendor|keyof typeof google.ads.googleads.v8.enums.MobileAppVendorEnum.MobileAppVendor);

                        /** ThirdPartyAppAnalyticsLinkIdentifier _app_analytics_provider_id. */
                        public _app_analytics_provider_id?: "app_analytics_provider_id";

                        /** ThirdPartyAppAnalyticsLinkIdentifier _app_id. */
                        public _app_id?: "app_id";

                        /**
                         * Creates a new ThirdPartyAppAnalyticsLinkIdentifier instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ThirdPartyAppAnalyticsLinkIdentifier instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IThirdPartyAppAnalyticsLinkIdentifier): google.ads.googleads.v8.resources.ThirdPartyAppAnalyticsLinkIdentifier;

                        /**
                         * Encodes the specified ThirdPartyAppAnalyticsLinkIdentifier message. Does not implicitly {@link google.ads.googleads.v8.resources.ThirdPartyAppAnalyticsLinkIdentifier.verify|verify} messages.
                         * @param m ThirdPartyAppAnalyticsLinkIdentifier message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IThirdPartyAppAnalyticsLinkIdentifier, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ThirdPartyAppAnalyticsLinkIdentifier message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IThirdPartyAppAnalyticsLinkIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ThirdPartyAppAnalyticsLinkIdentifier message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.ThirdPartyAppAnalyticsLinkIdentifier;

                        /**
                         * Verifies a ThirdPartyAppAnalyticsLinkIdentifier message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ThirdPartyAppAnalyticsLinkIdentifier message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ThirdPartyAppAnalyticsLinkIdentifier
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ThirdPartyAppAnalyticsLinkIdentifier;

                        /**
                         * Creates a plain object from a ThirdPartyAppAnalyticsLinkIdentifier message. Also converts values to other types if specified.
                         * @param m ThirdPartyAppAnalyticsLinkIdentifier
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.ThirdPartyAppAnalyticsLinkIdentifier, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ThirdPartyAppAnalyticsLinkIdentifier to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a DataPartnerLinkIdentifier. */
                    interface IDataPartnerLinkIdentifier {

                        /** DataPartnerLinkIdentifier data_partner_id */
                        data_partner_id?: (number|null);
                    }

                    /** Represents a DataPartnerLinkIdentifier. */
                    class DataPartnerLinkIdentifier implements IDataPartnerLinkIdentifier {

                        /**
                         * Constructs a new DataPartnerLinkIdentifier.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IDataPartnerLinkIdentifier);

                        /** DataPartnerLinkIdentifier data_partner_id. */
                        public data_partner_id?: (number|null);

                        /** DataPartnerLinkIdentifier _data_partner_id. */
                        public _data_partner_id?: "data_partner_id";

                        /**
                         * Creates a new DataPartnerLinkIdentifier instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DataPartnerLinkIdentifier instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IDataPartnerLinkIdentifier): google.ads.googleads.v8.resources.DataPartnerLinkIdentifier;

                        /**
                         * Encodes the specified DataPartnerLinkIdentifier message. Does not implicitly {@link google.ads.googleads.v8.resources.DataPartnerLinkIdentifier.verify|verify} messages.
                         * @param m DataPartnerLinkIdentifier message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IDataPartnerLinkIdentifier, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DataPartnerLinkIdentifier message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.DataPartnerLinkIdentifier.verify|verify} messages.
                         * @param message DataPartnerLinkIdentifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.IDataPartnerLinkIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DataPartnerLinkIdentifier message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns DataPartnerLinkIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.DataPartnerLinkIdentifier;

                        /**
                         * Decodes a DataPartnerLinkIdentifier message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DataPartnerLinkIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.DataPartnerLinkIdentifier;

                        /**
                         * Verifies a DataPartnerLinkIdentifier message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DataPartnerLinkIdentifier message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns DataPartnerLinkIdentifier
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.DataPartnerLinkIdentifier;

                        /**
                         * Creates a plain object from a DataPartnerLinkIdentifier message. Also converts values to other types if specified.
                         * @param m DataPartnerLinkIdentifier
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.DataPartnerLinkIdentifier, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DataPartnerLinkIdentifier to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a GoogleAdsLinkIdentifier. */
                    interface IGoogleAdsLinkIdentifier {

                        /** GoogleAdsLinkIdentifier customer */
                        customer?: (string|null);
                    }

                    /** Represents a GoogleAdsLinkIdentifier. */
                    class GoogleAdsLinkIdentifier implements IGoogleAdsLinkIdentifier {

                        /**
                         * Constructs a new GoogleAdsLinkIdentifier.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IGoogleAdsLinkIdentifier);

                        /** GoogleAdsLinkIdentifier customer. */
                        public customer?: (string|null);

                        /** GoogleAdsLinkIdentifier _customer. */
                        public _customer?: "customer";

                        /**
                         * Creates a new GoogleAdsLinkIdentifier instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GoogleAdsLinkIdentifier instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IGoogleAdsLinkIdentifier): google.ads.googleads.v8.resources.GoogleAdsLinkIdentifier;

                        /**
                         * Encodes the specified GoogleAdsLinkIdentifier message. Does not implicitly {@link google.ads.googleads.v8.resources.GoogleAdsLinkIdentifier.verify|verify} messages.
                         * @param m GoogleAdsLinkIdentifier message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IGoogleAdsLinkIdentifier, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GoogleAdsLinkIdentifier message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.GoogleAdsLinkIdentifier.verify|verify} messages.
                         * @param message GoogleAdsLinkIdentifier message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.IGoogleAdsLinkIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GoogleAdsLinkIdentifier message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GoogleAdsLinkIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.GoogleAdsLinkIdentifier;

                        /**
                         * Decodes a GoogleAdsLinkIdentifier message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GoogleAdsLinkIdentifier
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.GoogleAdsLinkIdentifier;

                        /**
                         * Verifies a GoogleAdsLinkIdentifier message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GoogleAdsLinkIdentifier message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GoogleAdsLinkIdentifier
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.GoogleAdsLinkIdentifier;

                        /**
                         * Creates a plain object from a GoogleAdsLinkIdentifier message. Also converts values to other types if specified.
                         * @param m GoogleAdsLinkIdentifier
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.GoogleAdsLinkIdentifier, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GoogleAdsLinkIdentifier to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.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.v8.common.ICustomParameter[]|null);

                        /** Ad display_url */
                        display_url?: (string|null);

                        /** Ad type */
                        type?: (google.ads.googleads.v8.enums.AdTypeEnum.AdType|keyof typeof google.ads.googleads.v8.enums.AdTypeEnum.AdType|null);

                        /** Ad added_by_google_ads */
                        added_by_google_ads?: (boolean|null);

                        /** Ad device_preference */
                        device_preference?: (google.ads.googleads.v8.enums.DeviceEnum.Device|keyof typeof google.ads.googleads.v8.enums.DeviceEnum.Device|null);

                        /** Ad url_collections */
                        url_collections?: (google.ads.googleads.v8.common.IUrlCollection[]|null);

                        /** Ad name */
                        name?: (string|null);

                        /** Ad system_managed_resource_source */
                        system_managed_resource_source?: (google.ads.googleads.v8.enums.SystemManagedResourceSourceEnum.SystemManagedResourceSource|keyof typeof google.ads.googleads.v8.enums.SystemManagedResourceSourceEnum.SystemManagedResourceSource|null);

                        /** Ad text_ad */
                        text_ad?: (google.ads.googleads.v8.common.ITextAdInfo|null);

                        /** Ad expanded_text_ad */
                        expanded_text_ad?: (google.ads.googleads.v8.common.IExpandedTextAdInfo|null);

                        /** Ad call_ad */
                        call_ad?: (google.ads.googleads.v8.common.ICallAdInfo|null);

                        /** Ad expanded_dynamic_search_ad */
                        expanded_dynamic_search_ad?: (google.ads.googleads.v8.common.IExpandedDynamicSearchAdInfo|null);

                        /** Ad hotel_ad */
                        hotel_ad?: (google.ads.googleads.v8.common.IHotelAdInfo|null);

                        /** Ad shopping_smart_ad */
                        shopping_smart_ad?: (google.ads.googleads.v8.common.IShoppingSmartAdInfo|null);

                        /** Ad shopping_product_ad */
                        shopping_product_ad?: (google.ads.googleads.v8.common.IShoppingProductAdInfo|null);

                        /** Ad gmail_ad */
                        gmail_ad?: (google.ads.googleads.v8.common.IGmailAdInfo|null);

                        /** Ad image_ad */
                        image_ad?: (google.ads.googleads.v8.common.IImageAdInfo|null);

                        /** Ad video_ad */
                        video_ad?: (google.ads.googleads.v8.common.IVideoAdInfo|null);

                        /** Ad video_responsive_ad */
                        video_responsive_ad?: (google.ads.googleads.v8.common.IVideoResponsiveAdInfo|null);

                        /** Ad responsive_search_ad */
                        responsive_search_ad?: (google.ads.googleads.v8.common.IResponsiveSearchAdInfo|null);

                        /** Ad legacy_responsive_display_ad */
                        legacy_responsive_display_ad?: (google.ads.googleads.v8.common.ILegacyResponsiveDisplayAdInfo|null);

                        /** Ad app_ad */
                        app_ad?: (google.ads.googleads.v8.common.IAppAdInfo|null);

                        /** Ad legacy_app_install_ad */
                        legacy_app_install_ad?: (google.ads.googleads.v8.common.ILegacyAppInstallAdInfo|null);

                        /** Ad responsive_display_ad */
                        responsive_display_ad?: (google.ads.googleads.v8.common.IResponsiveDisplayAdInfo|null);

                        /** Ad local_ad */
                        local_ad?: (google.ads.googleads.v8.common.ILocalAdInfo|null);

                        /** Ad display_upload_ad */
                        display_upload_ad?: (google.ads.googleads.v8.common.IDisplayUploadAdInfo|null);

                        /** Ad app_engagement_ad */
                        app_engagement_ad?: (google.ads.googleads.v8.common.IAppEngagementAdInfo|null);

                        /** Ad shopping_comparison_listing_ad */
                        shopping_comparison_listing_ad?: (google.ads.googleads.v8.common.IShoppingComparisonListingAdInfo|null);

                        /** Ad smart_campaign_ad */
                        smart_campaign_ad?: (google.ads.googleads.v8.common.ISmartCampaignAdInfo|null);
                    }

                    /** Represents an Ad. */
                    class Ad implements IAd {

                        /**
                         * Constructs a new Ad.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.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.v8.common.ICustomParameter[];

                        /** Ad display_url. */
                        public display_url?: (string|null);

                        /** Ad type. */
                        public type: (google.ads.googleads.v8.enums.AdTypeEnum.AdType|keyof typeof google.ads.googleads.v8.enums.AdTypeEnum.AdType);

                        /** Ad added_by_google_ads. */
                        public added_by_google_ads?: (boolean|null);

                        /** Ad device_preference. */
                        public device_preference: (google.ads.googleads.v8.enums.DeviceEnum.Device|keyof typeof google.ads.googleads.v8.enums.DeviceEnum.Device);

                        /** Ad url_collections. */
                        public url_collections: google.ads.googleads.v8.common.IUrlCollection[];

                        /** Ad name. */
                        public name?: (string|null);

                        /** Ad system_managed_resource_source. */
                        public system_managed_resource_source: (google.ads.googleads.v8.enums.SystemManagedResourceSourceEnum.SystemManagedResourceSource|keyof typeof google.ads.googleads.v8.enums.SystemManagedResourceSourceEnum.SystemManagedResourceSource);

                        /** Ad text_ad. */
                        public text_ad?: (google.ads.googleads.v8.common.ITextAdInfo|null);

                        /** Ad expanded_text_ad. */
                        public expanded_text_ad?: (google.ads.googleads.v8.common.IExpandedTextAdInfo|null);

                        /** Ad call_ad. */
                        public call_ad?: (google.ads.googleads.v8.common.ICallAdInfo|null);

                        /** Ad expanded_dynamic_search_ad. */
                        public expanded_dynamic_search_ad?: (google.ads.googleads.v8.common.IExpandedDynamicSearchAdInfo|null);

                        /** Ad hotel_ad. */
                        public hotel_ad?: (google.ads.googleads.v8.common.IHotelAdInfo|null);

                        /** Ad shopping_smart_ad. */
                        public shopping_smart_ad?: (google.ads.googleads.v8.common.IShoppingSmartAdInfo|null);

                        /** Ad shopping_product_ad. */
                        public shopping_product_ad?: (google.ads.googleads.v8.common.IShoppingProductAdInfo|null);

                        /** Ad gmail_ad. */
                        public gmail_ad?: (google.ads.googleads.v8.common.IGmailAdInfo|null);

                        /** Ad image_ad. */
                        public image_ad?: (google.ads.googleads.v8.common.IImageAdInfo|null);

                        /** Ad video_ad. */
                        public video_ad?: (google.ads.googleads.v8.common.IVideoAdInfo|null);

                        /** Ad video_responsive_ad. */
                        public video_responsive_ad?: (google.ads.googleads.v8.common.IVideoResponsiveAdInfo|null);

                        /** Ad responsive_search_ad. */
                        public responsive_search_ad?: (google.ads.googleads.v8.common.IResponsiveSearchAdInfo|null);

                        /** Ad legacy_responsive_display_ad. */
                        public legacy_responsive_display_ad?: (google.ads.googleads.v8.common.ILegacyResponsiveDisplayAdInfo|null);

                        /** Ad app_ad. */
                        public app_ad?: (google.ads.googleads.v8.common.IAppAdInfo|null);

                        /** Ad legacy_app_install_ad. */
                        public legacy_app_install_ad?: (google.ads.googleads.v8.common.ILegacyAppInstallAdInfo|null);

                        /** Ad responsive_display_ad. */
                        public responsive_display_ad?: (google.ads.googleads.v8.common.IResponsiveDisplayAdInfo|null);

                        /** Ad local_ad. */
                        public local_ad?: (google.ads.googleads.v8.common.ILocalAdInfo|null);

                        /** Ad display_upload_ad. */
                        public display_upload_ad?: (google.ads.googleads.v8.common.IDisplayUploadAdInfo|null);

                        /** Ad app_engagement_ad. */
                        public app_engagement_ad?: (google.ads.googleads.v8.common.IAppEngagementAdInfo|null);

                        /** Ad shopping_comparison_listing_ad. */
                        public shopping_comparison_listing_ad?: (google.ads.googleads.v8.common.IShoppingComparisonListingAdInfo|null);

                        /** Ad smart_campaign_ad. */
                        public smart_campaign_ad?: (google.ads.googleads.v8.common.ISmartCampaignAdInfo|null);

                        /** Ad _id. */
                        public _id?: "id";

                        /** Ad _tracking_url_template. */
                        public _tracking_url_template?: "tracking_url_template";

                        /** Ad _final_url_suffix. */
                        public _final_url_suffix?: "final_url_suffix";

                        /** Ad _display_url. */
                        public _display_url?: "display_url";

                        /** Ad _added_by_google_ads. */
                        public _added_by_google_ads?: "added_by_google_ads";

                        /** Ad _name. */
                        public _name?: "name";

                        /** Ad ad_data. */
                        public ad_data?: ("text_ad"|"expanded_text_ad"|"call_ad"|"expanded_dynamic_search_ad"|"hotel_ad"|"shopping_smart_ad"|"shopping_product_ad"|"gmail_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");

                        /**
                         * Creates a new Ad instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Ad instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IAd): google.ads.googleads.v8.resources.Ad;

                        /**
                         * Encodes the specified Ad message. Does not implicitly {@link google.ads.googleads.v8.resources.Ad.verify|verify} messages.
                         * @param m Ad message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAd, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Ad message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IAd, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an Ad message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Ad;

                        /**
                         * Verifies an Ad message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an Ad message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns Ad
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Ad;

                        /**
                         * Creates a plain object from an Ad message. Also converts values to other types if specified.
                         * @param m Ad
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.Ad, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Ad to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.AdGroupStatusEnum.AdGroupStatus|keyof typeof google.ads.googleads.v8.enums.AdGroupStatusEnum.AdGroupStatus|null);

                        /** AdGroup type */
                        type?: (google.ads.googleads.v8.enums.AdGroupTypeEnum.AdGroupType|keyof typeof google.ads.googleads.v8.enums.AdGroupTypeEnum.AdGroupType|null);

                        /** AdGroup ad_rotation_mode */
                        ad_rotation_mode?: (google.ads.googleads.v8.enums.AdGroupAdRotationModeEnum.AdGroupAdRotationMode|keyof typeof google.ads.googleads.v8.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.v8.common.ICustomParameter[]|null);

                        /** AdGroup campaign */
                        campaign?: (string|null);

                        /** AdGroup cpc_bid_micros */
                        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 explorer_auto_optimizer_setting */
                        explorer_auto_optimizer_setting?: (google.ads.googleads.v8.common.IExplorerAutoOptimizerSetting|null);

                        /** AdGroup display_custom_bid_dimension */
                        display_custom_bid_dimension?: (google.ads.googleads.v8.enums.TargetingDimensionEnum.TargetingDimension|keyof typeof google.ads.googleads.v8.enums.TargetingDimensionEnum.TargetingDimension|null);

                        /** AdGroup final_url_suffix */
                        final_url_suffix?: (string|null);

                        /** AdGroup targeting_setting */
                        targeting_setting?: (google.ads.googleads.v8.common.ITargetingSetting|null);

                        /** AdGroup effective_target_cpa_micros */
                        effective_target_cpa_micros?: (number|null);

                        /** AdGroup effective_target_cpa_source */
                        effective_target_cpa_source?: (google.ads.googleads.v8.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v8.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.v8.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v8.enums.BiddingSourceEnum.BiddingSource|null);

                        /** AdGroup labels */
                        labels?: (string[]|null);

                        /** AdGroup excluded_parent_asset_field_types */
                        excluded_parent_asset_field_types?: (google.ads.googleads.v8.enums.AssetFieldTypeEnum.AssetFieldType[]|null);
                    }

                    /** Represents an AdGroup. */
                    class AdGroup implements IAdGroup {

                        /**
                         * Constructs a new AdGroup.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.AdGroupStatusEnum.AdGroupStatus|keyof typeof google.ads.googleads.v8.enums.AdGroupStatusEnum.AdGroupStatus);

                        /** AdGroup type. */
                        public type: (google.ads.googleads.v8.enums.AdGroupTypeEnum.AdGroupType|keyof typeof google.ads.googleads.v8.enums.AdGroupTypeEnum.AdGroupType);

                        /** AdGroup ad_rotation_mode. */
                        public ad_rotation_mode: (google.ads.googleads.v8.enums.AdGroupAdRotationModeEnum.AdGroupAdRotationMode|keyof typeof google.ads.googleads.v8.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.v8.common.ICustomParameter[];

                        /** AdGroup campaign. */
                        public campaign?: (string|null);

                        /** AdGroup cpc_bid_micros. */
                        public 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 explorer_auto_optimizer_setting. */
                        public explorer_auto_optimizer_setting?: (google.ads.googleads.v8.common.IExplorerAutoOptimizerSetting|null);

                        /** AdGroup display_custom_bid_dimension. */
                        public display_custom_bid_dimension: (google.ads.googleads.v8.enums.TargetingDimensionEnum.TargetingDimension|keyof typeof google.ads.googleads.v8.enums.TargetingDimensionEnum.TargetingDimension);

                        /** AdGroup final_url_suffix. */
                        public final_url_suffix?: (string|null);

                        /** AdGroup targeting_setting. */
                        public targeting_setting?: (google.ads.googleads.v8.common.ITargetingSetting|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.v8.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v8.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.v8.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v8.enums.BiddingSourceEnum.BiddingSource);

                        /** AdGroup labels. */
                        public labels: string[];

                        /** AdGroup excluded_parent_asset_field_types. */
                        public excluded_parent_asset_field_types: google.ads.googleads.v8.enums.AssetFieldTypeEnum.AssetFieldType[];

                        /** AdGroup _id. */
                        public _id?: "id";

                        /** AdGroup _name. */
                        public _name?: "name";

                        /** AdGroup _base_ad_group. */
                        public _base_ad_group?: "base_ad_group";

                        /** AdGroup _tracking_url_template. */
                        public _tracking_url_template?: "tracking_url_template";

                        /** AdGroup _campaign. */
                        public _campaign?: "campaign";

                        /** AdGroup _cpc_bid_micros. */
                        public _cpc_bid_micros?: "cpc_bid_micros";

                        /** AdGroup _cpm_bid_micros. */
                        public _cpm_bid_micros?: "cpm_bid_micros";

                        /** AdGroup _target_cpa_micros. */
                        public _target_cpa_micros?: "target_cpa_micros";

                        /** AdGroup _cpv_bid_micros. */
                        public _cpv_bid_micros?: "cpv_bid_micros";

                        /** AdGroup _target_cpm_micros. */
                        public _target_cpm_micros?: "target_cpm_micros";

                        /** AdGroup _target_roas. */
                        public _target_roas?: "target_roas";

                        /** AdGroup _percent_cpc_bid_micros. */
                        public _percent_cpc_bid_micros?: "percent_cpc_bid_micros";

                        /** AdGroup _final_url_suffix. */
                        public _final_url_suffix?: "final_url_suffix";

                        /** AdGroup _effective_target_cpa_micros. */
                        public _effective_target_cpa_micros?: "effective_target_cpa_micros";

                        /** AdGroup _effective_target_roas. */
                        public _effective_target_roas?: "effective_target_roas";

                        /**
                         * Creates a new AdGroup instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroup instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IAdGroup): google.ads.googleads.v8.resources.AdGroup;

                        /**
                         * Encodes the specified AdGroup message. Does not implicitly {@link google.ads.googleads.v8.resources.AdGroup.verify|verify} messages.
                         * @param m AdGroup message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAdGroup, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroup message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IAdGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroup message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AdGroup;

                        /**
                         * Verifies an AdGroup message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroup message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroup
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AdGroup;

                        /**
                         * Creates a plain object from an AdGroup message. Also converts values to other types if specified.
                         * @param m AdGroup
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AdGroup, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroup to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an AdGroupAd. */
                    interface IAdGroupAd {

                        /** AdGroupAd resource_name */
                        resource_name?: (string|null);

                        /** AdGroupAd status */
                        status?: (google.ads.googleads.v8.enums.AdGroupAdStatusEnum.AdGroupAdStatus|keyof typeof google.ads.googleads.v8.enums.AdGroupAdStatusEnum.AdGroupAdStatus|null);

                        /** AdGroupAd ad_group */
                        ad_group?: (string|null);

                        /** AdGroupAd ad */
                        ad?: (google.ads.googleads.v8.resources.IAd|null);

                        /** AdGroupAd policy_summary */
                        policy_summary?: (google.ads.googleads.v8.resources.IAdGroupAdPolicySummary|null);

                        /** AdGroupAd ad_strength */
                        ad_strength?: (google.ads.googleads.v8.enums.AdStrengthEnum.AdStrength|keyof typeof google.ads.googleads.v8.enums.AdStrengthEnum.AdStrength|null);

                        /** AdGroupAd action_items */
                        action_items?: (string[]|null);

                        /** AdGroupAd labels */
                        labels?: (string[]|null);
                    }

                    /** Represents an AdGroupAd. */
                    class AdGroupAd implements IAdGroupAd {

                        /**
                         * Constructs a new AdGroupAd.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IAdGroupAd);

                        /** AdGroupAd resource_name. */
                        public resource_name: string;

                        /** AdGroupAd status. */
                        public status: (google.ads.googleads.v8.enums.AdGroupAdStatusEnum.AdGroupAdStatus|keyof typeof google.ads.googleads.v8.enums.AdGroupAdStatusEnum.AdGroupAdStatus);

                        /** AdGroupAd ad_group. */
                        public ad_group?: (string|null);

                        /** AdGroupAd ad. */
                        public ad?: (google.ads.googleads.v8.resources.IAd|null);

                        /** AdGroupAd policy_summary. */
                        public policy_summary?: (google.ads.googleads.v8.resources.IAdGroupAdPolicySummary|null);

                        /** AdGroupAd ad_strength. */
                        public ad_strength: (google.ads.googleads.v8.enums.AdStrengthEnum.AdStrength|keyof typeof google.ads.googleads.v8.enums.AdStrengthEnum.AdStrength);

                        /** AdGroupAd action_items. */
                        public action_items: string[];

                        /** AdGroupAd labels. */
                        public labels: string[];

                        /** AdGroupAd _ad_group. */
                        public _ad_group?: "ad_group";

                        /**
                         * Creates a new AdGroupAd instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupAd instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IAdGroupAd): google.ads.googleads.v8.resources.AdGroupAd;

                        /**
                         * Encodes the specified AdGroupAd message. Does not implicitly {@link google.ads.googleads.v8.resources.AdGroupAd.verify|verify} messages.
                         * @param m AdGroupAd message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAdGroupAd, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAd message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IAdGroupAd, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAd message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AdGroupAd;

                        /**
                         * Verifies an AdGroupAd message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupAd message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupAd
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AdGroupAd;

                        /**
                         * Creates a plain object from an AdGroupAd message. Also converts values to other types if specified.
                         * @param m AdGroupAd
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AdGroupAd, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAd to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an AdGroupAdPolicySummary. */
                    interface IAdGroupAdPolicySummary {

                        /** AdGroupAdPolicySummary policy_topic_entries */
                        policy_topic_entries?: (google.ads.googleads.v8.common.IPolicyTopicEntry[]|null);

                        /** AdGroupAdPolicySummary review_status */
                        review_status?: (google.ads.googleads.v8.enums.PolicyReviewStatusEnum.PolicyReviewStatus|keyof typeof google.ads.googleads.v8.enums.PolicyReviewStatusEnum.PolicyReviewStatus|null);

                        /** AdGroupAdPolicySummary approval_status */
                        approval_status?: (google.ads.googleads.v8.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|keyof typeof google.ads.googleads.v8.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|null);
                    }

                    /** Represents an AdGroupAdPolicySummary. */
                    class AdGroupAdPolicySummary implements IAdGroupAdPolicySummary {

                        /**
                         * Constructs a new AdGroupAdPolicySummary.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IAdGroupAdPolicySummary);

                        /** AdGroupAdPolicySummary policy_topic_entries. */
                        public policy_topic_entries: google.ads.googleads.v8.common.IPolicyTopicEntry[];

                        /** AdGroupAdPolicySummary review_status. */
                        public review_status: (google.ads.googleads.v8.enums.PolicyReviewStatusEnum.PolicyReviewStatus|keyof typeof google.ads.googleads.v8.enums.PolicyReviewStatusEnum.PolicyReviewStatus);

                        /** AdGroupAdPolicySummary approval_status. */
                        public approval_status: (google.ads.googleads.v8.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|keyof typeof google.ads.googleads.v8.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.v8.resources.IAdGroupAdPolicySummary): google.ads.googleads.v8.resources.AdGroupAdPolicySummary;

                        /**
                         * Encodes the specified AdGroupAdPolicySummary message. Does not implicitly {@link google.ads.googleads.v8.resources.AdGroupAdPolicySummary.verify|verify} messages.
                         * @param m AdGroupAdPolicySummary message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAdGroupAdPolicySummary, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAdPolicySummary message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IAdGroupAdPolicySummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAdPolicySummary message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AdGroupAdPolicySummary;

                        /**
                         * Verifies an AdGroupAdPolicySummary message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupAdPolicySummary message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupAdPolicySummary
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AdGroupAdPolicySummary;

                        /**
                         * Creates a plain object from an AdGroupAdPolicySummary message. Also converts values to other types if specified.
                         * @param m AdGroupAdPolicySummary
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AdGroupAdPolicySummary, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAdPolicySummary to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v8.enums.AssetFieldTypeEnum.AssetFieldType|null);

                        /** AdGroupAdAssetView enabled */
                        enabled?: (boolean|null);

                        /** AdGroupAdAssetView policy_summary */
                        policy_summary?: (google.ads.googleads.v8.resources.IAdGroupAdAssetPolicySummary|null);

                        /** AdGroupAdAssetView performance_label */
                        performance_label?: (google.ads.googleads.v8.enums.AssetPerformanceLabelEnum.AssetPerformanceLabel|keyof typeof google.ads.googleads.v8.enums.AssetPerformanceLabelEnum.AssetPerformanceLabel|null);
                    }

                    /** Represents an AdGroupAdAssetView. */
                    class AdGroupAdAssetView implements IAdGroupAdAssetView {

                        /**
                         * Constructs a new AdGroupAdAssetView.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v8.enums.AssetFieldTypeEnum.AssetFieldType);

                        /** AdGroupAdAssetView enabled. */
                        public enabled?: (boolean|null);

                        /** AdGroupAdAssetView policy_summary. */
                        public policy_summary?: (google.ads.googleads.v8.resources.IAdGroupAdAssetPolicySummary|null);

                        /** AdGroupAdAssetView performance_label. */
                        public performance_label: (google.ads.googleads.v8.enums.AssetPerformanceLabelEnum.AssetPerformanceLabel|keyof typeof google.ads.googleads.v8.enums.AssetPerformanceLabelEnum.AssetPerformanceLabel);

                        /** AdGroupAdAssetView _ad_group_ad. */
                        public _ad_group_ad?: "ad_group_ad";

                        /** AdGroupAdAssetView _asset. */
                        public _asset?: "asset";

                        /** AdGroupAdAssetView _enabled. */
                        public _enabled?: "enabled";

                        /**
                         * Creates a new AdGroupAdAssetView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupAdAssetView instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IAdGroupAdAssetView): google.ads.googleads.v8.resources.AdGroupAdAssetView;

                        /**
                         * Encodes the specified AdGroupAdAssetView message. Does not implicitly {@link google.ads.googleads.v8.resources.AdGroupAdAssetView.verify|verify} messages.
                         * @param m AdGroupAdAssetView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAdGroupAdAssetView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAdAssetView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IAdGroupAdAssetView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAdAssetView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AdGroupAdAssetView;

                        /**
                         * Verifies an AdGroupAdAssetView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupAdAssetView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupAdAssetView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AdGroupAdAssetView;

                        /**
                         * Creates a plain object from an AdGroupAdAssetView message. Also converts values to other types if specified.
                         * @param m AdGroupAdAssetView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AdGroupAdAssetView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAdAssetView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an AdGroupAdAssetPolicySummary. */
                    interface IAdGroupAdAssetPolicySummary {

                        /** AdGroupAdAssetPolicySummary policy_topic_entries */
                        policy_topic_entries?: (google.ads.googleads.v8.common.IPolicyTopicEntry[]|null);

                        /** AdGroupAdAssetPolicySummary review_status */
                        review_status?: (google.ads.googleads.v8.enums.PolicyReviewStatusEnum.PolicyReviewStatus|keyof typeof google.ads.googleads.v8.enums.PolicyReviewStatusEnum.PolicyReviewStatus|null);

                        /** AdGroupAdAssetPolicySummary approval_status */
                        approval_status?: (google.ads.googleads.v8.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|keyof typeof google.ads.googleads.v8.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|null);
                    }

                    /** Represents an AdGroupAdAssetPolicySummary. */
                    class AdGroupAdAssetPolicySummary implements IAdGroupAdAssetPolicySummary {

                        /**
                         * Constructs a new AdGroupAdAssetPolicySummary.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IAdGroupAdAssetPolicySummary);

                        /** AdGroupAdAssetPolicySummary policy_topic_entries. */
                        public policy_topic_entries: google.ads.googleads.v8.common.IPolicyTopicEntry[];

                        /** AdGroupAdAssetPolicySummary review_status. */
                        public review_status: (google.ads.googleads.v8.enums.PolicyReviewStatusEnum.PolicyReviewStatus|keyof typeof google.ads.googleads.v8.enums.PolicyReviewStatusEnum.PolicyReviewStatus);

                        /** AdGroupAdAssetPolicySummary approval_status. */
                        public approval_status: (google.ads.googleads.v8.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|keyof typeof google.ads.googleads.v8.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.v8.resources.IAdGroupAdAssetPolicySummary): google.ads.googleads.v8.resources.AdGroupAdAssetPolicySummary;

                        /**
                         * Encodes the specified AdGroupAdAssetPolicySummary message. Does not implicitly {@link google.ads.googleads.v8.resources.AdGroupAdAssetPolicySummary.verify|verify} messages.
                         * @param m AdGroupAdAssetPolicySummary message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAdGroupAdAssetPolicySummary, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAdAssetPolicySummary message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IAdGroupAdAssetPolicySummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAdAssetPolicySummary message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AdGroupAdAssetPolicySummary;

                        /**
                         * Verifies an AdGroupAdAssetPolicySummary message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupAdAssetPolicySummary message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupAdAssetPolicySummary
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AdGroupAdAssetPolicySummary;

                        /**
                         * Creates a plain object from an AdGroupAdAssetPolicySummary message. Also converts values to other types if specified.
                         * @param m AdGroupAdAssetPolicySummary
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AdGroupAdAssetPolicySummary, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAdAssetPolicySummary to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** AdGroupAdLabel _ad_group_ad. */
                        public _ad_group_ad?: "ad_group_ad";

                        /** AdGroupAdLabel _label. */
                        public _label?: "label";

                        /**
                         * Creates a new AdGroupAdLabel instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupAdLabel instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IAdGroupAdLabel): google.ads.googleads.v8.resources.AdGroupAdLabel;

                        /**
                         * Encodes the specified AdGroupAdLabel message. Does not implicitly {@link google.ads.googleads.v8.resources.AdGroupAdLabel.verify|verify} messages.
                         * @param m AdGroupAdLabel message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAdGroupAdLabel, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAdLabel message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IAdGroupAdLabel, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAdLabel message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AdGroupAdLabel;

                        /**
                         * Verifies an AdGroupAdLabel message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupAdLabel message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupAdLabel
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AdGroupAdLabel;

                        /**
                         * Creates a plain object from an AdGroupAdLabel message. Also converts values to other types if specified.
                         * @param m AdGroupAdLabel
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AdGroupAdLabel, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAdLabel to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v8.enums.AssetFieldTypeEnum.AssetFieldType|null);

                        /** AdGroupAsset status */
                        status?: (google.ads.googleads.v8.enums.AssetLinkStatusEnum.AssetLinkStatus|keyof typeof google.ads.googleads.v8.enums.AssetLinkStatusEnum.AssetLinkStatus|null);
                    }

                    /** Represents an AdGroupAsset. */
                    class AdGroupAsset implements IAdGroupAsset {

                        /**
                         * Constructs a new AdGroupAsset.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v8.enums.AssetFieldTypeEnum.AssetFieldType);

                        /** AdGroupAsset status. */
                        public status: (google.ads.googleads.v8.enums.AssetLinkStatusEnum.AssetLinkStatus|keyof typeof google.ads.googleads.v8.enums.AssetLinkStatusEnum.AssetLinkStatus);

                        /**
                         * Creates a new AdGroupAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IAdGroupAsset): google.ads.googleads.v8.resources.AdGroupAsset;

                        /**
                         * Encodes the specified AdGroupAsset message. Does not implicitly {@link google.ads.googleads.v8.resources.AdGroupAsset.verify|verify} messages.
                         * @param m AdGroupAsset message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAdGroupAsset, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IAdGroupAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAsset message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AdGroupAsset;

                        /**
                         * Verifies an AdGroupAsset message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupAsset message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupAsset
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AdGroupAsset;

                        /**
                         * Creates a plain object from an AdGroupAsset message. Also converts values to other types if specified.
                         * @param m AdGroupAsset
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AdGroupAsset, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAsset to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.resources.IAdGroupAudienceView): google.ads.googleads.v8.resources.AdGroupAudienceView;

                        /**
                         * Encodes the specified AdGroupAudienceView message. Does not implicitly {@link google.ads.googleads.v8.resources.AdGroupAudienceView.verify|verify} messages.
                         * @param m AdGroupAudienceView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAdGroupAudienceView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAudienceView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IAdGroupAudienceView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAudienceView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AdGroupAudienceView;

                        /**
                         * Verifies an AdGroupAudienceView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupAudienceView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupAudienceView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AdGroupAudienceView;

                        /**
                         * Creates a plain object from an AdGroupAudienceView message. Also converts values to other types if specified.
                         * @param m AdGroupAudienceView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AdGroupAudienceView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAudienceView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.BidModifierSourceEnum.BidModifierSource|keyof typeof google.ads.googleads.v8.enums.BidModifierSourceEnum.BidModifierSource|null);

                        /** AdGroupBidModifier hotel_date_selection_type */
                        hotel_date_selection_type?: (google.ads.googleads.v8.common.IHotelDateSelectionTypeInfo|null);

                        /** AdGroupBidModifier hotel_advance_booking_window */
                        hotel_advance_booking_window?: (google.ads.googleads.v8.common.IHotelAdvanceBookingWindowInfo|null);

                        /** AdGroupBidModifier hotel_length_of_stay */
                        hotel_length_of_stay?: (google.ads.googleads.v8.common.IHotelLengthOfStayInfo|null);

                        /** AdGroupBidModifier hotel_check_in_day */
                        hotel_check_in_day?: (google.ads.googleads.v8.common.IHotelCheckInDayInfo|null);

                        /** AdGroupBidModifier device */
                        device?: (google.ads.googleads.v8.common.IDeviceInfo|null);

                        /** AdGroupBidModifier preferred_content */
                        preferred_content?: (google.ads.googleads.v8.common.IPreferredContentInfo|null);

                        /** AdGroupBidModifier hotel_check_in_date_range */
                        hotel_check_in_date_range?: (google.ads.googleads.v8.common.IHotelCheckInDateRangeInfo|null);
                    }

                    /** Represents an AdGroupBidModifier. */
                    class AdGroupBidModifier implements IAdGroupBidModifier {

                        /**
                         * Constructs a new AdGroupBidModifier.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.BidModifierSourceEnum.BidModifierSource|keyof typeof google.ads.googleads.v8.enums.BidModifierSourceEnum.BidModifierSource);

                        /** AdGroupBidModifier hotel_date_selection_type. */
                        public hotel_date_selection_type?: (google.ads.googleads.v8.common.IHotelDateSelectionTypeInfo|null);

                        /** AdGroupBidModifier hotel_advance_booking_window. */
                        public hotel_advance_booking_window?: (google.ads.googleads.v8.common.IHotelAdvanceBookingWindowInfo|null);

                        /** AdGroupBidModifier hotel_length_of_stay. */
                        public hotel_length_of_stay?: (google.ads.googleads.v8.common.IHotelLengthOfStayInfo|null);

                        /** AdGroupBidModifier hotel_check_in_day. */
                        public hotel_check_in_day?: (google.ads.googleads.v8.common.IHotelCheckInDayInfo|null);

                        /** AdGroupBidModifier device. */
                        public device?: (google.ads.googleads.v8.common.IDeviceInfo|null);

                        /** AdGroupBidModifier preferred_content. */
                        public preferred_content?: (google.ads.googleads.v8.common.IPreferredContentInfo|null);

                        /** AdGroupBidModifier hotel_check_in_date_range. */
                        public hotel_check_in_date_range?: (google.ads.googleads.v8.common.IHotelCheckInDateRangeInfo|null);

                        /** AdGroupBidModifier _ad_group. */
                        public _ad_group?: "ad_group";

                        /** AdGroupBidModifier _criterion_id. */
                        public _criterion_id?: "criterion_id";

                        /** AdGroupBidModifier _bid_modifier. */
                        public _bid_modifier?: "bid_modifier";

                        /** AdGroupBidModifier _base_ad_group. */
                        public _base_ad_group?: "base_ad_group";

                        /** AdGroupBidModifier criterion. */
                        public criterion?: ("hotel_date_selection_type"|"hotel_advance_booking_window"|"hotel_length_of_stay"|"hotel_check_in_day"|"device"|"preferred_content"|"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.v8.resources.IAdGroupBidModifier): google.ads.googleads.v8.resources.AdGroupBidModifier;

                        /**
                         * Encodes the specified AdGroupBidModifier message. Does not implicitly {@link google.ads.googleads.v8.resources.AdGroupBidModifier.verify|verify} messages.
                         * @param m AdGroupBidModifier message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAdGroupBidModifier, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupBidModifier message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IAdGroupBidModifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupBidModifier message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AdGroupBidModifier;

                        /**
                         * Verifies an AdGroupBidModifier message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupBidModifier message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupBidModifier
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AdGroupBidModifier;

                        /**
                         * Creates a plain object from an AdGroupBidModifier message. Also converts values to other types if specified.
                         * @param m AdGroupBidModifier
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AdGroupBidModifier, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupBidModifier to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.AdGroupCriterionStatusEnum.AdGroupCriterionStatus|keyof typeof google.ads.googleads.v8.enums.AdGroupCriterionStatusEnum.AdGroupCriterionStatus|null);

                        /** AdGroupCriterion quality_info */
                        quality_info?: (google.ads.googleads.v8.resources.AdGroupCriterion.IQualityInfo|null);

                        /** AdGroupCriterion ad_group */
                        ad_group?: (string|null);

                        /** AdGroupCriterion type */
                        type?: (google.ads.googleads.v8.enums.CriterionTypeEnum.CriterionType|keyof typeof google.ads.googleads.v8.enums.CriterionTypeEnum.CriterionType|null);

                        /** AdGroupCriterion negative */
                        negative?: (boolean|null);

                        /** AdGroupCriterion system_serving_status */
                        system_serving_status?: (google.ads.googleads.v8.enums.CriterionSystemServingStatusEnum.CriterionSystemServingStatus|keyof typeof google.ads.googleads.v8.enums.CriterionSystemServingStatusEnum.CriterionSystemServingStatus|null);

                        /** AdGroupCriterion approval_status */
                        approval_status?: (google.ads.googleads.v8.enums.AdGroupCriterionApprovalStatusEnum.AdGroupCriterionApprovalStatus|keyof typeof google.ads.googleads.v8.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.v8.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v8.enums.BiddingSourceEnum.BiddingSource|null);

                        /** AdGroupCriterion effective_cpm_bid_source */
                        effective_cpm_bid_source?: (google.ads.googleads.v8.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v8.enums.BiddingSourceEnum.BiddingSource|null);

                        /** AdGroupCriterion effective_cpv_bid_source */
                        effective_cpv_bid_source?: (google.ads.googleads.v8.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v8.enums.BiddingSourceEnum.BiddingSource|null);

                        /** AdGroupCriterion effective_percent_cpc_bid_source */
                        effective_percent_cpc_bid_source?: (google.ads.googleads.v8.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v8.enums.BiddingSourceEnum.BiddingSource|null);

                        /** AdGroupCriterion position_estimates */
                        position_estimates?: (google.ads.googleads.v8.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.v8.common.ICustomParameter[]|null);

                        /** AdGroupCriterion keyword */
                        keyword?: (google.ads.googleads.v8.common.IKeywordInfo|null);

                        /** AdGroupCriterion placement */
                        placement?: (google.ads.googleads.v8.common.IPlacementInfo|null);

                        /** AdGroupCriterion mobile_app_category */
                        mobile_app_category?: (google.ads.googleads.v8.common.IMobileAppCategoryInfo|null);

                        /** AdGroupCriterion mobile_application */
                        mobile_application?: (google.ads.googleads.v8.common.IMobileApplicationInfo|null);

                        /** AdGroupCriterion listing_group */
                        listing_group?: (google.ads.googleads.v8.common.IListingGroupInfo|null);

                        /** AdGroupCriterion age_range */
                        age_range?: (google.ads.googleads.v8.common.IAgeRangeInfo|null);

                        /** AdGroupCriterion gender */
                        gender?: (google.ads.googleads.v8.common.IGenderInfo|null);

                        /** AdGroupCriterion income_range */
                        income_range?: (google.ads.googleads.v8.common.IIncomeRangeInfo|null);

                        /** AdGroupCriterion parental_status */
                        parental_status?: (google.ads.googleads.v8.common.IParentalStatusInfo|null);

                        /** AdGroupCriterion user_list */
                        user_list?: (google.ads.googleads.v8.common.IUserListInfo|null);

                        /** AdGroupCriterion youtube_video */
                        youtube_video?: (google.ads.googleads.v8.common.IYouTubeVideoInfo|null);

                        /** AdGroupCriterion youtube_channel */
                        youtube_channel?: (google.ads.googleads.v8.common.IYouTubeChannelInfo|null);

                        /** AdGroupCriterion topic */
                        topic?: (google.ads.googleads.v8.common.ITopicInfo|null);

                        /** AdGroupCriterion user_interest */
                        user_interest?: (google.ads.googleads.v8.common.IUserInterestInfo|null);

                        /** AdGroupCriterion webpage */
                        webpage?: (google.ads.googleads.v8.common.IWebpageInfo|null);

                        /** AdGroupCriterion app_payment_model */
                        app_payment_model?: (google.ads.googleads.v8.common.IAppPaymentModelInfo|null);

                        /** AdGroupCriterion custom_affinity */
                        custom_affinity?: (google.ads.googleads.v8.common.ICustomAffinityInfo|null);

                        /** AdGroupCriterion custom_intent */
                        custom_intent?: (google.ads.googleads.v8.common.ICustomIntentInfo|null);

                        /** AdGroupCriterion custom_audience */
                        custom_audience?: (google.ads.googleads.v8.common.ICustomAudienceInfo|null);

                        /** AdGroupCriterion combined_audience */
                        combined_audience?: (google.ads.googleads.v8.common.ICombinedAudienceInfo|null);
                    }

                    /** Represents an AdGroupCriterion. */
                    class AdGroupCriterion implements IAdGroupCriterion {

                        /**
                         * Constructs a new AdGroupCriterion.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.AdGroupCriterionStatusEnum.AdGroupCriterionStatus|keyof typeof google.ads.googleads.v8.enums.AdGroupCriterionStatusEnum.AdGroupCriterionStatus);

                        /** AdGroupCriterion quality_info. */
                        public quality_info?: (google.ads.googleads.v8.resources.AdGroupCriterion.IQualityInfo|null);

                        /** AdGroupCriterion ad_group. */
                        public ad_group?: (string|null);

                        /** AdGroupCriterion type. */
                        public type: (google.ads.googleads.v8.enums.CriterionTypeEnum.CriterionType|keyof typeof google.ads.googleads.v8.enums.CriterionTypeEnum.CriterionType);

                        /** AdGroupCriterion negative. */
                        public negative?: (boolean|null);

                        /** AdGroupCriterion system_serving_status. */
                        public system_serving_status: (google.ads.googleads.v8.enums.CriterionSystemServingStatusEnum.CriterionSystemServingStatus|keyof typeof google.ads.googleads.v8.enums.CriterionSystemServingStatusEnum.CriterionSystemServingStatus);

                        /** AdGroupCriterion approval_status. */
                        public approval_status: (google.ads.googleads.v8.enums.AdGroupCriterionApprovalStatusEnum.AdGroupCriterionApprovalStatus|keyof typeof google.ads.googleads.v8.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.v8.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v8.enums.BiddingSourceEnum.BiddingSource);

                        /** AdGroupCriterion effective_cpm_bid_source. */
                        public effective_cpm_bid_source: (google.ads.googleads.v8.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v8.enums.BiddingSourceEnum.BiddingSource);

                        /** AdGroupCriterion effective_cpv_bid_source. */
                        public effective_cpv_bid_source: (google.ads.googleads.v8.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v8.enums.BiddingSourceEnum.BiddingSource);

                        /** AdGroupCriterion effective_percent_cpc_bid_source. */
                        public effective_percent_cpc_bid_source: (google.ads.googleads.v8.enums.BiddingSourceEnum.BiddingSource|keyof typeof google.ads.googleads.v8.enums.BiddingSourceEnum.BiddingSource);

                        /** AdGroupCriterion position_estimates. */
                        public position_estimates?: (google.ads.googleads.v8.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.v8.common.ICustomParameter[];

                        /** AdGroupCriterion keyword. */
                        public keyword?: (google.ads.googleads.v8.common.IKeywordInfo|null);

                        /** AdGroupCriterion placement. */
                        public placement?: (google.ads.googleads.v8.common.IPlacementInfo|null);

                        /** AdGroupCriterion mobile_app_category. */
                        public mobile_app_category?: (google.ads.googleads.v8.common.IMobileAppCategoryInfo|null);

                        /** AdGroupCriterion mobile_application. */
                        public mobile_application?: (google.ads.googleads.v8.common.IMobileApplicationInfo|null);

                        /** AdGroupCriterion listing_group. */
                        public listing_group?: (google.ads.googleads.v8.common.IListingGroupInfo|null);

                        /** AdGroupCriterion age_range. */
                        public age_range?: (google.ads.googleads.v8.common.IAgeRangeInfo|null);

                        /** AdGroupCriterion gender. */
                        public gender?: (google.ads.googleads.v8.common.IGenderInfo|null);

                        /** AdGroupCriterion income_range. */
                        public income_range?: (google.ads.googleads.v8.common.IIncomeRangeInfo|null);

                        /** AdGroupCriterion parental_status. */
                        public parental_status?: (google.ads.googleads.v8.common.IParentalStatusInfo|null);

                        /** AdGroupCriterion user_list. */
                        public user_list?: (google.ads.googleads.v8.common.IUserListInfo|null);

                        /** AdGroupCriterion youtube_video. */
                        public youtube_video?: (google.ads.googleads.v8.common.IYouTubeVideoInfo|null);

                        /** AdGroupCriterion youtube_channel. */
                        public youtube_channel?: (google.ads.googleads.v8.common.IYouTubeChannelInfo|null);

                        /** AdGroupCriterion topic. */
                        public topic?: (google.ads.googleads.v8.common.ITopicInfo|null);

                        /** AdGroupCriterion user_interest. */
                        public user_interest?: (google.ads.googleads.v8.common.IUserInterestInfo|null);

                        /** AdGroupCriterion webpage. */
                        public webpage?: (google.ads.googleads.v8.common.IWebpageInfo|null);

                        /** AdGroupCriterion app_payment_model. */
                        public app_payment_model?: (google.ads.googleads.v8.common.IAppPaymentModelInfo|null);

                        /** AdGroupCriterion custom_affinity. */
                        public custom_affinity?: (google.ads.googleads.v8.common.ICustomAffinityInfo|null);

                        /** AdGroupCriterion custom_intent. */
                        public custom_intent?: (google.ads.googleads.v8.common.ICustomIntentInfo|null);

                        /** AdGroupCriterion custom_audience. */
                        public custom_audience?: (google.ads.googleads.v8.common.ICustomAudienceInfo|null);

                        /** AdGroupCriterion combined_audience. */
                        public combined_audience?: (google.ads.googleads.v8.common.ICombinedAudienceInfo|null);

                        /** AdGroupCriterion _criterion_id. */
                        public _criterion_id?: "criterion_id";

                        /** AdGroupCriterion _ad_group. */
                        public _ad_group?: "ad_group";

                        /** AdGroupCriterion _negative. */
                        public _negative?: "negative";

                        /** AdGroupCriterion _bid_modifier. */
                        public _bid_modifier?: "bid_modifier";

                        /** AdGroupCriterion _cpc_bid_micros. */
                        public _cpc_bid_micros?: "cpc_bid_micros";

                        /** AdGroupCriterion _cpm_bid_micros. */
                        public _cpm_bid_micros?: "cpm_bid_micros";

                        /** AdGroupCriterion _cpv_bid_micros. */
                        public _cpv_bid_micros?: "cpv_bid_micros";

                        /** AdGroupCriterion _percent_cpc_bid_micros. */
                        public _percent_cpc_bid_micros?: "percent_cpc_bid_micros";

                        /** AdGroupCriterion _effective_cpc_bid_micros. */
                        public _effective_cpc_bid_micros?: "effective_cpc_bid_micros";

                        /** AdGroupCriterion _effective_cpm_bid_micros. */
                        public _effective_cpm_bid_micros?: "effective_cpm_bid_micros";

                        /** AdGroupCriterion _effective_cpv_bid_micros. */
                        public _effective_cpv_bid_micros?: "effective_cpv_bid_micros";

                        /** AdGroupCriterion _effective_percent_cpc_bid_micros. */
                        public _effective_percent_cpc_bid_micros?: "effective_percent_cpc_bid_micros";

                        /** AdGroupCriterion _final_url_suffix. */
                        public _final_url_suffix?: "final_url_suffix";

                        /** AdGroupCriterion _tracking_url_template. */
                        public _tracking_url_template?: "tracking_url_template";

                        /** 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");

                        /**
                         * Creates a new AdGroupCriterion instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupCriterion instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IAdGroupCriterion): google.ads.googleads.v8.resources.AdGroupCriterion;

                        /**
                         * Encodes the specified AdGroupCriterion message. Does not implicitly {@link google.ads.googleads.v8.resources.AdGroupCriterion.verify|verify} messages.
                         * @param m AdGroupCriterion message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAdGroupCriterion, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupCriterion message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IAdGroupCriterion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupCriterion message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AdGroupCriterion;

                        /**
                         * Verifies an AdGroupCriterion message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupCriterion message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupCriterion
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AdGroupCriterion;

                        /**
                         * Creates a plain object from an AdGroupCriterion message. Also converts values to other types if specified.
                         * @param m AdGroupCriterion
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AdGroupCriterion, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupCriterion to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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.v8.enums.QualityScoreBucketEnum.QualityScoreBucket|keyof typeof google.ads.googleads.v8.enums.QualityScoreBucketEnum.QualityScoreBucket|null);

                            /** QualityInfo post_click_quality_score */
                            post_click_quality_score?: (google.ads.googleads.v8.enums.QualityScoreBucketEnum.QualityScoreBucket|keyof typeof google.ads.googleads.v8.enums.QualityScoreBucketEnum.QualityScoreBucket|null);

                            /** QualityInfo search_predicted_ctr */
                            search_predicted_ctr?: (google.ads.googleads.v8.enums.QualityScoreBucketEnum.QualityScoreBucket|keyof typeof google.ads.googleads.v8.enums.QualityScoreBucketEnum.QualityScoreBucket|null);
                        }

                        /** Represents a QualityInfo. */
                        class QualityInfo implements IQualityInfo {

                            /**
                             * Constructs a new QualityInfo.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.AdGroupCriterion.IQualityInfo);

                            /** QualityInfo quality_score. */
                            public quality_score?: (number|null);

                            /** QualityInfo creative_quality_score. */
                            public creative_quality_score: (google.ads.googleads.v8.enums.QualityScoreBucketEnum.QualityScoreBucket|keyof typeof google.ads.googleads.v8.enums.QualityScoreBucketEnum.QualityScoreBucket);

                            /** QualityInfo post_click_quality_score. */
                            public post_click_quality_score: (google.ads.googleads.v8.enums.QualityScoreBucketEnum.QualityScoreBucket|keyof typeof google.ads.googleads.v8.enums.QualityScoreBucketEnum.QualityScoreBucket);

                            /** QualityInfo search_predicted_ctr. */
                            public search_predicted_ctr: (google.ads.googleads.v8.enums.QualityScoreBucketEnum.QualityScoreBucket|keyof typeof google.ads.googleads.v8.enums.QualityScoreBucketEnum.QualityScoreBucket);

                            /** QualityInfo _quality_score. */
                            public _quality_score?: "quality_score";

                            /**
                             * Creates a new QualityInfo instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns QualityInfo instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.AdGroupCriterion.IQualityInfo): google.ads.googleads.v8.resources.AdGroupCriterion.QualityInfo;

                            /**
                             * Encodes the specified QualityInfo message. Does not implicitly {@link google.ads.googleads.v8.resources.AdGroupCriterion.QualityInfo.verify|verify} messages.
                             * @param m QualityInfo message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.AdGroupCriterion.IQualityInfo, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified QualityInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.AdGroupCriterion.IQualityInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a QualityInfo message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AdGroupCriterion.QualityInfo;

                            /**
                             * Verifies a QualityInfo message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a QualityInfo message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns QualityInfo
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AdGroupCriterion.QualityInfo;

                            /**
                             * Creates a plain object from a QualityInfo message. Also converts values to other types if specified.
                             * @param m QualityInfo
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.AdGroupCriterion.QualityInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this QualityInfo to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** 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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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);

                            /** PositionEstimates _first_page_cpc_micros. */
                            public _first_page_cpc_micros?: "first_page_cpc_micros";

                            /** PositionEstimates _first_position_cpc_micros. */
                            public _first_position_cpc_micros?: "first_position_cpc_micros";

                            /** PositionEstimates _top_of_page_cpc_micros. */
                            public _top_of_page_cpc_micros?: "top_of_page_cpc_micros";

                            /** PositionEstimates _estimated_add_clicks_at_first_position_cpc. */
                            public _estimated_add_clicks_at_first_position_cpc?: "estimated_add_clicks_at_first_position_cpc";

                            /** PositionEstimates _estimated_add_cost_at_first_position_cpc. */
                            public _estimated_add_cost_at_first_position_cpc?: "estimated_add_cost_at_first_position_cpc";

                            /**
                             * Creates a new PositionEstimates instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns PositionEstimates instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.AdGroupCriterion.IPositionEstimates): google.ads.googleads.v8.resources.AdGroupCriterion.PositionEstimates;

                            /**
                             * Encodes the specified PositionEstimates message. Does not implicitly {@link google.ads.googleads.v8.resources.AdGroupCriterion.PositionEstimates.verify|verify} messages.
                             * @param m PositionEstimates message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.AdGroupCriterion.IPositionEstimates, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified PositionEstimates message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.AdGroupCriterion.IPositionEstimates, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a PositionEstimates message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AdGroupCriterion.PositionEstimates;

                            /**
                             * Verifies a PositionEstimates message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a PositionEstimates message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns PositionEstimates
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AdGroupCriterion.PositionEstimates;

                            /**
                             * Creates a plain object from a PositionEstimates message. Also converts values to other types if specified.
                             * @param m PositionEstimates
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.AdGroupCriterion.PositionEstimates, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this PositionEstimates to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** AdGroupCriterionLabel _ad_group_criterion. */
                        public _ad_group_criterion?: "ad_group_criterion";

                        /** AdGroupCriterionLabel _label. */
                        public _label?: "label";

                        /**
                         * Creates a new AdGroupCriterionLabel instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupCriterionLabel instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IAdGroupCriterionLabel): google.ads.googleads.v8.resources.AdGroupCriterionLabel;

                        /**
                         * Encodes the specified AdGroupCriterionLabel message. Does not implicitly {@link google.ads.googleads.v8.resources.AdGroupCriterionLabel.verify|verify} messages.
                         * @param m AdGroupCriterionLabel message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAdGroupCriterionLabel, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupCriterionLabel message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IAdGroupCriterionLabel, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupCriterionLabel message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AdGroupCriterionLabel;

                        /**
                         * Verifies an AdGroupCriterionLabel message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupCriterionLabel message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupCriterionLabel
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AdGroupCriterionLabel;

                        /**
                         * Creates a plain object from an AdGroupCriterionLabel message. Also converts values to other types if specified.
                         * @param m AdGroupCriterionLabel
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AdGroupCriterionLabel, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupCriterionLabel to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.SimulationTypeEnum.SimulationType|keyof typeof google.ads.googleads.v8.enums.SimulationTypeEnum.SimulationType|null);

                        /** AdGroupCriterionSimulation modification_method */
                        modification_method?: (google.ads.googleads.v8.enums.SimulationModificationMethodEnum.SimulationModificationMethod|keyof typeof google.ads.googleads.v8.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.v8.common.ICpcBidSimulationPointList|null);

                        /** AdGroupCriterionSimulation percent_cpc_bid_point_list */
                        percent_cpc_bid_point_list?: (google.ads.googleads.v8.common.IPercentCpcBidSimulationPointList|null);
                    }

                    /** Represents an AdGroupCriterionSimulation. */
                    class AdGroupCriterionSimulation implements IAdGroupCriterionSimulation {

                        /**
                         * Constructs a new AdGroupCriterionSimulation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.SimulationTypeEnum.SimulationType|keyof typeof google.ads.googleads.v8.enums.SimulationTypeEnum.SimulationType);

                        /** AdGroupCriterionSimulation modification_method. */
                        public modification_method: (google.ads.googleads.v8.enums.SimulationModificationMethodEnum.SimulationModificationMethod|keyof typeof google.ads.googleads.v8.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.v8.common.ICpcBidSimulationPointList|null);

                        /** AdGroupCriterionSimulation percent_cpc_bid_point_list. */
                        public percent_cpc_bid_point_list?: (google.ads.googleads.v8.common.IPercentCpcBidSimulationPointList|null);

                        /** AdGroupCriterionSimulation _ad_group_id. */
                        public _ad_group_id?: "ad_group_id";

                        /** AdGroupCriterionSimulation _criterion_id. */
                        public _criterion_id?: "criterion_id";

                        /** AdGroupCriterionSimulation _start_date. */
                        public _start_date?: "start_date";

                        /** AdGroupCriterionSimulation _end_date. */
                        public _end_date?: "end_date";

                        /** 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.v8.resources.IAdGroupCriterionSimulation): google.ads.googleads.v8.resources.AdGroupCriterionSimulation;

                        /**
                         * Encodes the specified AdGroupCriterionSimulation message. Does not implicitly {@link google.ads.googleads.v8.resources.AdGroupCriterionSimulation.verify|verify} messages.
                         * @param m AdGroupCriterionSimulation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAdGroupCriterionSimulation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupCriterionSimulation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IAdGroupCriterionSimulation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupCriterionSimulation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AdGroupCriterionSimulation;

                        /**
                         * Verifies an AdGroupCriterionSimulation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupCriterionSimulation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupCriterionSimulation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AdGroupCriterionSimulation;

                        /**
                         * Creates a plain object from an AdGroupCriterionSimulation message. Also converts values to other types if specified.
                         * @param m AdGroupCriterionSimulation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AdGroupCriterionSimulation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupCriterionSimulation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an AdGroupExtensionSetting. */
                    interface IAdGroupExtensionSetting {

                        /** AdGroupExtensionSetting resource_name */
                        resource_name?: (string|null);

                        /** AdGroupExtensionSetting extension_type */
                        extension_type?: (google.ads.googleads.v8.enums.ExtensionTypeEnum.ExtensionType|keyof typeof google.ads.googleads.v8.enums.ExtensionTypeEnum.ExtensionType|null);

                        /** AdGroupExtensionSetting ad_group */
                        ad_group?: (string|null);

                        /** AdGroupExtensionSetting extension_feed_items */
                        extension_feed_items?: (string[]|null);

                        /** AdGroupExtensionSetting device */
                        device?: (google.ads.googleads.v8.enums.ExtensionSettingDeviceEnum.ExtensionSettingDevice|keyof typeof google.ads.googleads.v8.enums.ExtensionSettingDeviceEnum.ExtensionSettingDevice|null);
                    }

                    /** Represents an AdGroupExtensionSetting. */
                    class AdGroupExtensionSetting implements IAdGroupExtensionSetting {

                        /**
                         * Constructs a new AdGroupExtensionSetting.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IAdGroupExtensionSetting);

                        /** AdGroupExtensionSetting resource_name. */
                        public resource_name: string;

                        /** AdGroupExtensionSetting extension_type. */
                        public extension_type: (google.ads.googleads.v8.enums.ExtensionTypeEnum.ExtensionType|keyof typeof google.ads.googleads.v8.enums.ExtensionTypeEnum.ExtensionType);

                        /** AdGroupExtensionSetting ad_group. */
                        public ad_group?: (string|null);

                        /** AdGroupExtensionSetting extension_feed_items. */
                        public extension_feed_items: string[];

                        /** AdGroupExtensionSetting device. */
                        public device: (google.ads.googleads.v8.enums.ExtensionSettingDeviceEnum.ExtensionSettingDevice|keyof typeof google.ads.googleads.v8.enums.ExtensionSettingDeviceEnum.ExtensionSettingDevice);

                        /** AdGroupExtensionSetting _ad_group. */
                        public _ad_group?: "ad_group";

                        /**
                         * Creates a new AdGroupExtensionSetting instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupExtensionSetting instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IAdGroupExtensionSetting): google.ads.googleads.v8.resources.AdGroupExtensionSetting;

                        /**
                         * Encodes the specified AdGroupExtensionSetting message. Does not implicitly {@link google.ads.googleads.v8.resources.AdGroupExtensionSetting.verify|verify} messages.
                         * @param m AdGroupExtensionSetting message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAdGroupExtensionSetting, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupExtensionSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.AdGroupExtensionSetting.verify|verify} messages.
                         * @param message AdGroupExtensionSetting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.IAdGroupExtensionSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupExtensionSetting message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns AdGroupExtensionSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.AdGroupExtensionSetting;

                        /**
                         * Decodes an AdGroupExtensionSetting message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupExtensionSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.AdGroupExtensionSetting;

                        /**
                         * Verifies an AdGroupExtensionSetting message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupExtensionSetting message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupExtensionSetting
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AdGroupExtensionSetting;

                        /**
                         * Creates a plain object from an AdGroupExtensionSetting message. Also converts values to other types if specified.
                         * @param m AdGroupExtensionSetting
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AdGroupExtensionSetting, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupExtensionSetting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an AdGroupFeed. */
                    interface IAdGroupFeed {

                        /** AdGroupFeed resource_name */
                        resource_name?: (string|null);

                        /** AdGroupFeed feed */
                        feed?: (string|null);

                        /** AdGroupFeed ad_group */
                        ad_group?: (string|null);

                        /** AdGroupFeed placeholder_types */
                        placeholder_types?: (google.ads.googleads.v8.enums.PlaceholderTypeEnum.PlaceholderType[]|null);

                        /** AdGroupFeed matching_function */
                        matching_function?: (google.ads.googleads.v8.common.IMatchingFunction|null);

                        /** AdGroupFeed status */
                        status?: (google.ads.googleads.v8.enums.FeedLinkStatusEnum.FeedLinkStatus|keyof typeof google.ads.googleads.v8.enums.FeedLinkStatusEnum.FeedLinkStatus|null);
                    }

                    /** Represents an AdGroupFeed. */
                    class AdGroupFeed implements IAdGroupFeed {

                        /**
                         * Constructs a new AdGroupFeed.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IAdGroupFeed);

                        /** AdGroupFeed resource_name. */
                        public resource_name: string;

                        /** AdGroupFeed feed. */
                        public feed?: (string|null);

                        /** AdGroupFeed ad_group. */
                        public ad_group?: (string|null);

                        /** AdGroupFeed placeholder_types. */
                        public placeholder_types: google.ads.googleads.v8.enums.PlaceholderTypeEnum.PlaceholderType[];

                        /** AdGroupFeed matching_function. */
                        public matching_function?: (google.ads.googleads.v8.common.IMatchingFunction|null);

                        /** AdGroupFeed status. */
                        public status: (google.ads.googleads.v8.enums.FeedLinkStatusEnum.FeedLinkStatus|keyof typeof google.ads.googleads.v8.enums.FeedLinkStatusEnum.FeedLinkStatus);

                        /** AdGroupFeed _feed. */
                        public _feed?: "feed";

                        /** AdGroupFeed _ad_group. */
                        public _ad_group?: "ad_group";

                        /**
                         * Creates a new AdGroupFeed instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupFeed instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IAdGroupFeed): google.ads.googleads.v8.resources.AdGroupFeed;

                        /**
                         * Encodes the specified AdGroupFeed message. Does not implicitly {@link google.ads.googleads.v8.resources.AdGroupFeed.verify|verify} messages.
                         * @param m AdGroupFeed message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAdGroupFeed, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupFeed message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.AdGroupFeed.verify|verify} messages.
                         * @param message AdGroupFeed message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.IAdGroupFeed, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupFeed message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns AdGroupFeed
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.AdGroupFeed;

                        /**
                         * Decodes an AdGroupFeed message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupFeed
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.AdGroupFeed;

                        /**
                         * Verifies an AdGroupFeed message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupFeed message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupFeed
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AdGroupFeed;

                        /**
                         * Creates a plain object from an AdGroupFeed message. Also converts values to other types if specified.
                         * @param m AdGroupFeed
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AdGroupFeed, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupFeed to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IAdGroupLabel);

                        /** AdGroupLabel resource_name. */
                        public resource_name: string;

                        /** AdGroupLabel ad_group. */
                        public ad_group?: (string|null);

                        /** AdGroupLabel label. */
                        public label?: (string|null);

                        /** AdGroupLabel _ad_group. */
                        public _ad_group?: "ad_group";

                        /** AdGroupLabel _label. */
                        public _label?: "label";

                        /**
                         * Creates a new AdGroupLabel instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupLabel instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IAdGroupLabel): google.ads.googleads.v8.resources.AdGroupLabel;

                        /**
                         * Encodes the specified AdGroupLabel message. Does not implicitly {@link google.ads.googleads.v8.resources.AdGroupLabel.verify|verify} messages.
                         * @param m AdGroupLabel message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAdGroupLabel, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupLabel message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IAdGroupLabel, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupLabel message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AdGroupLabel;

                        /**
                         * Verifies an AdGroupLabel message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupLabel message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupLabel
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AdGroupLabel;

                        /**
                         * Creates a plain object from an AdGroupLabel message. Also converts values to other types if specified.
                         * @param m AdGroupLabel
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AdGroupLabel, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupLabel to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.SimulationTypeEnum.SimulationType|keyof typeof google.ads.googleads.v8.enums.SimulationTypeEnum.SimulationType|null);

                        /** AdGroupSimulation modification_method */
                        modification_method?: (google.ads.googleads.v8.enums.SimulationModificationMethodEnum.SimulationModificationMethod|keyof typeof google.ads.googleads.v8.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.v8.common.ICpcBidSimulationPointList|null);

                        /** AdGroupSimulation cpv_bid_point_list */
                        cpv_bid_point_list?: (google.ads.googleads.v8.common.ICpvBidSimulationPointList|null);

                        /** AdGroupSimulation target_cpa_point_list */
                        target_cpa_point_list?: (google.ads.googleads.v8.common.ITargetCpaSimulationPointList|null);

                        /** AdGroupSimulation target_roas_point_list */
                        target_roas_point_list?: (google.ads.googleads.v8.common.ITargetRoasSimulationPointList|null);
                    }

                    /** Represents an AdGroupSimulation. */
                    class AdGroupSimulation implements IAdGroupSimulation {

                        /**
                         * Constructs a new AdGroupSimulation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.SimulationTypeEnum.SimulationType|keyof typeof google.ads.googleads.v8.enums.SimulationTypeEnum.SimulationType);

                        /** AdGroupSimulation modification_method. */
                        public modification_method: (google.ads.googleads.v8.enums.SimulationModificationMethodEnum.SimulationModificationMethod|keyof typeof google.ads.googleads.v8.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.v8.common.ICpcBidSimulationPointList|null);

                        /** AdGroupSimulation cpv_bid_point_list. */
                        public cpv_bid_point_list?: (google.ads.googleads.v8.common.ICpvBidSimulationPointList|null);

                        /** AdGroupSimulation target_cpa_point_list. */
                        public target_cpa_point_list?: (google.ads.googleads.v8.common.ITargetCpaSimulationPointList|null);

                        /** AdGroupSimulation target_roas_point_list. */
                        public target_roas_point_list?: (google.ads.googleads.v8.common.ITargetRoasSimulationPointList|null);

                        /** AdGroupSimulation _ad_group_id. */
                        public _ad_group_id?: "ad_group_id";

                        /** AdGroupSimulation _start_date. */
                        public _start_date?: "start_date";

                        /** AdGroupSimulation _end_date. */
                        public _end_date?: "end_date";

                        /** 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.v8.resources.IAdGroupSimulation): google.ads.googleads.v8.resources.AdGroupSimulation;

                        /**
                         * Encodes the specified AdGroupSimulation message. Does not implicitly {@link google.ads.googleads.v8.resources.AdGroupSimulation.verify|verify} messages.
                         * @param m AdGroupSimulation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAdGroupSimulation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupSimulation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IAdGroupSimulation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupSimulation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AdGroupSimulation;

                        /**
                         * Verifies an AdGroupSimulation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupSimulation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupSimulation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AdGroupSimulation;

                        /**
                         * Creates a plain object from an AdGroupSimulation message. Also converts values to other types if specified.
                         * @param m AdGroupSimulation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AdGroupSimulation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupSimulation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** AdParameter _ad_group_criterion. */
                        public _ad_group_criterion?: "ad_group_criterion";

                        /** AdParameter _parameter_index. */
                        public _parameter_index?: "parameter_index";

                        /** AdParameter _insertion_text. */
                        public _insertion_text?: "insertion_text";

                        /**
                         * Creates a new AdParameter instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdParameter instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IAdParameter): google.ads.googleads.v8.resources.AdParameter;

                        /**
                         * Encodes the specified AdParameter message. Does not implicitly {@link google.ads.googleads.v8.resources.AdParameter.verify|verify} messages.
                         * @param m AdParameter message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAdParameter, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdParameter message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IAdParameter, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdParameter message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AdParameter;

                        /**
                         * Verifies an AdParameter message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdParameter message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdParameter
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AdParameter;

                        /**
                         * Creates a plain object from an AdParameter message. Also converts values to other types if specified.
                         * @param m AdParameter
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AdParameter, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdParameter to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.resources.IAdScheduleView): google.ads.googleads.v8.resources.AdScheduleView;

                        /**
                         * Encodes the specified AdScheduleView message. Does not implicitly {@link google.ads.googleads.v8.resources.AdScheduleView.verify|verify} messages.
                         * @param m AdScheduleView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAdScheduleView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdScheduleView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IAdScheduleView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdScheduleView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AdScheduleView;

                        /**
                         * Verifies an AdScheduleView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdScheduleView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdScheduleView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AdScheduleView;

                        /**
                         * Creates a plain object from an AdScheduleView message. Also converts values to other types if specified.
                         * @param m AdScheduleView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AdScheduleView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdScheduleView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.resources.IAgeRangeView): google.ads.googleads.v8.resources.AgeRangeView;

                        /**
                         * Encodes the specified AgeRangeView message. Does not implicitly {@link google.ads.googleads.v8.resources.AgeRangeView.verify|verify} messages.
                         * @param m AgeRangeView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAgeRangeView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AgeRangeView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IAgeRangeView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AgeRangeView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AgeRangeView;

                        /**
                         * Verifies an AgeRangeView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AgeRangeView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AgeRangeView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AgeRangeView;

                        /**
                         * Creates a plain object from an AgeRangeView message. Also converts values to other types if specified.
                         * @param m AgeRangeView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AgeRangeView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AgeRangeView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.AssetTypeEnum.AssetType|keyof typeof google.ads.googleads.v8.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.v8.common.ICustomParameter[]|null);

                        /** Asset final_url_suffix */
                        final_url_suffix?: (string|null);

                        /** Asset policy_summary */
                        policy_summary?: (google.ads.googleads.v8.resources.IAssetPolicySummary|null);

                        /** Asset youtube_video_asset */
                        youtube_video_asset?: (google.ads.googleads.v8.common.IYoutubeVideoAsset|null);

                        /** Asset media_bundle_asset */
                        media_bundle_asset?: (google.ads.googleads.v8.common.IMediaBundleAsset|null);

                        /** Asset image_asset */
                        image_asset?: (google.ads.googleads.v8.common.IImageAsset|null);

                        /** Asset text_asset */
                        text_asset?: (google.ads.googleads.v8.common.ITextAsset|null);

                        /** Asset lead_form_asset */
                        lead_form_asset?: (google.ads.googleads.v8.common.ILeadFormAsset|null);

                        /** Asset book_on_google_asset */
                        book_on_google_asset?: (google.ads.googleads.v8.common.IBookOnGoogleAsset|null);

                        /** Asset promotion_asset */
                        promotion_asset?: (google.ads.googleads.v8.common.IPromotionAsset|null);

                        /** Asset callout_asset */
                        callout_asset?: (google.ads.googleads.v8.common.ICalloutAsset|null);

                        /** Asset structured_snippet_asset */
                        structured_snippet_asset?: (google.ads.googleads.v8.common.IStructuredSnippetAsset|null);

                        /** Asset sitelink_asset */
                        sitelink_asset?: (google.ads.googleads.v8.common.ISitelinkAsset|null);
                    }

                    /** Represents an Asset. */
                    class Asset implements IAsset {

                        /**
                         * Constructs a new Asset.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.AssetTypeEnum.AssetType|keyof typeof google.ads.googleads.v8.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.v8.common.ICustomParameter[];

                        /** Asset final_url_suffix. */
                        public final_url_suffix?: (string|null);

                        /** Asset policy_summary. */
                        public policy_summary?: (google.ads.googleads.v8.resources.IAssetPolicySummary|null);

                        /** Asset youtube_video_asset. */
                        public youtube_video_asset?: (google.ads.googleads.v8.common.IYoutubeVideoAsset|null);

                        /** Asset media_bundle_asset. */
                        public media_bundle_asset?: (google.ads.googleads.v8.common.IMediaBundleAsset|null);

                        /** Asset image_asset. */
                        public image_asset?: (google.ads.googleads.v8.common.IImageAsset|null);

                        /** Asset text_asset. */
                        public text_asset?: (google.ads.googleads.v8.common.ITextAsset|null);

                        /** Asset lead_form_asset. */
                        public lead_form_asset?: (google.ads.googleads.v8.common.ILeadFormAsset|null);

                        /** Asset book_on_google_asset. */
                        public book_on_google_asset?: (google.ads.googleads.v8.common.IBookOnGoogleAsset|null);

                        /** Asset promotion_asset. */
                        public promotion_asset?: (google.ads.googleads.v8.common.IPromotionAsset|null);

                        /** Asset callout_asset. */
                        public callout_asset?: (google.ads.googleads.v8.common.ICalloutAsset|null);

                        /** Asset structured_snippet_asset. */
                        public structured_snippet_asset?: (google.ads.googleads.v8.common.IStructuredSnippetAsset|null);

                        /** Asset sitelink_asset. */
                        public sitelink_asset?: (google.ads.googleads.v8.common.ISitelinkAsset|null);

                        /** Asset _id. */
                        public _id?: "id";

                        /** Asset _name. */
                        public _name?: "name";

                        /** Asset _tracking_url_template. */
                        public _tracking_url_template?: "tracking_url_template";

                        /** Asset _final_url_suffix. */
                        public _final_url_suffix?: "final_url_suffix";

                        /** 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");

                        /**
                         * Creates a new Asset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Asset instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IAsset): google.ads.googleads.v8.resources.Asset;

                        /**
                         * Encodes the specified Asset message. Does not implicitly {@link google.ads.googleads.v8.resources.Asset.verify|verify} messages.
                         * @param m Asset message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAsset, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Asset message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an Asset message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Asset;

                        /**
                         * Verifies an Asset message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an Asset message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns Asset
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Asset;

                        /**
                         * Creates a plain object from an Asset message. Also converts values to other types if specified.
                         * @param m Asset
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.Asset, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Asset to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an AssetPolicySummary. */
                    interface IAssetPolicySummary {

                        /** AssetPolicySummary policy_topic_entries */
                        policy_topic_entries?: (google.ads.googleads.v8.common.IPolicyTopicEntry[]|null);

                        /** AssetPolicySummary review_status */
                        review_status?: (google.ads.googleads.v8.enums.PolicyReviewStatusEnum.PolicyReviewStatus|keyof typeof google.ads.googleads.v8.enums.PolicyReviewStatusEnum.PolicyReviewStatus|null);

                        /** AssetPolicySummary approval_status */
                        approval_status?: (google.ads.googleads.v8.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|keyof typeof google.ads.googleads.v8.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|null);
                    }

                    /** Represents an AssetPolicySummary. */
                    class AssetPolicySummary implements IAssetPolicySummary {

                        /**
                         * Constructs a new AssetPolicySummary.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IAssetPolicySummary);

                        /** AssetPolicySummary policy_topic_entries. */
                        public policy_topic_entries: google.ads.googleads.v8.common.IPolicyTopicEntry[];

                        /** AssetPolicySummary review_status. */
                        public review_status: (google.ads.googleads.v8.enums.PolicyReviewStatusEnum.PolicyReviewStatus|keyof typeof google.ads.googleads.v8.enums.PolicyReviewStatusEnum.PolicyReviewStatus);

                        /** AssetPolicySummary approval_status. */
                        public approval_status: (google.ads.googleads.v8.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|keyof typeof google.ads.googleads.v8.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.v8.resources.IAssetPolicySummary): google.ads.googleads.v8.resources.AssetPolicySummary;

                        /**
                         * Encodes the specified AssetPolicySummary message. Does not implicitly {@link google.ads.googleads.v8.resources.AssetPolicySummary.verify|verify} messages.
                         * @param m AssetPolicySummary message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAssetPolicySummary, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetPolicySummary message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IAssetPolicySummary, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetPolicySummary message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AssetPolicySummary;

                        /**
                         * Verifies an AssetPolicySummary message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AssetPolicySummary message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AssetPolicySummary
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AssetPolicySummary;

                        /**
                         * Creates a plain object from an AssetPolicySummary message. Also converts values to other types if specified.
                         * @param m AssetPolicySummary
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AssetPolicySummary, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetPolicySummary to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an AssetFieldTypeView. */
                    interface IAssetFieldTypeView {

                        /** AssetFieldTypeView resource_name */
                        resource_name?: (string|null);

                        /** AssetFieldTypeView field_type */
                        field_type?: (google.ads.googleads.v8.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v8.enums.AssetFieldTypeEnum.AssetFieldType|null);
                    }

                    /** Represents an AssetFieldTypeView. */
                    class AssetFieldTypeView implements IAssetFieldTypeView {

                        /**
                         * Constructs a new AssetFieldTypeView.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IAssetFieldTypeView);

                        /** AssetFieldTypeView resource_name. */
                        public resource_name: string;

                        /** AssetFieldTypeView field_type. */
                        public field_type: (google.ads.googleads.v8.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v8.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.v8.resources.IAssetFieldTypeView): google.ads.googleads.v8.resources.AssetFieldTypeView;

                        /**
                         * Encodes the specified AssetFieldTypeView message. Does not implicitly {@link google.ads.googleads.v8.resources.AssetFieldTypeView.verify|verify} messages.
                         * @param m AssetFieldTypeView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAssetFieldTypeView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetFieldTypeView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IAssetFieldTypeView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetFieldTypeView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.AssetFieldTypeView;

                        /**
                         * Verifies an AssetFieldTypeView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AssetFieldTypeView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AssetFieldTypeView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AssetFieldTypeView;

                        /**
                         * Creates a plain object from an AssetFieldTypeView message. Also converts values to other types if specified.
                         * @param m AssetFieldTypeView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AssetFieldTypeView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetFieldTypeView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.resources.BatchJob.IBatchJobMetadata|null);

                        /** BatchJob status */
                        status?: (google.ads.googleads.v8.enums.BatchJobStatusEnum.BatchJobStatus|keyof typeof google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.resources.BatchJob.IBatchJobMetadata|null);

                        /** BatchJob status. */
                        public status: (google.ads.googleads.v8.enums.BatchJobStatusEnum.BatchJobStatus|keyof typeof google.ads.googleads.v8.enums.BatchJobStatusEnum.BatchJobStatus);

                        /** BatchJob long_running_operation. */
                        public long_running_operation?: (string|null);

                        /** BatchJob _id. */
                        public _id?: "id";

                        /** BatchJob _next_add_sequence_token. */
                        public _next_add_sequence_token?: "next_add_sequence_token";

                        /** BatchJob _long_running_operation. */
                        public _long_running_operation?: "long_running_operation";

                        /**
                         * Creates a new BatchJob instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BatchJob instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IBatchJob): google.ads.googleads.v8.resources.BatchJob;

                        /**
                         * Encodes the specified BatchJob message. Does not implicitly {@link google.ads.googleads.v8.resources.BatchJob.verify|verify} messages.
                         * @param m BatchJob message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IBatchJob, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BatchJob message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IBatchJob, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BatchJob message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.BatchJob;

                        /**
                         * Verifies a BatchJob message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BatchJob message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BatchJob
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.BatchJob;

                        /**
                         * Creates a plain object from a BatchJob message. Also converts values to other types if specified.
                         * @param m BatchJob
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.BatchJob, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BatchJob to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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);
                        }

                        /** Represents a BatchJobMetadata. */
                        class BatchJobMetadata implements IBatchJobMetadata {

                            /**
                             * Constructs a new BatchJobMetadata.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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 _creation_date_time. */
                            public _creation_date_time?: "creation_date_time";

                            /** BatchJobMetadata _start_date_time. */
                            public _start_date_time?: "start_date_time";

                            /** BatchJobMetadata _completion_date_time. */
                            public _completion_date_time?: "completion_date_time";

                            /** BatchJobMetadata _estimated_completion_ratio. */
                            public _estimated_completion_ratio?: "estimated_completion_ratio";

                            /** BatchJobMetadata _operation_count. */
                            public _operation_count?: "operation_count";

                            /** BatchJobMetadata _executed_operation_count. */
                            public _executed_operation_count?: "executed_operation_count";

                            /**
                             * Creates a new BatchJobMetadata instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns BatchJobMetadata instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.BatchJob.IBatchJobMetadata): google.ads.googleads.v8.resources.BatchJob.BatchJobMetadata;

                            /**
                             * Encodes the specified BatchJobMetadata message. Does not implicitly {@link google.ads.googleads.v8.resources.BatchJob.BatchJobMetadata.verify|verify} messages.
                             * @param m BatchJobMetadata message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.BatchJob.IBatchJobMetadata, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified BatchJobMetadata message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.BatchJob.IBatchJobMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a BatchJobMetadata message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.BatchJob.BatchJobMetadata;

                            /**
                             * Verifies a BatchJobMetadata message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a BatchJobMetadata message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns BatchJobMetadata
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.BatchJob.BatchJobMetadata;

                            /**
                             * Creates a plain object from a BatchJobMetadata message. Also converts values to other types if specified.
                             * @param m BatchJobMetadata
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.BatchJob.BatchJobMetadata, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this BatchJobMetadata to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }
                    }

                    /** 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.v8.enums.SeasonalityEventScopeEnum.SeasonalityEventScope|keyof typeof google.ads.googleads.v8.enums.SeasonalityEventScopeEnum.SeasonalityEventScope|null);

                        /** BiddingDataExclusion status */
                        status?: (google.ads.googleads.v8.enums.SeasonalityEventStatusEnum.SeasonalityEventStatus|keyof typeof google.ads.googleads.v8.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.v8.enums.DeviceEnum.Device[]|null);

                        /** BiddingDataExclusion campaigns */
                        campaigns?: (string[]|null);

                        /** BiddingDataExclusion advertising_channel_types */
                        advertising_channel_types?: (google.ads.googleads.v8.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType[]|null);
                    }

                    /** Represents a BiddingDataExclusion. */
                    class BiddingDataExclusion implements IBiddingDataExclusion {

                        /**
                         * Constructs a new BiddingDataExclusion.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.SeasonalityEventScopeEnum.SeasonalityEventScope|keyof typeof google.ads.googleads.v8.enums.SeasonalityEventScopeEnum.SeasonalityEventScope);

                        /** BiddingDataExclusion status. */
                        public status: (google.ads.googleads.v8.enums.SeasonalityEventStatusEnum.SeasonalityEventStatus|keyof typeof google.ads.googleads.v8.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.v8.enums.DeviceEnum.Device[];

                        /** BiddingDataExclusion campaigns. */
                        public campaigns: string[];

                        /** BiddingDataExclusion advertising_channel_types. */
                        public advertising_channel_types: google.ads.googleads.v8.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.v8.resources.IBiddingDataExclusion): google.ads.googleads.v8.resources.BiddingDataExclusion;

                        /**
                         * Encodes the specified BiddingDataExclusion message. Does not implicitly {@link google.ads.googleads.v8.resources.BiddingDataExclusion.verify|verify} messages.
                         * @param m BiddingDataExclusion message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IBiddingDataExclusion, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddingDataExclusion message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IBiddingDataExclusion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddingDataExclusion message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.BiddingDataExclusion;

                        /**
                         * Verifies a BiddingDataExclusion message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddingDataExclusion message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BiddingDataExclusion
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.BiddingDataExclusion;

                        /**
                         * Creates a plain object from a BiddingDataExclusion message. Also converts values to other types if specified.
                         * @param m BiddingDataExclusion
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.BiddingDataExclusion, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddingDataExclusion to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.SeasonalityEventScopeEnum.SeasonalityEventScope|keyof typeof google.ads.googleads.v8.enums.SeasonalityEventScopeEnum.SeasonalityEventScope|null);

                        /** BiddingSeasonalityAdjustment status */
                        status?: (google.ads.googleads.v8.enums.SeasonalityEventStatusEnum.SeasonalityEventStatus|keyof typeof google.ads.googleads.v8.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.v8.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.v8.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType[]|null);
                    }

                    /** Represents a BiddingSeasonalityAdjustment. */
                    class BiddingSeasonalityAdjustment implements IBiddingSeasonalityAdjustment {

                        /**
                         * Constructs a new BiddingSeasonalityAdjustment.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.SeasonalityEventScopeEnum.SeasonalityEventScope|keyof typeof google.ads.googleads.v8.enums.SeasonalityEventScopeEnum.SeasonalityEventScope);

                        /** BiddingSeasonalityAdjustment status. */
                        public status: (google.ads.googleads.v8.enums.SeasonalityEventStatusEnum.SeasonalityEventStatus|keyof typeof google.ads.googleads.v8.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.v8.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.v8.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.v8.resources.IBiddingSeasonalityAdjustment): google.ads.googleads.v8.resources.BiddingSeasonalityAdjustment;

                        /**
                         * Encodes the specified BiddingSeasonalityAdjustment message. Does not implicitly {@link google.ads.googleads.v8.resources.BiddingSeasonalityAdjustment.verify|verify} messages.
                         * @param m BiddingSeasonalityAdjustment message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IBiddingSeasonalityAdjustment, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddingSeasonalityAdjustment message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IBiddingSeasonalityAdjustment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddingSeasonalityAdjustment message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.BiddingSeasonalityAdjustment;

                        /**
                         * Verifies a BiddingSeasonalityAdjustment message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddingSeasonalityAdjustment message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BiddingSeasonalityAdjustment
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.BiddingSeasonalityAdjustment;

                        /**
                         * Creates a plain object from a BiddingSeasonalityAdjustment message. Also converts values to other types if specified.
                         * @param m BiddingSeasonalityAdjustment
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.BiddingSeasonalityAdjustment, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddingSeasonalityAdjustment to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.BiddingStrategyStatusEnum.BiddingStrategyStatus|keyof typeof google.ads.googleads.v8.enums.BiddingStrategyStatusEnum.BiddingStrategyStatus|null);

                        /** BiddingStrategy type */
                        type?: (google.ads.googleads.v8.enums.BiddingStrategyTypeEnum.BiddingStrategyType|keyof typeof google.ads.googleads.v8.enums.BiddingStrategyTypeEnum.BiddingStrategyType|null);

                        /** BiddingStrategy currency_code */
                        currency_code?: (string|null);

                        /** BiddingStrategy effective_currency_code */
                        effective_currency_code?: (string|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.v8.common.IEnhancedCpc|null);

                        /** BiddingStrategy maximize_conversion_value */
                        maximize_conversion_value?: (google.ads.googleads.v8.common.IMaximizeConversionValue|null);

                        /** BiddingStrategy maximize_conversions */
                        maximize_conversions?: (google.ads.googleads.v8.common.IMaximizeConversions|null);

                        /** BiddingStrategy target_cpa */
                        target_cpa?: (google.ads.googleads.v8.common.ITargetCpa|null);

                        /** BiddingStrategy target_impression_share */
                        target_impression_share?: (google.ads.googleads.v8.common.ITargetImpressionShare|null);

                        /** BiddingStrategy target_roas */
                        target_roas?: (google.ads.googleads.v8.common.ITargetRoas|null);

                        /** BiddingStrategy target_spend */
                        target_spend?: (google.ads.googleads.v8.common.ITargetSpend|null);
                    }

                    /** Represents a BiddingStrategy. */
                    class BiddingStrategy implements IBiddingStrategy {

                        /**
                         * Constructs a new BiddingStrategy.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.BiddingStrategyStatusEnum.BiddingStrategyStatus|keyof typeof google.ads.googleads.v8.enums.BiddingStrategyStatusEnum.BiddingStrategyStatus);

                        /** BiddingStrategy type. */
                        public type: (google.ads.googleads.v8.enums.BiddingStrategyTypeEnum.BiddingStrategyType|keyof typeof google.ads.googleads.v8.enums.BiddingStrategyTypeEnum.BiddingStrategyType);

                        /** BiddingStrategy currency_code. */
                        public currency_code: string;

                        /** BiddingStrategy effective_currency_code. */
                        public effective_currency_code?: (string|null);

                        /** 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.v8.common.IEnhancedCpc|null);

                        /** BiddingStrategy maximize_conversion_value. */
                        public maximize_conversion_value?: (google.ads.googleads.v8.common.IMaximizeConversionValue|null);

                        /** BiddingStrategy maximize_conversions. */
                        public maximize_conversions?: (google.ads.googleads.v8.common.IMaximizeConversions|null);

                        /** BiddingStrategy target_cpa. */
                        public target_cpa?: (google.ads.googleads.v8.common.ITargetCpa|null);

                        /** BiddingStrategy target_impression_share. */
                        public target_impression_share?: (google.ads.googleads.v8.common.ITargetImpressionShare|null);

                        /** BiddingStrategy target_roas. */
                        public target_roas?: (google.ads.googleads.v8.common.ITargetRoas|null);

                        /** BiddingStrategy target_spend. */
                        public target_spend?: (google.ads.googleads.v8.common.ITargetSpend|null);

                        /** BiddingStrategy _id. */
                        public _id?: "id";

                        /** BiddingStrategy _name. */
                        public _name?: "name";

                        /** BiddingStrategy _effective_currency_code. */
                        public _effective_currency_code?: "effective_currency_code";

                        /** BiddingStrategy _campaign_count. */
                        public _campaign_count?: "campaign_count";

                        /** BiddingStrategy _non_removed_campaign_count. */
                        public _non_removed_campaign_count?: "non_removed_campaign_count";

                        /** 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.v8.resources.IBiddingStrategy): google.ads.googleads.v8.resources.BiddingStrategy;

                        /**
                         * Encodes the specified BiddingStrategy message. Does not implicitly {@link google.ads.googleads.v8.resources.BiddingStrategy.verify|verify} messages.
                         * @param m BiddingStrategy message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IBiddingStrategy, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddingStrategy message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IBiddingStrategy, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddingStrategy message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.BiddingStrategy;

                        /**
                         * Verifies a BiddingStrategy message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddingStrategy message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BiddingStrategy
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.BiddingStrategy;

                        /**
                         * Creates a plain object from a BiddingStrategy message. Also converts values to other types if specified.
                         * @param m BiddingStrategy
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.BiddingStrategy, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddingStrategy to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.SimulationTypeEnum.SimulationType|keyof typeof google.ads.googleads.v8.enums.SimulationTypeEnum.SimulationType|null);

                        /** BiddingStrategySimulation modification_method */
                        modification_method?: (google.ads.googleads.v8.enums.SimulationModificationMethodEnum.SimulationModificationMethod|keyof typeof google.ads.googleads.v8.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.v8.common.ITargetCpaSimulationPointList|null);

                        /** BiddingStrategySimulation target_roas_point_list */
                        target_roas_point_list?: (google.ads.googleads.v8.common.ITargetRoasSimulationPointList|null);
                    }

                    /** Represents a BiddingStrategySimulation. */
                    class BiddingStrategySimulation implements IBiddingStrategySimulation {

                        /**
                         * Constructs a new BiddingStrategySimulation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.SimulationTypeEnum.SimulationType|keyof typeof google.ads.googleads.v8.enums.SimulationTypeEnum.SimulationType);

                        /** BiddingStrategySimulation modification_method. */
                        public modification_method: (google.ads.googleads.v8.enums.SimulationModificationMethodEnum.SimulationModificationMethod|keyof typeof google.ads.googleads.v8.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.v8.common.ITargetCpaSimulationPointList|null);

                        /** BiddingStrategySimulation target_roas_point_list. */
                        public target_roas_point_list?: (google.ads.googleads.v8.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.v8.resources.IBiddingStrategySimulation): google.ads.googleads.v8.resources.BiddingStrategySimulation;

                        /**
                         * Encodes the specified BiddingStrategySimulation message. Does not implicitly {@link google.ads.googleads.v8.resources.BiddingStrategySimulation.verify|verify} messages.
                         * @param m BiddingStrategySimulation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IBiddingStrategySimulation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddingStrategySimulation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IBiddingStrategySimulation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddingStrategySimulation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.BiddingStrategySimulation;

                        /**
                         * Verifies a BiddingStrategySimulation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddingStrategySimulation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BiddingStrategySimulation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.BiddingStrategySimulation;

                        /**
                         * Creates a plain object from a BiddingStrategySimulation message. Also converts values to other types if specified.
                         * @param m BiddingStrategySimulation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.BiddingStrategySimulation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddingStrategySimulation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a BillingSetup. */
                    interface IBillingSetup {

                        /** BillingSetup resource_name */
                        resource_name?: (string|null);

                        /** BillingSetup id */
                        id?: (number|null);

                        /** BillingSetup status */
                        status?: (google.ads.googleads.v8.enums.BillingSetupStatusEnum.BillingSetupStatus|keyof typeof google.ads.googleads.v8.enums.BillingSetupStatusEnum.BillingSetupStatus|null);

                        /** BillingSetup payments_account */
                        payments_account?: (string|null);

                        /** BillingSetup payments_account_info */
                        payments_account_info?: (google.ads.googleads.v8.resources.BillingSetup.IPaymentsAccountInfo|null);

                        /** BillingSetup start_date_time */
                        start_date_time?: (string|null);

                        /** BillingSetup start_time_type */
                        start_time_type?: (google.ads.googleads.v8.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v8.enums.TimeTypeEnum.TimeType|null);

                        /** BillingSetup end_date_time */
                        end_date_time?: (string|null);

                        /** BillingSetup end_time_type */
                        end_time_type?: (google.ads.googleads.v8.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v8.enums.TimeTypeEnum.TimeType|null);
                    }

                    /** Represents a BillingSetup. */
                    class BillingSetup implements IBillingSetup {

                        /**
                         * Constructs a new BillingSetup.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IBillingSetup);

                        /** BillingSetup resource_name. */
                        public resource_name: string;

                        /** BillingSetup id. */
                        public id?: (number|null);

                        /** BillingSetup status. */
                        public status: (google.ads.googleads.v8.enums.BillingSetupStatusEnum.BillingSetupStatus|keyof typeof google.ads.googleads.v8.enums.BillingSetupStatusEnum.BillingSetupStatus);

                        /** BillingSetup payments_account. */
                        public payments_account?: (string|null);

                        /** BillingSetup payments_account_info. */
                        public payments_account_info?: (google.ads.googleads.v8.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.v8.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v8.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.v8.enums.TimeTypeEnum.TimeType|keyof typeof google.ads.googleads.v8.enums.TimeTypeEnum.TimeType|null);

                        /** BillingSetup _id. */
                        public _id?: "id";

                        /** BillingSetup _payments_account. */
                        public _payments_account?: "payments_account";

                        /** 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.v8.resources.IBillingSetup): google.ads.googleads.v8.resources.BillingSetup;

                        /**
                         * Encodes the specified BillingSetup message. Does not implicitly {@link google.ads.googleads.v8.resources.BillingSetup.verify|verify} messages.
                         * @param m BillingSetup message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IBillingSetup, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BillingSetup message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IBillingSetup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BillingSetup message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.BillingSetup;

                        /**
                         * Verifies a BillingSetup message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BillingSetup message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BillingSetup
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.BillingSetup;

                        /**
                         * Creates a plain object from a BillingSetup message. Also converts values to other types if specified.
                         * @param m BillingSetup
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.BillingSetup, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BillingSetup to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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);

                            /** PaymentsAccountInfo _payments_account_id. */
                            public _payments_account_id?: "payments_account_id";

                            /** PaymentsAccountInfo _payments_account_name. */
                            public _payments_account_name?: "payments_account_name";

                            /** PaymentsAccountInfo _payments_profile_id. */
                            public _payments_profile_id?: "payments_profile_id";

                            /** PaymentsAccountInfo _payments_profile_name. */
                            public _payments_profile_name?: "payments_profile_name";

                            /** PaymentsAccountInfo _secondary_payments_profile_id. */
                            public _secondary_payments_profile_id?: "secondary_payments_profile_id";

                            /**
                             * Creates a new PaymentsAccountInfo instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns PaymentsAccountInfo instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.BillingSetup.IPaymentsAccountInfo): google.ads.googleads.v8.resources.BillingSetup.PaymentsAccountInfo;

                            /**
                             * Encodes the specified PaymentsAccountInfo message. Does not implicitly {@link google.ads.googleads.v8.resources.BillingSetup.PaymentsAccountInfo.verify|verify} messages.
                             * @param m PaymentsAccountInfo message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.BillingSetup.IPaymentsAccountInfo, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified PaymentsAccountInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.BillingSetup.IPaymentsAccountInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a PaymentsAccountInfo message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.BillingSetup.PaymentsAccountInfo;

                            /**
                             * Verifies a PaymentsAccountInfo message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a PaymentsAccountInfo message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns PaymentsAccountInfo
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.BillingSetup.PaymentsAccountInfo;

                            /**
                             * Creates a plain object from a PaymentsAccountInfo message. Also converts values to other types if specified.
                             * @param m PaymentsAccountInfo
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.BillingSetup.PaymentsAccountInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this PaymentsAccountInfo to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }
                    }

                    /** 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.v8.enums.CallTrackingDisplayLocationEnum.CallTrackingDisplayLocation|keyof typeof google.ads.googleads.v8.enums.CallTrackingDisplayLocationEnum.CallTrackingDisplayLocation|null);

                        /** CallView type */
                        type?: (google.ads.googleads.v8.enums.CallTypeEnum.CallType|keyof typeof google.ads.googleads.v8.enums.CallTypeEnum.CallType|null);

                        /** CallView call_status */
                        call_status?: (google.ads.googleads.v8.enums.GoogleVoiceCallStatusEnum.GoogleVoiceCallStatus|keyof typeof google.ads.googleads.v8.enums.GoogleVoiceCallStatusEnum.GoogleVoiceCallStatus|null);
                    }

                    /** Represents a CallView. */
                    class CallView implements ICallView {

                        /**
                         * Constructs a new CallView.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.CallTrackingDisplayLocationEnum.CallTrackingDisplayLocation|keyof typeof google.ads.googleads.v8.enums.CallTrackingDisplayLocationEnum.CallTrackingDisplayLocation);

                        /** CallView type. */
                        public type: (google.ads.googleads.v8.enums.CallTypeEnum.CallType|keyof typeof google.ads.googleads.v8.enums.CallTypeEnum.CallType);

                        /** CallView call_status. */
                        public call_status: (google.ads.googleads.v8.enums.GoogleVoiceCallStatusEnum.GoogleVoiceCallStatus|keyof typeof google.ads.googleads.v8.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.v8.resources.ICallView): google.ads.googleads.v8.resources.CallView;

                        /**
                         * Encodes the specified CallView message. Does not implicitly {@link google.ads.googleads.v8.resources.CallView.verify|verify} messages.
                         * @param m CallView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICallView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CallView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICallView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CallView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CallView;

                        /**
                         * Verifies a CallView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CallView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CallView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CallView;

                        /**
                         * Creates a plain object from a CallView message. Also converts values to other types if specified.
                         * @param m CallView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CallView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CallView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a Campaign. */
                    interface ICampaign {

                        /** Campaign resource_name */
                        resource_name?: (string|null);

                        /** Campaign id */
                        id?: (number|null);

                        /** Campaign name */
                        name?: (string|null);

                        /** Campaign status */
                        status?: (google.ads.googleads.v8.enums.CampaignStatusEnum.CampaignStatus|keyof typeof google.ads.googleads.v8.enums.CampaignStatusEnum.CampaignStatus|null);

                        /** Campaign serving_status */
                        serving_status?: (google.ads.googleads.v8.enums.CampaignServingStatusEnum.CampaignServingStatus|keyof typeof google.ads.googleads.v8.enums.CampaignServingStatusEnum.CampaignServingStatus|null);

                        /** Campaign ad_serving_optimization_status */
                        ad_serving_optimization_status?: (google.ads.googleads.v8.enums.AdServingOptimizationStatusEnum.AdServingOptimizationStatus|keyof typeof google.ads.googleads.v8.enums.AdServingOptimizationStatusEnum.AdServingOptimizationStatus|null);

                        /** Campaign advertising_channel_type */
                        advertising_channel_type?: (google.ads.googleads.v8.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|keyof typeof google.ads.googleads.v8.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|null);

                        /** Campaign advertising_channel_sub_type */
                        advertising_channel_sub_type?: (google.ads.googleads.v8.enums.AdvertisingChannelSubTypeEnum.AdvertisingChannelSubType|keyof typeof google.ads.googleads.v8.enums.AdvertisingChannelSubTypeEnum.AdvertisingChannelSubType|null);

                        /** Campaign tracking_url_template */
                        tracking_url_template?: (string|null);

                        /** Campaign url_custom_parameters */
                        url_custom_parameters?: (google.ads.googleads.v8.common.ICustomParameter[]|null);

                        /** Campaign real_time_bidding_setting */
                        real_time_bidding_setting?: (google.ads.googleads.v8.common.IRealTimeBiddingSetting|null);

                        /** Campaign network_settings */
                        network_settings?: (google.ads.googleads.v8.resources.Campaign.INetworkSettings|null);

                        /** Campaign hotel_setting */
                        hotel_setting?: (google.ads.googleads.v8.resources.Campaign.IHotelSettingInfo|null);

                        /** Campaign dynamic_search_ads_setting */
                        dynamic_search_ads_setting?: (google.ads.googleads.v8.resources.Campaign.IDynamicSearchAdsSetting|null);

                        /** Campaign shopping_setting */
                        shopping_setting?: (google.ads.googleads.v8.resources.Campaign.IShoppingSetting|null);

                        /** Campaign targeting_setting */
                        targeting_setting?: (google.ads.googleads.v8.common.ITargetingSetting|null);

                        /** Campaign geo_target_type_setting */
                        geo_target_type_setting?: (google.ads.googleads.v8.resources.Campaign.IGeoTargetTypeSetting|null);

                        /** Campaign local_campaign_setting */
                        local_campaign_setting?: (google.ads.googleads.v8.resources.Campaign.ILocalCampaignSetting|null);

                        /** Campaign app_campaign_setting */
                        app_campaign_setting?: (google.ads.googleads.v8.resources.Campaign.IAppCampaignSetting|null);

                        /** Campaign labels */
                        labels?: (string[]|null);

                        /** Campaign experiment_type */
                        experiment_type?: (google.ads.googleads.v8.enums.CampaignExperimentTypeEnum.CampaignExperimentType|keyof typeof google.ads.googleads.v8.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.v8.enums.BiddingStrategyTypeEnum.BiddingStrategyType|keyof typeof google.ads.googleads.v8.enums.BiddingStrategyTypeEnum.BiddingStrategyType|null);

                        /** Campaign accessible_bidding_strategy */
                        accessible_bidding_strategy?: (string|null);

                        /** Campaign start_date */
                        start_date?: (string|null);

                        /** Campaign end_date */
                        end_date?: (string|null);

                        /** Campaign final_url_suffix */
                        final_url_suffix?: (string|null);

                        /** Campaign frequency_caps */
                        frequency_caps?: (google.ads.googleads.v8.common.IFrequencyCapEntry[]|null);

                        /** Campaign video_brand_safety_suitability */
                        video_brand_safety_suitability?: (google.ads.googleads.v8.enums.BrandSafetySuitabilityEnum.BrandSafetySuitability|keyof typeof google.ads.googleads.v8.enums.BrandSafetySuitabilityEnum.BrandSafetySuitability|null);

                        /** Campaign vanity_pharma */
                        vanity_pharma?: (google.ads.googleads.v8.resources.Campaign.IVanityPharma|null);

                        /** Campaign selective_optimization */
                        selective_optimization?: (google.ads.googleads.v8.resources.Campaign.ISelectiveOptimization|null);

                        /** Campaign optimization_goal_setting */
                        optimization_goal_setting?: (google.ads.googleads.v8.resources.Campaign.IOptimizationGoalSetting|null);

                        /** Campaign tracking_setting */
                        tracking_setting?: (google.ads.googleads.v8.resources.Campaign.ITrackingSetting|null);

                        /** Campaign payment_mode */
                        payment_mode?: (google.ads.googleads.v8.enums.PaymentModeEnum.PaymentMode|keyof typeof google.ads.googleads.v8.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.v8.enums.AssetFieldTypeEnum.AssetFieldType[]|null);

                        /** Campaign bidding_strategy */
                        bidding_strategy?: (string|null);

                        /** Campaign commission */
                        commission?: (google.ads.googleads.v8.common.ICommission|null);

                        /** Campaign manual_cpc */
                        manual_cpc?: (google.ads.googleads.v8.common.IManualCpc|null);

                        /** Campaign manual_cpm */
                        manual_cpm?: (google.ads.googleads.v8.common.IManualCpm|null);

                        /** Campaign manual_cpv */
                        manual_cpv?: (google.ads.googleads.v8.common.IManualCpv|null);

                        /** Campaign maximize_conversions */
                        maximize_conversions?: (google.ads.googleads.v8.common.IMaximizeConversions|null);

                        /** Campaign maximize_conversion_value */
                        maximize_conversion_value?: (google.ads.googleads.v8.common.IMaximizeConversionValue|null);

                        /** Campaign target_cpa */
                        target_cpa?: (google.ads.googleads.v8.common.ITargetCpa|null);

                        /** Campaign target_impression_share */
                        target_impression_share?: (google.ads.googleads.v8.common.ITargetImpressionShare|null);

                        /** Campaign target_roas */
                        target_roas?: (google.ads.googleads.v8.common.ITargetRoas|null);

                        /** Campaign target_spend */
                        target_spend?: (google.ads.googleads.v8.common.ITargetSpend|null);

                        /** Campaign percent_cpc */
                        percent_cpc?: (google.ads.googleads.v8.common.IPercentCpc|null);

                        /** Campaign target_cpm */
                        target_cpm?: (google.ads.googleads.v8.common.ITargetCpm|null);
                    }

                    /** Represents a Campaign. */
                    class Campaign implements ICampaign {

                        /**
                         * Constructs a new Campaign.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.ICampaign);

                        /** Campaign resource_name. */
                        public resource_name: string;

                        /** Campaign id. */
                        public id?: (number|null);

                        /** Campaign name. */
                        public name?: (string|null);

                        /** Campaign status. */
                        public status: (google.ads.googleads.v8.enums.CampaignStatusEnum.CampaignStatus|keyof typeof google.ads.googleads.v8.enums.CampaignStatusEnum.CampaignStatus);

                        /** Campaign serving_status. */
                        public serving_status: (google.ads.googleads.v8.enums.CampaignServingStatusEnum.CampaignServingStatus|keyof typeof google.ads.googleads.v8.enums.CampaignServingStatusEnum.CampaignServingStatus);

                        /** Campaign ad_serving_optimization_status. */
                        public ad_serving_optimization_status: (google.ads.googleads.v8.enums.AdServingOptimizationStatusEnum.AdServingOptimizationStatus|keyof typeof google.ads.googleads.v8.enums.AdServingOptimizationStatusEnum.AdServingOptimizationStatus);

                        /** Campaign advertising_channel_type. */
                        public advertising_channel_type: (google.ads.googleads.v8.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType|keyof typeof google.ads.googleads.v8.enums.AdvertisingChannelTypeEnum.AdvertisingChannelType);

                        /** Campaign advertising_channel_sub_type. */
                        public advertising_channel_sub_type: (google.ads.googleads.v8.enums.AdvertisingChannelSubTypeEnum.AdvertisingChannelSubType|keyof typeof google.ads.googleads.v8.enums.AdvertisingChannelSubTypeEnum.AdvertisingChannelSubType);

                        /** Campaign tracking_url_template. */
                        public tracking_url_template?: (string|null);

                        /** Campaign url_custom_parameters. */
                        public url_custom_parameters: google.ads.googleads.v8.common.ICustomParameter[];

                        /** Campaign real_time_bidding_setting. */
                        public real_time_bidding_setting?: (google.ads.googleads.v8.common.IRealTimeBiddingSetting|null);

                        /** Campaign network_settings. */
                        public network_settings?: (google.ads.googleads.v8.resources.Campaign.INetworkSettings|null);

                        /** Campaign hotel_setting. */
                        public hotel_setting?: (google.ads.googleads.v8.resources.Campaign.IHotelSettingInfo|null);

                        /** Campaign dynamic_search_ads_setting. */
                        public dynamic_search_ads_setting?: (google.ads.googleads.v8.resources.Campaign.IDynamicSearchAdsSetting|null);

                        /** Campaign shopping_setting. */
                        public shopping_setting?: (google.ads.googleads.v8.resources.Campaign.IShoppingSetting|null);

                        /** Campaign targeting_setting. */
                        public targeting_setting?: (google.ads.googleads.v8.common.ITargetingSetting|null);

                        /** Campaign geo_target_type_setting. */
                        public geo_target_type_setting?: (google.ads.googleads.v8.resources.Campaign.IGeoTargetTypeSetting|null);

                        /** Campaign local_campaign_setting. */
                        public local_campaign_setting?: (google.ads.googleads.v8.resources.Campaign.ILocalCampaignSetting|null);

                        /** Campaign app_campaign_setting. */
                        public app_campaign_setting?: (google.ads.googleads.v8.resources.Campaign.IAppCampaignSetting|null);

                        /** Campaign labels. */
                        public labels: string[];

                        /** Campaign experiment_type. */
                        public experiment_type: (google.ads.googleads.v8.enums.CampaignExperimentTypeEnum.CampaignExperimentType|keyof typeof google.ads.googleads.v8.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.v8.enums.BiddingStrategyTypeEnum.BiddingStrategyType|keyof typeof google.ads.googleads.v8.enums.BiddingStrategyTypeEnum.BiddingStrategyType);

                        /** Campaign accessible_bidding_strategy. */
                        public accessible_bidding_strategy: string;

                        /** Campaign start_date. */
                        public start_date?: (string|null);

                        /** Campaign end_date. */
                        public end_date?: (string|null);

                        /** Campaign final_url_suffix. */
                        public final_url_suffix?: (string|null);

                        /** Campaign frequency_caps. */
                        public frequency_caps: google.ads.googleads.v8.common.IFrequencyCapEntry[];

                        /** Campaign video_brand_safety_suitability. */
                        public video_brand_safety_suitability: (google.ads.googleads.v8.enums.BrandSafetySuitabilityEnum.BrandSafetySuitability|keyof typeof google.ads.googleads.v8.enums.BrandSafetySuitabilityEnum.BrandSafetySuitability);

                        /** Campaign vanity_pharma. */
                        public vanity_pharma?: (google.ads.googleads.v8.resources.Campaign.IVanityPharma|null);

                        /** Campaign selective_optimization. */
                        public selective_optimization?: (google.ads.googleads.v8.resources.Campaign.ISelectiveOptimization|null);

                        /** Campaign optimization_goal_setting. */
                        public optimization_goal_setting?: (google.ads.googleads.v8.resources.Campaign.IOptimizationGoalSetting|null);

                        /** Campaign tracking_setting. */
                        public tracking_setting?: (google.ads.googleads.v8.resources.Campaign.ITrackingSetting|null);

                        /** Campaign payment_mode. */
                        public payment_mode: (google.ads.googleads.v8.enums.PaymentModeEnum.PaymentMode|keyof typeof google.ads.googleads.v8.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.v8.enums.AssetFieldTypeEnum.AssetFieldType[];

                        /** Campaign bidding_strategy. */
                        public bidding_strategy?: (string|null);

                        /** Campaign commission. */
                        public commission?: (google.ads.googleads.v8.common.ICommission|null);

                        /** Campaign manual_cpc. */
                        public manual_cpc?: (google.ads.googleads.v8.common.IManualCpc|null);

                        /** Campaign manual_cpm. */
                        public manual_cpm?: (google.ads.googleads.v8.common.IManualCpm|null);

                        /** Campaign manual_cpv. */
                        public manual_cpv?: (google.ads.googleads.v8.common.IManualCpv|null);

                        /** Campaign maximize_conversions. */
                        public maximize_conversions?: (google.ads.googleads.v8.common.IMaximizeConversions|null);

                        /** Campaign maximize_conversion_value. */
                        public maximize_conversion_value?: (google.ads.googleads.v8.common.IMaximizeConversionValue|null);

                        /** Campaign target_cpa. */
                        public target_cpa?: (google.ads.googleads.v8.common.ITargetCpa|null);

                        /** Campaign target_impression_share. */
                        public target_impression_share?: (google.ads.googleads.v8.common.ITargetImpressionShare|null);

                        /** Campaign target_roas. */
                        public target_roas?: (google.ads.googleads.v8.common.ITargetRoas|null);

                        /** Campaign target_spend. */
                        public target_spend?: (google.ads.googleads.v8.common.ITargetSpend|null);

                        /** Campaign percent_cpc. */
                        public percent_cpc?: (google.ads.googleads.v8.common.IPercentCpc|null);

                        /** Campaign target_cpm. */
                        public target_cpm?: (google.ads.googleads.v8.common.ITargetCpm|null);

                        /** Campaign _id. */
                        public _id?: "id";

                        /** Campaign _name. */
                        public _name?: "name";

                        /** Campaign _tracking_url_template. */
                        public _tracking_url_template?: "tracking_url_template";

                        /** Campaign _base_campaign. */
                        public _base_campaign?: "base_campaign";

                        /** Campaign _campaign_budget. */
                        public _campaign_budget?: "campaign_budget";

                        /** Campaign _start_date. */
                        public _start_date?: "start_date";

                        /** Campaign _end_date. */
                        public _end_date?: "end_date";

                        /** Campaign _final_url_suffix. */
                        public _final_url_suffix?: "final_url_suffix";

                        /** Campaign _optimization_score. */
                        public _optimization_score?: "optimization_score";

                        /** Campaign campaign_bidding_strategy. */
                        public campaign_bidding_strategy?: ("bidding_strategy"|"commission"|"manual_cpc"|"manual_cpm"|"manual_cpv"|"maximize_conversions"|"maximize_conversion_value"|"target_cpa"|"target_impression_share"|"target_roas"|"target_spend"|"percent_cpc"|"target_cpm");

                        /**
                         * Creates a new Campaign instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Campaign instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICampaign): google.ads.googleads.v8.resources.Campaign;

                        /**
                         * Encodes the specified Campaign message. Does not implicitly {@link google.ads.googleads.v8.resources.Campaign.verify|verify} messages.
                         * @param m Campaign message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICampaign, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Campaign message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICampaign, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Campaign message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Campaign;

                        /**
                         * Verifies a Campaign message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Campaign message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns Campaign
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Campaign;

                        /**
                         * Creates a plain object from a Campaign message. Also converts values to other types if specified.
                         * @param m Campaign
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.Campaign, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Campaign to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace Campaign {

                        /** 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);
                        }

                        /** Represents a NetworkSettings. */
                        class NetworkSettings implements INetworkSettings {

                            /**
                             * Constructs a new NetworkSettings.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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_google_search. */
                            public _target_google_search?: "target_google_search";

                            /** NetworkSettings _target_search_network. */
                            public _target_search_network?: "target_search_network";

                            /** NetworkSettings _target_content_network. */
                            public _target_content_network?: "target_content_network";

                            /** NetworkSettings _target_partner_search_network. */
                            public _target_partner_search_network?: "target_partner_search_network";

                            /**
                             * Creates a new NetworkSettings instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns NetworkSettings instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.Campaign.INetworkSettings): google.ads.googleads.v8.resources.Campaign.NetworkSettings;

                            /**
                             * Encodes the specified NetworkSettings message. Does not implicitly {@link google.ads.googleads.v8.resources.Campaign.NetworkSettings.verify|verify} messages.
                             * @param m NetworkSettings message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Campaign.INetworkSettings, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified NetworkSettings message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Campaign.INetworkSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a NetworkSettings message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Campaign.NetworkSettings;

                            /**
                             * Verifies a NetworkSettings message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a NetworkSettings message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns NetworkSettings
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Campaign.NetworkSettings;

                            /**
                             * Creates a plain object from a NetworkSettings message. Also converts values to other types if specified.
                             * @param m NetworkSettings
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Campaign.NetworkSettings, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this NetworkSettings to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** 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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.Campaign.IHotelSettingInfo);

                            /** HotelSettingInfo hotel_center_id. */
                            public hotel_center_id?: (number|null);

                            /** HotelSettingInfo _hotel_center_id. */
                            public _hotel_center_id?: "hotel_center_id";

                            /**
                             * Creates a new HotelSettingInfo instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns HotelSettingInfo instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.Campaign.IHotelSettingInfo): google.ads.googleads.v8.resources.Campaign.HotelSettingInfo;

                            /**
                             * Encodes the specified HotelSettingInfo message. Does not implicitly {@link google.ads.googleads.v8.resources.Campaign.HotelSettingInfo.verify|verify} messages.
                             * @param m HotelSettingInfo message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Campaign.IHotelSettingInfo, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified HotelSettingInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Campaign.IHotelSettingInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a HotelSettingInfo message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Campaign.HotelSettingInfo;

                            /**
                             * Verifies a HotelSettingInfo message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a HotelSettingInfo message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns HotelSettingInfo
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Campaign.HotelSettingInfo;

                            /**
                             * Creates a plain object from a HotelSettingInfo message. Also converts values to other types if specified.
                             * @param m HotelSettingInfo
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Campaign.HotelSettingInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this HotelSettingInfo to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** 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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.Campaign.ITrackingSetting);

                            /** TrackingSetting tracking_url. */
                            public tracking_url?: (string|null);

                            /** TrackingSetting _tracking_url. */
                            public _tracking_url?: "tracking_url";

                            /**
                             * Creates a new TrackingSetting instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TrackingSetting instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.Campaign.ITrackingSetting): google.ads.googleads.v8.resources.Campaign.TrackingSetting;

                            /**
                             * Encodes the specified TrackingSetting message. Does not implicitly {@link google.ads.googleads.v8.resources.Campaign.TrackingSetting.verify|verify} messages.
                             * @param m TrackingSetting message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Campaign.ITrackingSetting, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TrackingSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Campaign.ITrackingSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TrackingSetting message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Campaign.TrackingSetting;

                            /**
                             * Verifies a TrackingSetting message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TrackingSetting message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns TrackingSetting
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Campaign.TrackingSetting;

                            /**
                             * Creates a plain object from a TrackingSetting message. Also converts values to other types if specified.
                             * @param m TrackingSetting
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Campaign.TrackingSetting, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TrackingSetting to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** 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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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.v8.resources.Campaign.ISelectiveOptimization): google.ads.googleads.v8.resources.Campaign.SelectiveOptimization;

                            /**
                             * Encodes the specified SelectiveOptimization message. Does not implicitly {@link google.ads.googleads.v8.resources.Campaign.SelectiveOptimization.verify|verify} messages.
                             * @param m SelectiveOptimization message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Campaign.ISelectiveOptimization, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified SelectiveOptimization message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Campaign.ISelectiveOptimization, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a SelectiveOptimization message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Campaign.SelectiveOptimization;

                            /**
                             * Verifies a SelectiveOptimization message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a SelectiveOptimization message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns SelectiveOptimization
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Campaign.SelectiveOptimization;

                            /**
                             * Creates a plain object from a SelectiveOptimization message. Also converts values to other types if specified.
                             * @param m SelectiveOptimization
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Campaign.SelectiveOptimization, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this SelectiveOptimization to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** 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);

                            /** DynamicSearchAdsSetting feeds */
                            feeds?: (string[]|null);
                        }

                        /** Represents a DynamicSearchAdsSetting. */
                        class DynamicSearchAdsSetting implements IDynamicSearchAdsSetting {

                            /**
                             * Constructs a new DynamicSearchAdsSetting.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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);

                            /** DynamicSearchAdsSetting feeds. */
                            public feeds: string[];

                            /** DynamicSearchAdsSetting _use_supplied_urls_only. */
                            public _use_supplied_urls_only?: "use_supplied_urls_only";

                            /**
                             * Creates a new DynamicSearchAdsSetting instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns DynamicSearchAdsSetting instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.Campaign.IDynamicSearchAdsSetting): google.ads.googleads.v8.resources.Campaign.DynamicSearchAdsSetting;

                            /**
                             * Encodes the specified DynamicSearchAdsSetting message. Does not implicitly {@link google.ads.googleads.v8.resources.Campaign.DynamicSearchAdsSetting.verify|verify} messages.
                             * @param m DynamicSearchAdsSetting message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Campaign.IDynamicSearchAdsSetting, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified DynamicSearchAdsSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Campaign.IDynamicSearchAdsSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a DynamicSearchAdsSetting message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Campaign.DynamicSearchAdsSetting;

                            /**
                             * Verifies a DynamicSearchAdsSetting message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a DynamicSearchAdsSetting message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns DynamicSearchAdsSetting
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Campaign.DynamicSearchAdsSetting;

                            /**
                             * Creates a plain object from a DynamicSearchAdsSetting message. Also converts values to other types if specified.
                             * @param m DynamicSearchAdsSetting
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Campaign.DynamicSearchAdsSetting, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this DynamicSearchAdsSetting to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a ShoppingSetting. */
                        interface IShoppingSetting {

                            /** ShoppingSetting merchant_id */
                            merchant_id?: (number|null);

                            /** ShoppingSetting sales_country */
                            sales_country?: (string|null);

                            /** ShoppingSetting campaign_priority */
                            campaign_priority?: (number|null);

                            /** ShoppingSetting enable_local */
                            enable_local?: (boolean|null);
                        }

                        /** Represents a ShoppingSetting. */
                        class ShoppingSetting implements IShoppingSetting {

                            /**
                             * Constructs a new ShoppingSetting.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.Campaign.IShoppingSetting);

                            /** ShoppingSetting merchant_id. */
                            public merchant_id?: (number|null);

                            /** ShoppingSetting sales_country. */
                            public sales_country?: (string|null);

                            /** ShoppingSetting campaign_priority. */
                            public campaign_priority?: (number|null);

                            /** ShoppingSetting enable_local. */
                            public enable_local?: (boolean|null);

                            /** ShoppingSetting _merchant_id. */
                            public _merchant_id?: "merchant_id";

                            /** ShoppingSetting _sales_country. */
                            public _sales_country?: "sales_country";

                            /** ShoppingSetting _campaign_priority. */
                            public _campaign_priority?: "campaign_priority";

                            /** ShoppingSetting _enable_local. */
                            public _enable_local?: "enable_local";

                            /**
                             * Creates a new ShoppingSetting instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ShoppingSetting instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.Campaign.IShoppingSetting): google.ads.googleads.v8.resources.Campaign.ShoppingSetting;

                            /**
                             * Encodes the specified ShoppingSetting message. Does not implicitly {@link google.ads.googleads.v8.resources.Campaign.ShoppingSetting.verify|verify} messages.
                             * @param m ShoppingSetting message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Campaign.IShoppingSetting, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ShoppingSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Campaign.IShoppingSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ShoppingSetting message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Campaign.ShoppingSetting;

                            /**
                             * Verifies a ShoppingSetting message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ShoppingSetting message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns ShoppingSetting
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Campaign.ShoppingSetting;

                            /**
                             * Creates a plain object from a ShoppingSetting message. Also converts values to other types if specified.
                             * @param m ShoppingSetting
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Campaign.ShoppingSetting, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ShoppingSetting to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a VanityPharma. */
                        interface IVanityPharma {

                            /** VanityPharma vanity_pharma_display_url_mode */
                            vanity_pharma_display_url_mode?: (google.ads.googleads.v8.enums.VanityPharmaDisplayUrlModeEnum.VanityPharmaDisplayUrlMode|keyof typeof google.ads.googleads.v8.enums.VanityPharmaDisplayUrlModeEnum.VanityPharmaDisplayUrlMode|null);

                            /** VanityPharma vanity_pharma_text */
                            vanity_pharma_text?: (google.ads.googleads.v8.enums.VanityPharmaTextEnum.VanityPharmaText|keyof typeof google.ads.googleads.v8.enums.VanityPharmaTextEnum.VanityPharmaText|null);
                        }

                        /** Represents a VanityPharma. */
                        class VanityPharma implements IVanityPharma {

                            /**
                             * Constructs a new VanityPharma.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.Campaign.IVanityPharma);

                            /** VanityPharma vanity_pharma_display_url_mode. */
                            public vanity_pharma_display_url_mode: (google.ads.googleads.v8.enums.VanityPharmaDisplayUrlModeEnum.VanityPharmaDisplayUrlMode|keyof typeof google.ads.googleads.v8.enums.VanityPharmaDisplayUrlModeEnum.VanityPharmaDisplayUrlMode);

                            /** VanityPharma vanity_pharma_text. */
                            public vanity_pharma_text: (google.ads.googleads.v8.enums.VanityPharmaTextEnum.VanityPharmaText|keyof typeof google.ads.googleads.v8.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.v8.resources.Campaign.IVanityPharma): google.ads.googleads.v8.resources.Campaign.VanityPharma;

                            /**
                             * Encodes the specified VanityPharma message. Does not implicitly {@link google.ads.googleads.v8.resources.Campaign.VanityPharma.verify|verify} messages.
                             * @param m VanityPharma message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Campaign.IVanityPharma, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified VanityPharma message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Campaign.IVanityPharma, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a VanityPharma message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Campaign.VanityPharma;

                            /**
                             * Verifies a VanityPharma message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a VanityPharma message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns VanityPharma
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Campaign.VanityPharma;

                            /**
                             * Creates a plain object from a VanityPharma message. Also converts values to other types if specified.
                             * @param m VanityPharma
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Campaign.VanityPharma, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this VanityPharma to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a GeoTargetTypeSetting. */
                        interface IGeoTargetTypeSetting {

                            /** GeoTargetTypeSetting positive_geo_target_type */
                            positive_geo_target_type?: (google.ads.googleads.v8.enums.PositiveGeoTargetTypeEnum.PositiveGeoTargetType|keyof typeof google.ads.googleads.v8.enums.PositiveGeoTargetTypeEnum.PositiveGeoTargetType|null);

                            /** GeoTargetTypeSetting negative_geo_target_type */
                            negative_geo_target_type?: (google.ads.googleads.v8.enums.NegativeGeoTargetTypeEnum.NegativeGeoTargetType|keyof typeof google.ads.googleads.v8.enums.NegativeGeoTargetTypeEnum.NegativeGeoTargetType|null);
                        }

                        /** Represents a GeoTargetTypeSetting. */
                        class GeoTargetTypeSetting implements IGeoTargetTypeSetting {

                            /**
                             * Constructs a new GeoTargetTypeSetting.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.Campaign.IGeoTargetTypeSetting);

                            /** GeoTargetTypeSetting positive_geo_target_type. */
                            public positive_geo_target_type: (google.ads.googleads.v8.enums.PositiveGeoTargetTypeEnum.PositiveGeoTargetType|keyof typeof google.ads.googleads.v8.enums.PositiveGeoTargetTypeEnum.PositiveGeoTargetType);

                            /** GeoTargetTypeSetting negative_geo_target_type. */
                            public negative_geo_target_type: (google.ads.googleads.v8.enums.NegativeGeoTargetTypeEnum.NegativeGeoTargetType|keyof typeof google.ads.googleads.v8.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.v8.resources.Campaign.IGeoTargetTypeSetting): google.ads.googleads.v8.resources.Campaign.GeoTargetTypeSetting;

                            /**
                             * Encodes the specified GeoTargetTypeSetting message. Does not implicitly {@link google.ads.googleads.v8.resources.Campaign.GeoTargetTypeSetting.verify|verify} messages.
                             * @param m GeoTargetTypeSetting message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Campaign.IGeoTargetTypeSetting, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified GeoTargetTypeSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Campaign.IGeoTargetTypeSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a GeoTargetTypeSetting message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Campaign.GeoTargetTypeSetting;

                            /**
                             * Verifies a GeoTargetTypeSetting message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a GeoTargetTypeSetting message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns GeoTargetTypeSetting
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Campaign.GeoTargetTypeSetting;

                            /**
                             * Creates a plain object from a GeoTargetTypeSetting message. Also converts values to other types if specified.
                             * @param m GeoTargetTypeSetting
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Campaign.GeoTargetTypeSetting, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this GeoTargetTypeSetting to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a LocalCampaignSetting. */
                        interface ILocalCampaignSetting {

                            /** LocalCampaignSetting location_source_type */
                            location_source_type?: (google.ads.googleads.v8.enums.LocationSourceTypeEnum.LocationSourceType|keyof typeof google.ads.googleads.v8.enums.LocationSourceTypeEnum.LocationSourceType|null);
                        }

                        /** Represents a LocalCampaignSetting. */
                        class LocalCampaignSetting implements ILocalCampaignSetting {

                            /**
                             * Constructs a new LocalCampaignSetting.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.Campaign.ILocalCampaignSetting);

                            /** LocalCampaignSetting location_source_type. */
                            public location_source_type: (google.ads.googleads.v8.enums.LocationSourceTypeEnum.LocationSourceType|keyof typeof google.ads.googleads.v8.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.v8.resources.Campaign.ILocalCampaignSetting): google.ads.googleads.v8.resources.Campaign.LocalCampaignSetting;

                            /**
                             * Encodes the specified LocalCampaignSetting message. Does not implicitly {@link google.ads.googleads.v8.resources.Campaign.LocalCampaignSetting.verify|verify} messages.
                             * @param m LocalCampaignSetting message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Campaign.ILocalCampaignSetting, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified LocalCampaignSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Campaign.ILocalCampaignSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a LocalCampaignSetting message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Campaign.LocalCampaignSetting;

                            /**
                             * Verifies a LocalCampaignSetting message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a LocalCampaignSetting message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns LocalCampaignSetting
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Campaign.LocalCampaignSetting;

                            /**
                             * Creates a plain object from a LocalCampaignSetting message. Also converts values to other types if specified.
                             * @param m LocalCampaignSetting
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Campaign.LocalCampaignSetting, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this LocalCampaignSetting to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of an AppCampaignSetting. */
                        interface IAppCampaignSetting {

                            /** AppCampaignSetting bidding_strategy_goal_type */
                            bidding_strategy_goal_type?: (google.ads.googleads.v8.enums.AppCampaignBiddingStrategyGoalTypeEnum.AppCampaignBiddingStrategyGoalType|keyof typeof google.ads.googleads.v8.enums.AppCampaignBiddingStrategyGoalTypeEnum.AppCampaignBiddingStrategyGoalType|null);

                            /** AppCampaignSetting app_id */
                            app_id?: (string|null);

                            /** AppCampaignSetting app_store */
                            app_store?: (google.ads.googleads.v8.enums.AppCampaignAppStoreEnum.AppCampaignAppStore|keyof typeof google.ads.googleads.v8.enums.AppCampaignAppStoreEnum.AppCampaignAppStore|null);
                        }

                        /** Represents an AppCampaignSetting. */
                        class AppCampaignSetting implements IAppCampaignSetting {

                            /**
                             * Constructs a new AppCampaignSetting.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.Campaign.IAppCampaignSetting);

                            /** AppCampaignSetting bidding_strategy_goal_type. */
                            public bidding_strategy_goal_type: (google.ads.googleads.v8.enums.AppCampaignBiddingStrategyGoalTypeEnum.AppCampaignBiddingStrategyGoalType|keyof typeof google.ads.googleads.v8.enums.AppCampaignBiddingStrategyGoalTypeEnum.AppCampaignBiddingStrategyGoalType);

                            /** AppCampaignSetting app_id. */
                            public app_id?: (string|null);

                            /** AppCampaignSetting app_store. */
                            public app_store: (google.ads.googleads.v8.enums.AppCampaignAppStoreEnum.AppCampaignAppStore|keyof typeof google.ads.googleads.v8.enums.AppCampaignAppStoreEnum.AppCampaignAppStore);

                            /** AppCampaignSetting _app_id. */
                            public _app_id?: "app_id";

                            /**
                             * Creates a new AppCampaignSetting instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AppCampaignSetting instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.Campaign.IAppCampaignSetting): google.ads.googleads.v8.resources.Campaign.AppCampaignSetting;

                            /**
                             * Encodes the specified AppCampaignSetting message. Does not implicitly {@link google.ads.googleads.v8.resources.Campaign.AppCampaignSetting.verify|verify} messages.
                             * @param m AppCampaignSetting message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Campaign.IAppCampaignSetting, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AppCampaignSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Campaign.IAppCampaignSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AppCampaignSetting message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Campaign.AppCampaignSetting;

                            /**
                             * Verifies an AppCampaignSetting message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates an AppCampaignSetting message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns AppCampaignSetting
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Campaign.AppCampaignSetting;

                            /**
                             * Creates a plain object from an AppCampaignSetting message. Also converts values to other types if specified.
                             * @param m AppCampaignSetting
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Campaign.AppCampaignSetting, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this AppCampaignSetting to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of an OptimizationGoalSetting. */
                        interface IOptimizationGoalSetting {

                            /** OptimizationGoalSetting optimization_goal_types */
                            optimization_goal_types?: (google.ads.googleads.v8.enums.OptimizationGoalTypeEnum.OptimizationGoalType[]|null);
                        }

                        /** Represents an OptimizationGoalSetting. */
                        class OptimizationGoalSetting implements IOptimizationGoalSetting {

                            /**
                             * Constructs a new OptimizationGoalSetting.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.Campaign.IOptimizationGoalSetting);

                            /** OptimizationGoalSetting optimization_goal_types. */
                            public optimization_goal_types: google.ads.googleads.v8.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.v8.resources.Campaign.IOptimizationGoalSetting): google.ads.googleads.v8.resources.Campaign.OptimizationGoalSetting;

                            /**
                             * Encodes the specified OptimizationGoalSetting message. Does not implicitly {@link google.ads.googleads.v8.resources.Campaign.OptimizationGoalSetting.verify|verify} messages.
                             * @param m OptimizationGoalSetting message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Campaign.IOptimizationGoalSetting, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified OptimizationGoalSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Campaign.IOptimizationGoalSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an OptimizationGoalSetting message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Campaign.OptimizationGoalSetting;

                            /**
                             * Verifies an OptimizationGoalSetting message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates an OptimizationGoalSetting message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns OptimizationGoalSetting
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Campaign.OptimizationGoalSetting;

                            /**
                             * Creates a plain object from an OptimizationGoalSetting message. Also converts values to other types if specified.
                             * @param m OptimizationGoalSetting
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Campaign.OptimizationGoalSetting, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this OptimizationGoalSetting to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }
                    }

                    /** 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.v8.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v8.enums.AssetFieldTypeEnum.AssetFieldType|null);

                        /** CampaignAsset status */
                        status?: (google.ads.googleads.v8.enums.AssetLinkStatusEnum.AssetLinkStatus|keyof typeof google.ads.googleads.v8.enums.AssetLinkStatusEnum.AssetLinkStatus|null);
                    }

                    /** Represents a CampaignAsset. */
                    class CampaignAsset implements ICampaignAsset {

                        /**
                         * Constructs a new CampaignAsset.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v8.enums.AssetFieldTypeEnum.AssetFieldType);

                        /** CampaignAsset status. */
                        public status: (google.ads.googleads.v8.enums.AssetLinkStatusEnum.AssetLinkStatus|keyof typeof google.ads.googleads.v8.enums.AssetLinkStatusEnum.AssetLinkStatus);

                        /** CampaignAsset _campaign. */
                        public _campaign?: "campaign";

                        /** CampaignAsset _asset. */
                        public _asset?: "asset";

                        /**
                         * Creates a new CampaignAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICampaignAsset): google.ads.googleads.v8.resources.CampaignAsset;

                        /**
                         * Encodes the specified CampaignAsset message. Does not implicitly {@link google.ads.googleads.v8.resources.CampaignAsset.verify|verify} messages.
                         * @param m CampaignAsset message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICampaignAsset, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICampaignAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignAsset message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CampaignAsset;

                        /**
                         * Verifies a CampaignAsset message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignAsset message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignAsset
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CampaignAsset;

                        /**
                         * Creates a plain object from a CampaignAsset message. Also converts values to other types if specified.
                         * @param m CampaignAsset
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CampaignAsset, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignAsset to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.resources.ICampaignAudienceView): google.ads.googleads.v8.resources.CampaignAudienceView;

                        /**
                         * Encodes the specified CampaignAudienceView message. Does not implicitly {@link google.ads.googleads.v8.resources.CampaignAudienceView.verify|verify} messages.
                         * @param m CampaignAudienceView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICampaignAudienceView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignAudienceView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICampaignAudienceView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignAudienceView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CampaignAudienceView;

                        /**
                         * Verifies a CampaignAudienceView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignAudienceView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignAudienceView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CampaignAudienceView;

                        /**
                         * Creates a plain object from a CampaignAudienceView message. Also converts values to other types if specified.
                         * @param m CampaignAudienceView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CampaignAudienceView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignAudienceView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.common.IInteractionTypeInfo|null);
                    }

                    /** Represents a CampaignBidModifier. */
                    class CampaignBidModifier implements ICampaignBidModifier {

                        /**
                         * Constructs a new CampaignBidModifier.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.IInteractionTypeInfo|null);

                        /** CampaignBidModifier _campaign. */
                        public _campaign?: "campaign";

                        /** CampaignBidModifier _criterion_id. */
                        public _criterion_id?: "criterion_id";

                        /** CampaignBidModifier _bid_modifier. */
                        public _bid_modifier?: "bid_modifier";

                        /** 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.v8.resources.ICampaignBidModifier): google.ads.googleads.v8.resources.CampaignBidModifier;

                        /**
                         * Encodes the specified CampaignBidModifier message. Does not implicitly {@link google.ads.googleads.v8.resources.CampaignBidModifier.verify|verify} messages.
                         * @param m CampaignBidModifier message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICampaignBidModifier, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignBidModifier message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICampaignBidModifier, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignBidModifier message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CampaignBidModifier;

                        /**
                         * Verifies a CampaignBidModifier message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignBidModifier message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignBidModifier
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CampaignBidModifier;

                        /**
                         * Creates a plain object from a CampaignBidModifier message. Also converts values to other types if specified.
                         * @param m CampaignBidModifier
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CampaignBidModifier, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignBidModifier to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.BudgetStatusEnum.BudgetStatus|keyof typeof google.ads.googleads.v8.enums.BudgetStatusEnum.BudgetStatus|null);

                        /** CampaignBudget delivery_method */
                        delivery_method?: (google.ads.googleads.v8.enums.BudgetDeliveryMethodEnum.BudgetDeliveryMethod|keyof typeof google.ads.googleads.v8.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.v8.enums.BudgetPeriodEnum.BudgetPeriod|keyof typeof google.ads.googleads.v8.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.v8.enums.BudgetTypeEnum.BudgetType|keyof typeof google.ads.googleads.v8.enums.BudgetTypeEnum.BudgetType|null);
                    }

                    /** Represents a CampaignBudget. */
                    class CampaignBudget implements ICampaignBudget {

                        /**
                         * Constructs a new CampaignBudget.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.BudgetStatusEnum.BudgetStatus|keyof typeof google.ads.googleads.v8.enums.BudgetStatusEnum.BudgetStatus);

                        /** CampaignBudget delivery_method. */
                        public delivery_method: (google.ads.googleads.v8.enums.BudgetDeliveryMethodEnum.BudgetDeliveryMethod|keyof typeof google.ads.googleads.v8.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.v8.enums.BudgetPeriodEnum.BudgetPeriod|keyof typeof google.ads.googleads.v8.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.v8.enums.BudgetTypeEnum.BudgetType|keyof typeof google.ads.googleads.v8.enums.BudgetTypeEnum.BudgetType);

                        /** CampaignBudget _id. */
                        public _id?: "id";

                        /** CampaignBudget _name. */
                        public _name?: "name";

                        /** CampaignBudget _amount_micros. */
                        public _amount_micros?: "amount_micros";

                        /** CampaignBudget _total_amount_micros. */
                        public _total_amount_micros?: "total_amount_micros";

                        /** CampaignBudget _explicitly_shared. */
                        public _explicitly_shared?: "explicitly_shared";

                        /** CampaignBudget _reference_count. */
                        public _reference_count?: "reference_count";

                        /** CampaignBudget _has_recommended_budget. */
                        public _has_recommended_budget?: "has_recommended_budget";

                        /** CampaignBudget _recommended_budget_amount_micros. */
                        public _recommended_budget_amount_micros?: "recommended_budget_amount_micros";

                        /** CampaignBudget _recommended_budget_estimated_change_weekly_clicks. */
                        public _recommended_budget_estimated_change_weekly_clicks?: "recommended_budget_estimated_change_weekly_clicks";

                        /** CampaignBudget _recommended_budget_estimated_change_weekly_cost_micros. */
                        public _recommended_budget_estimated_change_weekly_cost_micros?: "recommended_budget_estimated_change_weekly_cost_micros";

                        /** CampaignBudget _recommended_budget_estimated_change_weekly_interactions. */
                        public _recommended_budget_estimated_change_weekly_interactions?: "recommended_budget_estimated_change_weekly_interactions";

                        /** CampaignBudget _recommended_budget_estimated_change_weekly_views. */
                        public _recommended_budget_estimated_change_weekly_views?: "recommended_budget_estimated_change_weekly_views";

                        /**
                         * Creates a new CampaignBudget instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignBudget instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICampaignBudget): google.ads.googleads.v8.resources.CampaignBudget;

                        /**
                         * Encodes the specified CampaignBudget message. Does not implicitly {@link google.ads.googleads.v8.resources.CampaignBudget.verify|verify} messages.
                         * @param m CampaignBudget message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICampaignBudget, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignBudget message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICampaignBudget, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignBudget message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CampaignBudget;

                        /**
                         * Verifies a CampaignBudget message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignBudget message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignBudget
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CampaignBudget;

                        /**
                         * Creates a plain object from a CampaignBudget message. Also converts values to other types if specified.
                         * @param m CampaignBudget
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CampaignBudget, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignBudget to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.CriterionTypeEnum.CriterionType|keyof typeof google.ads.googleads.v8.enums.CriterionTypeEnum.CriterionType|null);

                        /** CampaignCriterion status */
                        status?: (google.ads.googleads.v8.enums.CampaignCriterionStatusEnum.CampaignCriterionStatus|keyof typeof google.ads.googleads.v8.enums.CampaignCriterionStatusEnum.CampaignCriterionStatus|null);

                        /** CampaignCriterion keyword */
                        keyword?: (google.ads.googleads.v8.common.IKeywordInfo|null);

                        /** CampaignCriterion placement */
                        placement?: (google.ads.googleads.v8.common.IPlacementInfo|null);

                        /** CampaignCriterion mobile_app_category */
                        mobile_app_category?: (google.ads.googleads.v8.common.IMobileAppCategoryInfo|null);

                        /** CampaignCriterion mobile_application */
                        mobile_application?: (google.ads.googleads.v8.common.IMobileApplicationInfo|null);

                        /** CampaignCriterion location */
                        location?: (google.ads.googleads.v8.common.ILocationInfo|null);

                        /** CampaignCriterion device */
                        device?: (google.ads.googleads.v8.common.IDeviceInfo|null);

                        /** CampaignCriterion ad_schedule */
                        ad_schedule?: (google.ads.googleads.v8.common.IAdScheduleInfo|null);

                        /** CampaignCriterion age_range */
                        age_range?: (google.ads.googleads.v8.common.IAgeRangeInfo|null);

                        /** CampaignCriterion gender */
                        gender?: (google.ads.googleads.v8.common.IGenderInfo|null);

                        /** CampaignCriterion income_range */
                        income_range?: (google.ads.googleads.v8.common.IIncomeRangeInfo|null);

                        /** CampaignCriterion parental_status */
                        parental_status?: (google.ads.googleads.v8.common.IParentalStatusInfo|null);

                        /** CampaignCriterion user_list */
                        user_list?: (google.ads.googleads.v8.common.IUserListInfo|null);

                        /** CampaignCriterion youtube_video */
                        youtube_video?: (google.ads.googleads.v8.common.IYouTubeVideoInfo|null);

                        /** CampaignCriterion youtube_channel */
                        youtube_channel?: (google.ads.googleads.v8.common.IYouTubeChannelInfo|null);

                        /** CampaignCriterion proximity */
                        proximity?: (google.ads.googleads.v8.common.IProximityInfo|null);

                        /** CampaignCriterion topic */
                        topic?: (google.ads.googleads.v8.common.ITopicInfo|null);

                        /** CampaignCriterion listing_scope */
                        listing_scope?: (google.ads.googleads.v8.common.IListingScopeInfo|null);

                        /** CampaignCriterion language */
                        language?: (google.ads.googleads.v8.common.ILanguageInfo|null);

                        /** CampaignCriterion ip_block */
                        ip_block?: (google.ads.googleads.v8.common.IIpBlockInfo|null);

                        /** CampaignCriterion content_label */
                        content_label?: (google.ads.googleads.v8.common.IContentLabelInfo|null);

                        /** CampaignCriterion carrier */
                        carrier?: (google.ads.googleads.v8.common.ICarrierInfo|null);

                        /** CampaignCriterion user_interest */
                        user_interest?: (google.ads.googleads.v8.common.IUserInterestInfo|null);

                        /** CampaignCriterion webpage */
                        webpage?: (google.ads.googleads.v8.common.IWebpageInfo|null);

                        /** CampaignCriterion operating_system_version */
                        operating_system_version?: (google.ads.googleads.v8.common.IOperatingSystemVersionInfo|null);

                        /** CampaignCriterion mobile_device */
                        mobile_device?: (google.ads.googleads.v8.common.IMobileDeviceInfo|null);

                        /** CampaignCriterion location_group */
                        location_group?: (google.ads.googleads.v8.common.ILocationGroupInfo|null);

                        /** CampaignCriterion custom_affinity */
                        custom_affinity?: (google.ads.googleads.v8.common.ICustomAffinityInfo|null);

                        /** CampaignCriterion custom_audience */
                        custom_audience?: (google.ads.googleads.v8.common.ICustomAudienceInfo|null);

                        /** CampaignCriterion combined_audience */
                        combined_audience?: (google.ads.googleads.v8.common.ICombinedAudienceInfo|null);

                        /** CampaignCriterion keyword_theme */
                        keyword_theme?: (google.ads.googleads.v8.common.IKeywordThemeInfo|null);
                    }

                    /** Represents a CampaignCriterion. */
                    class CampaignCriterion implements ICampaignCriterion {

                        /**
                         * Constructs a new CampaignCriterion.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.CriterionTypeEnum.CriterionType|keyof typeof google.ads.googleads.v8.enums.CriterionTypeEnum.CriterionType);

                        /** CampaignCriterion status. */
                        public status: (google.ads.googleads.v8.enums.CampaignCriterionStatusEnum.CampaignCriterionStatus|keyof typeof google.ads.googleads.v8.enums.CampaignCriterionStatusEnum.CampaignCriterionStatus);

                        /** CampaignCriterion keyword. */
                        public keyword?: (google.ads.googleads.v8.common.IKeywordInfo|null);

                        /** CampaignCriterion placement. */
                        public placement?: (google.ads.googleads.v8.common.IPlacementInfo|null);

                        /** CampaignCriterion mobile_app_category. */
                        public mobile_app_category?: (google.ads.googleads.v8.common.IMobileAppCategoryInfo|null);

                        /** CampaignCriterion mobile_application. */
                        public mobile_application?: (google.ads.googleads.v8.common.IMobileApplicationInfo|null);

                        /** CampaignCriterion location. */
                        public location?: (google.ads.googleads.v8.common.ILocationInfo|null);

                        /** CampaignCriterion device. */
                        public device?: (google.ads.googleads.v8.common.IDeviceInfo|null);

                        /** CampaignCriterion ad_schedule. */
                        public ad_schedule?: (google.ads.googleads.v8.common.IAdScheduleInfo|null);

                        /** CampaignCriterion age_range. */
                        public age_range?: (google.ads.googleads.v8.common.IAgeRangeInfo|null);

                        /** CampaignCriterion gender. */
                        public gender?: (google.ads.googleads.v8.common.IGenderInfo|null);

                        /** CampaignCriterion income_range. */
                        public income_range?: (google.ads.googleads.v8.common.IIncomeRangeInfo|null);

                        /** CampaignCriterion parental_status. */
                        public parental_status?: (google.ads.googleads.v8.common.IParentalStatusInfo|null);

                        /** CampaignCriterion user_list. */
                        public user_list?: (google.ads.googleads.v8.common.IUserListInfo|null);

                        /** CampaignCriterion youtube_video. */
                        public youtube_video?: (google.ads.googleads.v8.common.IYouTubeVideoInfo|null);

                        /** CampaignCriterion youtube_channel. */
                        public youtube_channel?: (google.ads.googleads.v8.common.IYouTubeChannelInfo|null);

                        /** CampaignCriterion proximity. */
                        public proximity?: (google.ads.googleads.v8.common.IProximityInfo|null);

                        /** CampaignCriterion topic. */
                        public topic?: (google.ads.googleads.v8.common.ITopicInfo|null);

                        /** CampaignCriterion listing_scope. */
                        public listing_scope?: (google.ads.googleads.v8.common.IListingScopeInfo|null);

                        /** CampaignCriterion language. */
                        public language?: (google.ads.googleads.v8.common.ILanguageInfo|null);

                        /** CampaignCriterion ip_block. */
                        public ip_block?: (google.ads.googleads.v8.common.IIpBlockInfo|null);

                        /** CampaignCriterion content_label. */
                        public content_label?: (google.ads.googleads.v8.common.IContentLabelInfo|null);

                        /** CampaignCriterion carrier. */
                        public carrier?: (google.ads.googleads.v8.common.ICarrierInfo|null);

                        /** CampaignCriterion user_interest. */
                        public user_interest?: (google.ads.googleads.v8.common.IUserInterestInfo|null);

                        /** CampaignCriterion webpage. */
                        public webpage?: (google.ads.googleads.v8.common.IWebpageInfo|null);

                        /** CampaignCriterion operating_system_version. */
                        public operating_system_version?: (google.ads.googleads.v8.common.IOperatingSystemVersionInfo|null);

                        /** CampaignCriterion mobile_device. */
                        public mobile_device?: (google.ads.googleads.v8.common.IMobileDeviceInfo|null);

                        /** CampaignCriterion location_group. */
                        public location_group?: (google.ads.googleads.v8.common.ILocationGroupInfo|null);

                        /** CampaignCriterion custom_affinity. */
                        public custom_affinity?: (google.ads.googleads.v8.common.ICustomAffinityInfo|null);

                        /** CampaignCriterion custom_audience. */
                        public custom_audience?: (google.ads.googleads.v8.common.ICustomAudienceInfo|null);

                        /** CampaignCriterion combined_audience. */
                        public combined_audience?: (google.ads.googleads.v8.common.ICombinedAudienceInfo|null);

                        /** CampaignCriterion keyword_theme. */
                        public keyword_theme?: (google.ads.googleads.v8.common.IKeywordThemeInfo|null);

                        /** CampaignCriterion _campaign. */
                        public _campaign?: "campaign";

                        /** CampaignCriterion _criterion_id. */
                        public _criterion_id?: "criterion_id";

                        /** CampaignCriterion _bid_modifier. */
                        public _bid_modifier?: "bid_modifier";

                        /** CampaignCriterion _negative. */
                        public _negative?: "negative";

                        /** 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");

                        /**
                         * Creates a new CampaignCriterion instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignCriterion instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICampaignCriterion): google.ads.googleads.v8.resources.CampaignCriterion;

                        /**
                         * Encodes the specified CampaignCriterion message. Does not implicitly {@link google.ads.googleads.v8.resources.CampaignCriterion.verify|verify} messages.
                         * @param m CampaignCriterion message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICampaignCriterion, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignCriterion message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICampaignCriterion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignCriterion message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CampaignCriterion;

                        /**
                         * Verifies a CampaignCriterion message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignCriterion message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignCriterion
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CampaignCriterion;

                        /**
                         * Creates a plain object from a CampaignCriterion message. Also converts values to other types if specified.
                         * @param m CampaignCriterion
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CampaignCriterion, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignCriterion to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CampaignCriterionSimulation. */
                    interface ICampaignCriterionSimulation {

                        /** CampaignCriterionSimulation resource_name */
                        resource_name?: (string|null);

                        /** CampaignCriterionSimulation campaign_id */
                        campaign_id?: (number|null);

                        /** CampaignCriterionSimulation criterion_id */
                        criterion_id?: (number|null);

                        /** CampaignCriterionSimulation type */
                        type?: (google.ads.googleads.v8.enums.SimulationTypeEnum.SimulationType|keyof typeof google.ads.googleads.v8.enums.SimulationTypeEnum.SimulationType|null);

                        /** CampaignCriterionSimulation modification_method */
                        modification_method?: (google.ads.googleads.v8.enums.SimulationModificationMethodEnum.SimulationModificationMethod|keyof typeof google.ads.googleads.v8.enums.SimulationModificationMethodEnum.SimulationModificationMethod|null);

                        /** CampaignCriterionSimulation start_date */
                        start_date?: (string|null);

                        /** CampaignCriterionSimulation end_date */
                        end_date?: (string|null);

                        /** CampaignCriterionSimulation bid_modifier_point_list */
                        bid_modifier_point_list?: (google.ads.googleads.v8.common.IBidModifierSimulationPointList|null);
                    }

                    /** Represents a CampaignCriterionSimulation. */
                    class CampaignCriterionSimulation implements ICampaignCriterionSimulation {

                        /**
                         * Constructs a new CampaignCriterionSimulation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.ICampaignCriterionSimulation);

                        /** CampaignCriterionSimulation resource_name. */
                        public resource_name: string;

                        /** CampaignCriterionSimulation campaign_id. */
                        public campaign_id?: (number|null);

                        /** CampaignCriterionSimulation criterion_id. */
                        public criterion_id?: (number|null);

                        /** CampaignCriterionSimulation type. */
                        public type: (google.ads.googleads.v8.enums.SimulationTypeEnum.SimulationType|keyof typeof google.ads.googleads.v8.enums.SimulationTypeEnum.SimulationType);

                        /** CampaignCriterionSimulation modification_method. */
                        public modification_method: (google.ads.googleads.v8.enums.SimulationModificationMethodEnum.SimulationModificationMethod|keyof typeof google.ads.googleads.v8.enums.SimulationModificationMethodEnum.SimulationModificationMethod);

                        /** CampaignCriterionSimulation start_date. */
                        public start_date?: (string|null);

                        /** CampaignCriterionSimulation end_date. */
                        public end_date?: (string|null);

                        /** CampaignCriterionSimulation bid_modifier_point_list. */
                        public bid_modifier_point_list?: (google.ads.googleads.v8.common.IBidModifierSimulationPointList|null);

                        /** CampaignCriterionSimulation _campaign_id. */
                        public _campaign_id?: "campaign_id";

                        /** CampaignCriterionSimulation _criterion_id. */
                        public _criterion_id?: "criterion_id";

                        /** CampaignCriterionSimulation _start_date. */
                        public _start_date?: "start_date";

                        /** CampaignCriterionSimulation _end_date. */
                        public _end_date?: "end_date";

                        /** CampaignCriterionSimulation point_list. */
                        public point_list?: "bid_modifier_point_list";

                        /**
                         * Creates a new CampaignCriterionSimulation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignCriterionSimulation instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICampaignCriterionSimulation): google.ads.googleads.v8.resources.CampaignCriterionSimulation;

                        /**
                         * Encodes the specified CampaignCriterionSimulation message. Does not implicitly {@link google.ads.googleads.v8.resources.CampaignCriterionSimulation.verify|verify} messages.
                         * @param m CampaignCriterionSimulation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICampaignCriterionSimulation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignCriterionSimulation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.CampaignCriterionSimulation.verify|verify} messages.
                         * @param message CampaignCriterionSimulation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.ICampaignCriterionSimulation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignCriterionSimulation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns CampaignCriterionSimulation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.CampaignCriterionSimulation;

                        /**
                         * Decodes a CampaignCriterionSimulation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignCriterionSimulation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.CampaignCriterionSimulation;

                        /**
                         * Verifies a CampaignCriterionSimulation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignCriterionSimulation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignCriterionSimulation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CampaignCriterionSimulation;

                        /**
                         * Creates a plain object from a CampaignCriterionSimulation message. Also converts values to other types if specified.
                         * @param m CampaignCriterionSimulation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CampaignCriterionSimulation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignCriterionSimulation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.CampaignDraftStatusEnum.CampaignDraftStatus|keyof typeof google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.CampaignDraftStatusEnum.CampaignDraftStatus|keyof typeof google.ads.googleads.v8.enums.CampaignDraftStatusEnum.CampaignDraftStatus);

                        /** CampaignDraft has_experiment_running. */
                        public has_experiment_running?: (boolean|null);

                        /** CampaignDraft long_running_operation. */
                        public long_running_operation?: (string|null);

                        /** CampaignDraft _draft_id. */
                        public _draft_id?: "draft_id";

                        /** CampaignDraft _base_campaign. */
                        public _base_campaign?: "base_campaign";

                        /** CampaignDraft _name. */
                        public _name?: "name";

                        /** CampaignDraft _draft_campaign. */
                        public _draft_campaign?: "draft_campaign";

                        /** CampaignDraft _has_experiment_running. */
                        public _has_experiment_running?: "has_experiment_running";

                        /** CampaignDraft _long_running_operation. */
                        public _long_running_operation?: "long_running_operation";

                        /**
                         * Creates a new CampaignDraft instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignDraft instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICampaignDraft): google.ads.googleads.v8.resources.CampaignDraft;

                        /**
                         * Encodes the specified CampaignDraft message. Does not implicitly {@link google.ads.googleads.v8.resources.CampaignDraft.verify|verify} messages.
                         * @param m CampaignDraft message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICampaignDraft, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignDraft message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICampaignDraft, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignDraft message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CampaignDraft;

                        /**
                         * Verifies a CampaignDraft message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignDraft message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignDraft
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CampaignDraft;

                        /**
                         * Creates a plain object from a CampaignDraft message. Also converts values to other types if specified.
                         * @param m CampaignDraft
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CampaignDraft, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignDraft to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CampaignExperiment. */
                    interface ICampaignExperiment {

                        /** CampaignExperiment resource_name */
                        resource_name?: (string|null);

                        /** CampaignExperiment id */
                        id?: (number|null);

                        /** CampaignExperiment campaign_draft */
                        campaign_draft?: (string|null);

                        /** CampaignExperiment name */
                        name?: (string|null);

                        /** CampaignExperiment description */
                        description?: (string|null);

                        /** CampaignExperiment traffic_split_percent */
                        traffic_split_percent?: (number|null);

                        /** CampaignExperiment traffic_split_type */
                        traffic_split_type?: (google.ads.googleads.v8.enums.CampaignExperimentTrafficSplitTypeEnum.CampaignExperimentTrafficSplitType|keyof typeof google.ads.googleads.v8.enums.CampaignExperimentTrafficSplitTypeEnum.CampaignExperimentTrafficSplitType|null);

                        /** CampaignExperiment experiment_campaign */
                        experiment_campaign?: (string|null);

                        /** CampaignExperiment status */
                        status?: (google.ads.googleads.v8.enums.CampaignExperimentStatusEnum.CampaignExperimentStatus|keyof typeof google.ads.googleads.v8.enums.CampaignExperimentStatusEnum.CampaignExperimentStatus|null);

                        /** CampaignExperiment long_running_operation */
                        long_running_operation?: (string|null);

                        /** CampaignExperiment start_date */
                        start_date?: (string|null);

                        /** CampaignExperiment end_date */
                        end_date?: (string|null);
                    }

                    /** Represents a CampaignExperiment. */
                    class CampaignExperiment implements ICampaignExperiment {

                        /**
                         * Constructs a new CampaignExperiment.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.ICampaignExperiment);

                        /** CampaignExperiment resource_name. */
                        public resource_name: string;

                        /** CampaignExperiment id. */
                        public id?: (number|null);

                        /** CampaignExperiment campaign_draft. */
                        public campaign_draft?: (string|null);

                        /** CampaignExperiment name. */
                        public name?: (string|null);

                        /** CampaignExperiment description. */
                        public description?: (string|null);

                        /** CampaignExperiment traffic_split_percent. */
                        public traffic_split_percent?: (number|null);

                        /** CampaignExperiment traffic_split_type. */
                        public traffic_split_type: (google.ads.googleads.v8.enums.CampaignExperimentTrafficSplitTypeEnum.CampaignExperimentTrafficSplitType|keyof typeof google.ads.googleads.v8.enums.CampaignExperimentTrafficSplitTypeEnum.CampaignExperimentTrafficSplitType);

                        /** CampaignExperiment experiment_campaign. */
                        public experiment_campaign?: (string|null);

                        /** CampaignExperiment status. */
                        public status: (google.ads.googleads.v8.enums.CampaignExperimentStatusEnum.CampaignExperimentStatus|keyof typeof google.ads.googleads.v8.enums.CampaignExperimentStatusEnum.CampaignExperimentStatus);

                        /** CampaignExperiment long_running_operation. */
                        public long_running_operation?: (string|null);

                        /** CampaignExperiment start_date. */
                        public start_date?: (string|null);

                        /** CampaignExperiment end_date. */
                        public end_date?: (string|null);

                        /** CampaignExperiment _id. */
                        public _id?: "id";

                        /** CampaignExperiment _campaign_draft. */
                        public _campaign_draft?: "campaign_draft";

                        /** CampaignExperiment _name. */
                        public _name?: "name";

                        /** CampaignExperiment _description. */
                        public _description?: "description";

                        /** CampaignExperiment _traffic_split_percent. */
                        public _traffic_split_percent?: "traffic_split_percent";

                        /** CampaignExperiment _experiment_campaign. */
                        public _experiment_campaign?: "experiment_campaign";

                        /** CampaignExperiment _long_running_operation. */
                        public _long_running_operation?: "long_running_operation";

                        /** CampaignExperiment _start_date. */
                        public _start_date?: "start_date";

                        /** CampaignExperiment _end_date. */
                        public _end_date?: "end_date";

                        /**
                         * Creates a new CampaignExperiment instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignExperiment instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICampaignExperiment): google.ads.googleads.v8.resources.CampaignExperiment;

                        /**
                         * Encodes the specified CampaignExperiment message. Does not implicitly {@link google.ads.googleads.v8.resources.CampaignExperiment.verify|verify} messages.
                         * @param m CampaignExperiment message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICampaignExperiment, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignExperiment message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.CampaignExperiment.verify|verify} messages.
                         * @param message CampaignExperiment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.ICampaignExperiment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignExperiment message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns CampaignExperiment
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.CampaignExperiment;

                        /**
                         * Decodes a CampaignExperiment message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignExperiment
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.CampaignExperiment;

                        /**
                         * Verifies a CampaignExperiment message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignExperiment message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignExperiment
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CampaignExperiment;

                        /**
                         * Creates a plain object from a CampaignExperiment message. Also converts values to other types if specified.
                         * @param m CampaignExperiment
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CampaignExperiment, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignExperiment to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CampaignExtensionSetting. */
                    interface ICampaignExtensionSetting {

                        /** CampaignExtensionSetting resource_name */
                        resource_name?: (string|null);

                        /** CampaignExtensionSetting extension_type */
                        extension_type?: (google.ads.googleads.v8.enums.ExtensionTypeEnum.ExtensionType|keyof typeof google.ads.googleads.v8.enums.ExtensionTypeEnum.ExtensionType|null);

                        /** CampaignExtensionSetting campaign */
                        campaign?: (string|null);

                        /** CampaignExtensionSetting extension_feed_items */
                        extension_feed_items?: (string[]|null);

                        /** CampaignExtensionSetting device */
                        device?: (google.ads.googleads.v8.enums.ExtensionSettingDeviceEnum.ExtensionSettingDevice|keyof typeof google.ads.googleads.v8.enums.ExtensionSettingDeviceEnum.ExtensionSettingDevice|null);
                    }

                    /** Represents a CampaignExtensionSetting. */
                    class CampaignExtensionSetting implements ICampaignExtensionSetting {

                        /**
                         * Constructs a new CampaignExtensionSetting.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.ICampaignExtensionSetting);

                        /** CampaignExtensionSetting resource_name. */
                        public resource_name: string;

                        /** CampaignExtensionSetting extension_type. */
                        public extension_type: (google.ads.googleads.v8.enums.ExtensionTypeEnum.ExtensionType|keyof typeof google.ads.googleads.v8.enums.ExtensionTypeEnum.ExtensionType);

                        /** CampaignExtensionSetting campaign. */
                        public campaign?: (string|null);

                        /** CampaignExtensionSetting extension_feed_items. */
                        public extension_feed_items: string[];

                        /** CampaignExtensionSetting device. */
                        public device: (google.ads.googleads.v8.enums.ExtensionSettingDeviceEnum.ExtensionSettingDevice|keyof typeof google.ads.googleads.v8.enums.ExtensionSettingDeviceEnum.ExtensionSettingDevice);

                        /** CampaignExtensionSetting _campaign. */
                        public _campaign?: "campaign";

                        /**
                         * Creates a new CampaignExtensionSetting instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignExtensionSetting instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICampaignExtensionSetting): google.ads.googleads.v8.resources.CampaignExtensionSetting;

                        /**
                         * Encodes the specified CampaignExtensionSetting message. Does not implicitly {@link google.ads.googleads.v8.resources.CampaignExtensionSetting.verify|verify} messages.
                         * @param m CampaignExtensionSetting message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICampaignExtensionSetting, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignExtensionSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.CampaignExtensionSetting.verify|verify} messages.
                         * @param message CampaignExtensionSetting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.ICampaignExtensionSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignExtensionSetting message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns CampaignExtensionSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.CampaignExtensionSetting;

                        /**
                         * Decodes a CampaignExtensionSetting message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignExtensionSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.CampaignExtensionSetting;

                        /**
                         * Verifies a CampaignExtensionSetting message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignExtensionSetting message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignExtensionSetting
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CampaignExtensionSetting;

                        /**
                         * Creates a plain object from a CampaignExtensionSetting message. Also converts values to other types if specified.
                         * @param m CampaignExtensionSetting
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CampaignExtensionSetting, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignExtensionSetting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CampaignFeed. */
                    interface ICampaignFeed {

                        /** CampaignFeed resource_name */
                        resource_name?: (string|null);

                        /** CampaignFeed feed */
                        feed?: (string|null);

                        /** CampaignFeed campaign */
                        campaign?: (string|null);

                        /** CampaignFeed placeholder_types */
                        placeholder_types?: (google.ads.googleads.v8.enums.PlaceholderTypeEnum.PlaceholderType[]|null);

                        /** CampaignFeed matching_function */
                        matching_function?: (google.ads.googleads.v8.common.IMatchingFunction|null);

                        /** CampaignFeed status */
                        status?: (google.ads.googleads.v8.enums.FeedLinkStatusEnum.FeedLinkStatus|keyof typeof google.ads.googleads.v8.enums.FeedLinkStatusEnum.FeedLinkStatus|null);
                    }

                    /** Represents a CampaignFeed. */
                    class CampaignFeed implements ICampaignFeed {

                        /**
                         * Constructs a new CampaignFeed.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.ICampaignFeed);

                        /** CampaignFeed resource_name. */
                        public resource_name: string;

                        /** CampaignFeed feed. */
                        public feed?: (string|null);

                        /** CampaignFeed campaign. */
                        public campaign?: (string|null);

                        /** CampaignFeed placeholder_types. */
                        public placeholder_types: google.ads.googleads.v8.enums.PlaceholderTypeEnum.PlaceholderType[];

                        /** CampaignFeed matching_function. */
                        public matching_function?: (google.ads.googleads.v8.common.IMatchingFunction|null);

                        /** CampaignFeed status. */
                        public status: (google.ads.googleads.v8.enums.FeedLinkStatusEnum.FeedLinkStatus|keyof typeof google.ads.googleads.v8.enums.FeedLinkStatusEnum.FeedLinkStatus);

                        /** CampaignFeed _feed. */
                        public _feed?: "feed";

                        /** CampaignFeed _campaign. */
                        public _campaign?: "campaign";

                        /**
                         * Creates a new CampaignFeed instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignFeed instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICampaignFeed): google.ads.googleads.v8.resources.CampaignFeed;

                        /**
                         * Encodes the specified CampaignFeed message. Does not implicitly {@link google.ads.googleads.v8.resources.CampaignFeed.verify|verify} messages.
                         * @param m CampaignFeed message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICampaignFeed, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignFeed message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.CampaignFeed.verify|verify} messages.
                         * @param message CampaignFeed message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.ICampaignFeed, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignFeed message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns CampaignFeed
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.CampaignFeed;

                        /**
                         * Decodes a CampaignFeed message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignFeed
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.CampaignFeed;

                        /**
                         * Verifies a CampaignFeed message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignFeed message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignFeed
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CampaignFeed;

                        /**
                         * Creates a plain object from a CampaignFeed message. Also converts values to other types if specified.
                         * @param m CampaignFeed
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CampaignFeed, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignFeed to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.ICampaignLabel);

                        /** CampaignLabel resource_name. */
                        public resource_name: string;

                        /** CampaignLabel campaign. */
                        public campaign?: (string|null);

                        /** CampaignLabel label. */
                        public label?: (string|null);

                        /** CampaignLabel _campaign. */
                        public _campaign?: "campaign";

                        /** CampaignLabel _label. */
                        public _label?: "label";

                        /**
                         * Creates a new CampaignLabel instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignLabel instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICampaignLabel): google.ads.googleads.v8.resources.CampaignLabel;

                        /**
                         * Encodes the specified CampaignLabel message. Does not implicitly {@link google.ads.googleads.v8.resources.CampaignLabel.verify|verify} messages.
                         * @param m CampaignLabel message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICampaignLabel, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignLabel message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICampaignLabel, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignLabel message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CampaignLabel;

                        /**
                         * Verifies a CampaignLabel message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignLabel message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignLabel
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CampaignLabel;

                        /**
                         * Creates a plain object from a CampaignLabel message. Also converts values to other types if specified.
                         * @param m CampaignLabel
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CampaignLabel, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignLabel to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.CampaignSharedSetStatusEnum.CampaignSharedSetStatus|keyof typeof google.ads.googleads.v8.enums.CampaignSharedSetStatusEnum.CampaignSharedSetStatus|null);
                    }

                    /** Represents a CampaignSharedSet. */
                    class CampaignSharedSet implements ICampaignSharedSet {

                        /**
                         * Constructs a new CampaignSharedSet.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.CampaignSharedSetStatusEnum.CampaignSharedSetStatus|keyof typeof google.ads.googleads.v8.enums.CampaignSharedSetStatusEnum.CampaignSharedSetStatus);

                        /** CampaignSharedSet _campaign. */
                        public _campaign?: "campaign";

                        /** CampaignSharedSet _shared_set. */
                        public _shared_set?: "shared_set";

                        /**
                         * Creates a new CampaignSharedSet instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignSharedSet instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICampaignSharedSet): google.ads.googleads.v8.resources.CampaignSharedSet;

                        /**
                         * Encodes the specified CampaignSharedSet message. Does not implicitly {@link google.ads.googleads.v8.resources.CampaignSharedSet.verify|verify} messages.
                         * @param m CampaignSharedSet message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICampaignSharedSet, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignSharedSet message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICampaignSharedSet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignSharedSet message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CampaignSharedSet;

                        /**
                         * Verifies a CampaignSharedSet message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignSharedSet message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignSharedSet
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CampaignSharedSet;

                        /**
                         * Creates a plain object from a CampaignSharedSet message. Also converts values to other types if specified.
                         * @param m CampaignSharedSet
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CampaignSharedSet, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignSharedSet to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.SimulationTypeEnum.SimulationType|keyof typeof google.ads.googleads.v8.enums.SimulationTypeEnum.SimulationType|null);

                        /** CampaignSimulation modification_method */
                        modification_method?: (google.ads.googleads.v8.enums.SimulationModificationMethodEnum.SimulationModificationMethod|keyof typeof google.ads.googleads.v8.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.v8.common.ICpcBidSimulationPointList|null);

                        /** CampaignSimulation target_cpa_point_list */
                        target_cpa_point_list?: (google.ads.googleads.v8.common.ITargetCpaSimulationPointList|null);

                        /** CampaignSimulation target_roas_point_list */
                        target_roas_point_list?: (google.ads.googleads.v8.common.ITargetRoasSimulationPointList|null);

                        /** CampaignSimulation target_impression_share_point_list */
                        target_impression_share_point_list?: (google.ads.googleads.v8.common.ITargetImpressionShareSimulationPointList|null);

                        /** CampaignSimulation budget_point_list */
                        budget_point_list?: (google.ads.googleads.v8.common.IBudgetSimulationPointList|null);
                    }

                    /** Represents a CampaignSimulation. */
                    class CampaignSimulation implements ICampaignSimulation {

                        /**
                         * Constructs a new CampaignSimulation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.ICampaignSimulation);

                        /** CampaignSimulation resource_name. */
                        public resource_name: string;

                        /** CampaignSimulation campaign_id. */
                        public campaign_id: number;

                        /** CampaignSimulation type. */
                        public type: (google.ads.googleads.v8.enums.SimulationTypeEnum.SimulationType|keyof typeof google.ads.googleads.v8.enums.SimulationTypeEnum.SimulationType);

                        /** CampaignSimulation modification_method. */
                        public modification_method: (google.ads.googleads.v8.enums.SimulationModificationMethodEnum.SimulationModificationMethod|keyof typeof google.ads.googleads.v8.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.v8.common.ICpcBidSimulationPointList|null);

                        /** CampaignSimulation target_cpa_point_list. */
                        public target_cpa_point_list?: (google.ads.googleads.v8.common.ITargetCpaSimulationPointList|null);

                        /** CampaignSimulation target_roas_point_list. */
                        public target_roas_point_list?: (google.ads.googleads.v8.common.ITargetRoasSimulationPointList|null);

                        /** CampaignSimulation target_impression_share_point_list. */
                        public target_impression_share_point_list?: (google.ads.googleads.v8.common.ITargetImpressionShareSimulationPointList|null);

                        /** CampaignSimulation budget_point_list. */
                        public budget_point_list?: (google.ads.googleads.v8.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.v8.resources.ICampaignSimulation): google.ads.googleads.v8.resources.CampaignSimulation;

                        /**
                         * Encodes the specified CampaignSimulation message. Does not implicitly {@link google.ads.googleads.v8.resources.CampaignSimulation.verify|verify} messages.
                         * @param m CampaignSimulation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICampaignSimulation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignSimulation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICampaignSimulation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignSimulation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CampaignSimulation;

                        /**
                         * Verifies a CampaignSimulation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignSimulation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignSimulation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CampaignSimulation;

                        /**
                         * Creates a plain object from a CampaignSimulation message. Also converts values to other types if specified.
                         * @param m CampaignSimulation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CampaignSimulation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignSimulation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** CarrierConstant _id. */
                        public _id?: "id";

                        /** CarrierConstant _name. */
                        public _name?: "name";

                        /** CarrierConstant _country_code. */
                        public _country_code?: "country_code";

                        /**
                         * Creates a new CarrierConstant instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CarrierConstant instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICarrierConstant): google.ads.googleads.v8.resources.CarrierConstant;

                        /**
                         * Encodes the specified CarrierConstant message. Does not implicitly {@link google.ads.googleads.v8.resources.CarrierConstant.verify|verify} messages.
                         * @param m CarrierConstant message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICarrierConstant, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CarrierConstant message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICarrierConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CarrierConstant message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CarrierConstant;

                        /**
                         * Verifies a CarrierConstant message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CarrierConstant message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CarrierConstant
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CarrierConstant;

                        /**
                         * Creates a plain object from a CarrierConstant message. Also converts values to other types if specified.
                         * @param m CarrierConstant
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CarrierConstant, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CarrierConstant to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.ChangeEventResourceTypeEnum.ChangeEventResourceType|keyof typeof google.ads.googleads.v8.enums.ChangeEventResourceTypeEnum.ChangeEventResourceType|null);

                        /** ChangeEvent change_resource_name */
                        change_resource_name?: (string|null);

                        /** ChangeEvent client_type */
                        client_type?: (google.ads.googleads.v8.enums.ChangeClientTypeEnum.ChangeClientType|keyof typeof google.ads.googleads.v8.enums.ChangeClientTypeEnum.ChangeClientType|null);

                        /** ChangeEvent user_email */
                        user_email?: (string|null);

                        /** ChangeEvent old_resource */
                        old_resource?: (google.ads.googleads.v8.resources.ChangeEvent.IChangedResource|null);

                        /** ChangeEvent new_resource */
                        new_resource?: (google.ads.googleads.v8.resources.ChangeEvent.IChangedResource|null);

                        /** ChangeEvent resource_change_operation */
                        resource_change_operation?: (google.ads.googleads.v8.enums.ResourceChangeOperationEnum.ResourceChangeOperation|keyof typeof google.ads.googleads.v8.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 feed */
                        feed?: (string|null);

                        /** ChangeEvent feed_item */
                        feed_item?: (string|null);

                        /** ChangeEvent asset */
                        asset?: (string|null);
                    }

                    /** Represents a ChangeEvent. */
                    class ChangeEvent implements IChangeEvent {

                        /**
                         * Constructs a new ChangeEvent.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ChangeEventResourceTypeEnum.ChangeEventResourceType|keyof typeof google.ads.googleads.v8.enums.ChangeEventResourceTypeEnum.ChangeEventResourceType);

                        /** ChangeEvent change_resource_name. */
                        public change_resource_name: string;

                        /** ChangeEvent client_type. */
                        public client_type: (google.ads.googleads.v8.enums.ChangeClientTypeEnum.ChangeClientType|keyof typeof google.ads.googleads.v8.enums.ChangeClientTypeEnum.ChangeClientType);

                        /** ChangeEvent user_email. */
                        public user_email: string;

                        /** ChangeEvent old_resource. */
                        public old_resource?: (google.ads.googleads.v8.resources.ChangeEvent.IChangedResource|null);

                        /** ChangeEvent new_resource. */
                        public new_resource?: (google.ads.googleads.v8.resources.ChangeEvent.IChangedResource|null);

                        /** ChangeEvent resource_change_operation. */
                        public resource_change_operation: (google.ads.googleads.v8.enums.ResourceChangeOperationEnum.ResourceChangeOperation|keyof typeof google.ads.googleads.v8.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 feed. */
                        public feed: string;

                        /** ChangeEvent feed_item. */
                        public feed_item: 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.v8.resources.IChangeEvent): google.ads.googleads.v8.resources.ChangeEvent;

                        /**
                         * Encodes the specified ChangeEvent message. Does not implicitly {@link google.ads.googleads.v8.resources.ChangeEvent.verify|verify} messages.
                         * @param m ChangeEvent message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IChangeEvent, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ChangeEvent message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IChangeEvent, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ChangeEvent message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.ChangeEvent;

                        /**
                         * Verifies a ChangeEvent message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ChangeEvent message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ChangeEvent
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ChangeEvent;

                        /**
                         * Creates a plain object from a ChangeEvent message. Also converts values to other types if specified.
                         * @param m ChangeEvent
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.ChangeEvent, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ChangeEvent to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace ChangeEvent {

                        /** Properties of a ChangedResource. */
                        interface IChangedResource {

                            /** ChangedResource ad */
                            ad?: (google.ads.googleads.v8.resources.IAd|null);

                            /** ChangedResource ad_group */
                            ad_group?: (google.ads.googleads.v8.resources.IAdGroup|null);

                            /** ChangedResource ad_group_criterion */
                            ad_group_criterion?: (google.ads.googleads.v8.resources.IAdGroupCriterion|null);

                            /** ChangedResource campaign */
                            campaign?: (google.ads.googleads.v8.resources.ICampaign|null);

                            /** ChangedResource campaign_budget */
                            campaign_budget?: (google.ads.googleads.v8.resources.ICampaignBudget|null);

                            /** ChangedResource ad_group_bid_modifier */
                            ad_group_bid_modifier?: (google.ads.googleads.v8.resources.IAdGroupBidModifier|null);

                            /** ChangedResource campaign_criterion */
                            campaign_criterion?: (google.ads.googleads.v8.resources.ICampaignCriterion|null);

                            /** ChangedResource feed */
                            feed?: (google.ads.googleads.v8.resources.IFeed|null);

                            /** ChangedResource feed_item */
                            feed_item?: (google.ads.googleads.v8.resources.IFeedItem|null);

                            /** ChangedResource campaign_feed */
                            campaign_feed?: (google.ads.googleads.v8.resources.ICampaignFeed|null);

                            /** ChangedResource ad_group_feed */
                            ad_group_feed?: (google.ads.googleads.v8.resources.IAdGroupFeed|null);

                            /** ChangedResource ad_group_ad */
                            ad_group_ad?: (google.ads.googleads.v8.resources.IAdGroupAd|null);

                            /** ChangedResource asset */
                            asset?: (google.ads.googleads.v8.resources.IAsset|null);

                            /** ChangedResource customer_asset */
                            customer_asset?: (google.ads.googleads.v8.resources.ICustomerAsset|null);

                            /** ChangedResource campaign_asset */
                            campaign_asset?: (google.ads.googleads.v8.resources.ICampaignAsset|null);

                            /** ChangedResource ad_group_asset */
                            ad_group_asset?: (google.ads.googleads.v8.resources.IAdGroupAsset|null);
                        }

                        /** Represents a ChangedResource. */
                        class ChangedResource implements IChangedResource {

                            /**
                             * Constructs a new ChangedResource.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.ChangeEvent.IChangedResource);

                            /** ChangedResource ad. */
                            public ad?: (google.ads.googleads.v8.resources.IAd|null);

                            /** ChangedResource ad_group. */
                            public ad_group?: (google.ads.googleads.v8.resources.IAdGroup|null);

                            /** ChangedResource ad_group_criterion. */
                            public ad_group_criterion?: (google.ads.googleads.v8.resources.IAdGroupCriterion|null);

                            /** ChangedResource campaign. */
                            public campaign?: (google.ads.googleads.v8.resources.ICampaign|null);

                            /** ChangedResource campaign_budget. */
                            public campaign_budget?: (google.ads.googleads.v8.resources.ICampaignBudget|null);

                            /** ChangedResource ad_group_bid_modifier. */
                            public ad_group_bid_modifier?: (google.ads.googleads.v8.resources.IAdGroupBidModifier|null);

                            /** ChangedResource campaign_criterion. */
                            public campaign_criterion?: (google.ads.googleads.v8.resources.ICampaignCriterion|null);

                            /** ChangedResource feed. */
                            public feed?: (google.ads.googleads.v8.resources.IFeed|null);

                            /** ChangedResource feed_item. */
                            public feed_item?: (google.ads.googleads.v8.resources.IFeedItem|null);

                            /** ChangedResource campaign_feed. */
                            public campaign_feed?: (google.ads.googleads.v8.resources.ICampaignFeed|null);

                            /** ChangedResource ad_group_feed. */
                            public ad_group_feed?: (google.ads.googleads.v8.resources.IAdGroupFeed|null);

                            /** ChangedResource ad_group_ad. */
                            public ad_group_ad?: (google.ads.googleads.v8.resources.IAdGroupAd|null);

                            /** ChangedResource asset. */
                            public asset?: (google.ads.googleads.v8.resources.IAsset|null);

                            /** ChangedResource customer_asset. */
                            public customer_asset?: (google.ads.googleads.v8.resources.ICustomerAsset|null);

                            /** ChangedResource campaign_asset. */
                            public campaign_asset?: (google.ads.googleads.v8.resources.ICampaignAsset|null);

                            /** ChangedResource ad_group_asset. */
                            public ad_group_asset?: (google.ads.googleads.v8.resources.IAdGroupAsset|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.v8.resources.ChangeEvent.IChangedResource): google.ads.googleads.v8.resources.ChangeEvent.ChangedResource;

                            /**
                             * Encodes the specified ChangedResource message. Does not implicitly {@link google.ads.googleads.v8.resources.ChangeEvent.ChangedResource.verify|verify} messages.
                             * @param m ChangedResource message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.ChangeEvent.IChangedResource, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ChangedResource message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ChangeEvent.IChangedResource, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ChangedResource message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.ChangeEvent.ChangedResource;

                            /**
                             * Verifies a ChangedResource message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ChangedResource message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns ChangedResource
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ChangeEvent.ChangedResource;

                            /**
                             * Creates a plain object from a ChangedResource message. Also converts values to other types if specified.
                             * @param m ChangedResource
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.ChangeEvent.ChangedResource, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ChangedResource to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }
                    }

                    /** 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.v8.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v8.enums.AssetFieldTypeEnum.AssetFieldType|null);

                        /** CustomerAsset status */
                        status?: (google.ads.googleads.v8.enums.AssetLinkStatusEnum.AssetLinkStatus|keyof typeof google.ads.googleads.v8.enums.AssetLinkStatusEnum.AssetLinkStatus|null);
                    }

                    /** Represents a CustomerAsset. */
                    class CustomerAsset implements ICustomerAsset {

                        /**
                         * Constructs a new CustomerAsset.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.ICustomerAsset);

                        /** CustomerAsset resource_name. */
                        public resource_name: string;

                        /** CustomerAsset asset. */
                        public asset: string;

                        /** CustomerAsset field_type. */
                        public field_type: (google.ads.googleads.v8.enums.AssetFieldTypeEnum.AssetFieldType|keyof typeof google.ads.googleads.v8.enums.AssetFieldTypeEnum.AssetFieldType);

                        /** CustomerAsset status. */
                        public status: (google.ads.googleads.v8.enums.AssetLinkStatusEnum.AssetLinkStatus|keyof typeof google.ads.googleads.v8.enums.AssetLinkStatusEnum.AssetLinkStatus);

                        /**
                         * Creates a new CustomerAsset instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerAsset instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICustomerAsset): google.ads.googleads.v8.resources.CustomerAsset;

                        /**
                         * Encodes the specified CustomerAsset message. Does not implicitly {@link google.ads.googleads.v8.resources.CustomerAsset.verify|verify} messages.
                         * @param m CustomerAsset message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICustomerAsset, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerAsset message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICustomerAsset, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerAsset message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CustomerAsset;

                        /**
                         * Verifies a CustomerAsset message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerAsset message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerAsset
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CustomerAsset;

                        /**
                         * Creates a plain object from a CustomerAsset message. Also converts values to other types if specified.
                         * @param m CustomerAsset
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CustomerAsset, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerAsset to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a Feed. */
                    interface IFeed {

                        /** Feed resource_name */
                        resource_name?: (string|null);

                        /** Feed id */
                        id?: (number|null);

                        /** Feed name */
                        name?: (string|null);

                        /** Feed attributes */
                        attributes?: (google.ads.googleads.v8.resources.IFeedAttribute[]|null);

                        /** Feed attribute_operations */
                        attribute_operations?: (google.ads.googleads.v8.resources.IFeedAttributeOperation[]|null);

                        /** Feed origin */
                        origin?: (google.ads.googleads.v8.enums.FeedOriginEnum.FeedOrigin|keyof typeof google.ads.googleads.v8.enums.FeedOriginEnum.FeedOrigin|null);

                        /** Feed status */
                        status?: (google.ads.googleads.v8.enums.FeedStatusEnum.FeedStatus|keyof typeof google.ads.googleads.v8.enums.FeedStatusEnum.FeedStatus|null);

                        /** Feed places_location_feed_data */
                        places_location_feed_data?: (google.ads.googleads.v8.resources.Feed.IPlacesLocationFeedData|null);

                        /** Feed affiliate_location_feed_data */
                        affiliate_location_feed_data?: (google.ads.googleads.v8.resources.Feed.IAffiliateLocationFeedData|null);
                    }

                    /** Represents a Feed. */
                    class Feed implements IFeed {

                        /**
                         * Constructs a new Feed.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IFeed);

                        /** Feed resource_name. */
                        public resource_name: string;

                        /** Feed id. */
                        public id?: (number|null);

                        /** Feed name. */
                        public name?: (string|null);

                        /** Feed attributes. */
                        public attributes: google.ads.googleads.v8.resources.IFeedAttribute[];

                        /** Feed attribute_operations. */
                        public attribute_operations: google.ads.googleads.v8.resources.IFeedAttributeOperation[];

                        /** Feed origin. */
                        public origin: (google.ads.googleads.v8.enums.FeedOriginEnum.FeedOrigin|keyof typeof google.ads.googleads.v8.enums.FeedOriginEnum.FeedOrigin);

                        /** Feed status. */
                        public status: (google.ads.googleads.v8.enums.FeedStatusEnum.FeedStatus|keyof typeof google.ads.googleads.v8.enums.FeedStatusEnum.FeedStatus);

                        /** Feed places_location_feed_data. */
                        public places_location_feed_data?: (google.ads.googleads.v8.resources.Feed.IPlacesLocationFeedData|null);

                        /** Feed affiliate_location_feed_data. */
                        public affiliate_location_feed_data?: (google.ads.googleads.v8.resources.Feed.IAffiliateLocationFeedData|null);

                        /** Feed _id. */
                        public _id?: "id";

                        /** Feed _name. */
                        public _name?: "name";

                        /** Feed system_feed_generation_data. */
                        public system_feed_generation_data?: ("places_location_feed_data"|"affiliate_location_feed_data");

                        /**
                         * Creates a new Feed instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Feed instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IFeed): google.ads.googleads.v8.resources.Feed;

                        /**
                         * Encodes the specified Feed message. Does not implicitly {@link google.ads.googleads.v8.resources.Feed.verify|verify} messages.
                         * @param m Feed message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IFeed, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Feed message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.Feed.verify|verify} messages.
                         * @param message Feed message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.IFeed, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Feed message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns Feed
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.Feed;

                        /**
                         * Decodes a Feed message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Feed
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.Feed;

                        /**
                         * Verifies a Feed message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Feed message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns Feed
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Feed;

                        /**
                         * Creates a plain object from a Feed message. Also converts values to other types if specified.
                         * @param m Feed
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.Feed, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Feed to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace Feed {

                        /** Properties of a PlacesLocationFeedData. */
                        interface IPlacesLocationFeedData {

                            /** PlacesLocationFeedData oauth_info */
                            oauth_info?: (google.ads.googleads.v8.resources.Feed.PlacesLocationFeedData.IOAuthInfo|null);

                            /** PlacesLocationFeedData email_address */
                            email_address?: (string|null);

                            /** PlacesLocationFeedData business_account_id */
                            business_account_id?: (string|null);

                            /** PlacesLocationFeedData business_name_filter */
                            business_name_filter?: (string|null);

                            /** PlacesLocationFeedData category_filters */
                            category_filters?: (string[]|null);

                            /** PlacesLocationFeedData label_filters */
                            label_filters?: (string[]|null);
                        }

                        /** Represents a PlacesLocationFeedData. */
                        class PlacesLocationFeedData implements IPlacesLocationFeedData {

                            /**
                             * Constructs a new PlacesLocationFeedData.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.Feed.IPlacesLocationFeedData);

                            /** PlacesLocationFeedData oauth_info. */
                            public oauth_info?: (google.ads.googleads.v8.resources.Feed.PlacesLocationFeedData.IOAuthInfo|null);

                            /** PlacesLocationFeedData email_address. */
                            public email_address?: (string|null);

                            /** PlacesLocationFeedData business_account_id. */
                            public business_account_id: string;

                            /** PlacesLocationFeedData business_name_filter. */
                            public business_name_filter?: (string|null);

                            /** PlacesLocationFeedData category_filters. */
                            public category_filters: string[];

                            /** PlacesLocationFeedData label_filters. */
                            public label_filters: string[];

                            /** PlacesLocationFeedData _email_address. */
                            public _email_address?: "email_address";

                            /** PlacesLocationFeedData _business_name_filter. */
                            public _business_name_filter?: "business_name_filter";

                            /**
                             * Creates a new PlacesLocationFeedData instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns PlacesLocationFeedData instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.Feed.IPlacesLocationFeedData): google.ads.googleads.v8.resources.Feed.PlacesLocationFeedData;

                            /**
                             * Encodes the specified PlacesLocationFeedData message. Does not implicitly {@link google.ads.googleads.v8.resources.Feed.PlacesLocationFeedData.verify|verify} messages.
                             * @param m PlacesLocationFeedData message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Feed.IPlacesLocationFeedData, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified PlacesLocationFeedData message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.Feed.PlacesLocationFeedData.verify|verify} messages.
                             * @param message PlacesLocationFeedData message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v8.resources.Feed.IPlacesLocationFeedData, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a PlacesLocationFeedData message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] Message length if known beforehand
                             * @returns PlacesLocationFeedData
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.Feed.PlacesLocationFeedData;

                            /**
                             * Decodes a PlacesLocationFeedData message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns PlacesLocationFeedData
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.Feed.PlacesLocationFeedData;

                            /**
                             * Verifies a PlacesLocationFeedData message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a PlacesLocationFeedData message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns PlacesLocationFeedData
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Feed.PlacesLocationFeedData;

                            /**
                             * Creates a plain object from a PlacesLocationFeedData message. Also converts values to other types if specified.
                             * @param m PlacesLocationFeedData
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Feed.PlacesLocationFeedData, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this PlacesLocationFeedData to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        namespace PlacesLocationFeedData {

                            /** Properties of a OAuthInfo. */
                            interface IOAuthInfo {

                                /** OAuthInfo http_method */
                                http_method?: (string|null);

                                /** OAuthInfo http_request_url */
                                http_request_url?: (string|null);

                                /** OAuthInfo http_authorization_header */
                                http_authorization_header?: (string|null);
                            }

                            /** Represents a OAuthInfo. */
                            class OAuthInfo implements IOAuthInfo {

                                /**
                                 * Constructs a new OAuthInfo.
                                 * @param [p] Properties to set
                                 */
                                constructor(p?: google.ads.googleads.v8.resources.Feed.PlacesLocationFeedData.IOAuthInfo);

                                /** OAuthInfo http_method. */
                                public http_method?: (string|null);

                                /** OAuthInfo http_request_url. */
                                public http_request_url?: (string|null);

                                /** OAuthInfo http_authorization_header. */
                                public http_authorization_header?: (string|null);

                                /** OAuthInfo _http_method. */
                                public _http_method?: "http_method";

                                /** OAuthInfo _http_request_url. */
                                public _http_request_url?: "http_request_url";

                                /** OAuthInfo _http_authorization_header. */
                                public _http_authorization_header?: "http_authorization_header";

                                /**
                                 * Creates a new OAuthInfo instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns OAuthInfo instance
                                 */
                                public static create(properties?: google.ads.googleads.v8.resources.Feed.PlacesLocationFeedData.IOAuthInfo): google.ads.googleads.v8.resources.Feed.PlacesLocationFeedData.OAuthInfo;

                                /**
                                 * Encodes the specified OAuthInfo message. Does not implicitly {@link google.ads.googleads.v8.resources.Feed.PlacesLocationFeedData.OAuthInfo.verify|verify} messages.
                                 * @param m OAuthInfo message or plain object to encode
                                 * @param [w] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(m: google.ads.googleads.v8.resources.Feed.PlacesLocationFeedData.IOAuthInfo, w?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified OAuthInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.Feed.PlacesLocationFeedData.OAuthInfo.verify|verify} messages.
                                 * @param message OAuthInfo message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.ads.googleads.v8.resources.Feed.PlacesLocationFeedData.IOAuthInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a OAuthInfo message from the specified reader or buffer.
                                 * @param r Reader or buffer to decode from
                                 * @param [l] Message length if known beforehand
                                 * @returns OAuthInfo
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.Feed.PlacesLocationFeedData.OAuthInfo;

                                /**
                                 * Decodes a OAuthInfo message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns OAuthInfo
                                 * @throws {Error} If the payload is not a reader or valid buffer
                                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                 */
                                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.Feed.PlacesLocationFeedData.OAuthInfo;

                                /**
                                 * Verifies a OAuthInfo message.
                                 * @param m Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(m: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a OAuthInfo message from a plain object. Also converts values to their respective internal types.
                                 * @param d Plain object
                                 * @returns OAuthInfo
                                 */
                                public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Feed.PlacesLocationFeedData.OAuthInfo;

                                /**
                                 * Creates a plain object from a OAuthInfo message. Also converts values to other types if specified.
                                 * @param m OAuthInfo
                                 * @param [o] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(m: google.ads.googleads.v8.resources.Feed.PlacesLocationFeedData.OAuthInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this OAuthInfo to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };
                            }
                        }

                        /** Properties of an AffiliateLocationFeedData. */
                        interface IAffiliateLocationFeedData {

                            /** AffiliateLocationFeedData chain_ids */
                            chain_ids?: (number[]|null);

                            /** AffiliateLocationFeedData relationship_type */
                            relationship_type?: (google.ads.googleads.v8.enums.AffiliateLocationFeedRelationshipTypeEnum.AffiliateLocationFeedRelationshipType|keyof typeof google.ads.googleads.v8.enums.AffiliateLocationFeedRelationshipTypeEnum.AffiliateLocationFeedRelationshipType|null);
                        }

                        /** Represents an AffiliateLocationFeedData. */
                        class AffiliateLocationFeedData implements IAffiliateLocationFeedData {

                            /**
                             * Constructs a new AffiliateLocationFeedData.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.Feed.IAffiliateLocationFeedData);

                            /** AffiliateLocationFeedData chain_ids. */
                            public chain_ids: number[];

                            /** AffiliateLocationFeedData relationship_type. */
                            public relationship_type: (google.ads.googleads.v8.enums.AffiliateLocationFeedRelationshipTypeEnum.AffiliateLocationFeedRelationshipType|keyof typeof google.ads.googleads.v8.enums.AffiliateLocationFeedRelationshipTypeEnum.AffiliateLocationFeedRelationshipType);

                            /**
                             * Creates a new AffiliateLocationFeedData instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AffiliateLocationFeedData instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.Feed.IAffiliateLocationFeedData): google.ads.googleads.v8.resources.Feed.AffiliateLocationFeedData;

                            /**
                             * Encodes the specified AffiliateLocationFeedData message. Does not implicitly {@link google.ads.googleads.v8.resources.Feed.AffiliateLocationFeedData.verify|verify} messages.
                             * @param m AffiliateLocationFeedData message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Feed.IAffiliateLocationFeedData, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AffiliateLocationFeedData message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.Feed.AffiliateLocationFeedData.verify|verify} messages.
                             * @param message AffiliateLocationFeedData message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v8.resources.Feed.IAffiliateLocationFeedData, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AffiliateLocationFeedData message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] Message length if known beforehand
                             * @returns AffiliateLocationFeedData
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.Feed.AffiliateLocationFeedData;

                            /**
                             * Decodes an AffiliateLocationFeedData message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AffiliateLocationFeedData
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.Feed.AffiliateLocationFeedData;

                            /**
                             * Verifies an AffiliateLocationFeedData message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates an AffiliateLocationFeedData message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns AffiliateLocationFeedData
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Feed.AffiliateLocationFeedData;

                            /**
                             * Creates a plain object from an AffiliateLocationFeedData message. Also converts values to other types if specified.
                             * @param m AffiliateLocationFeedData
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Feed.AffiliateLocationFeedData, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this AffiliateLocationFeedData to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }
                    }

                    /** Properties of a FeedAttribute. */
                    interface IFeedAttribute {

                        /** FeedAttribute id */
                        id?: (number|null);

                        /** FeedAttribute name */
                        name?: (string|null);

                        /** FeedAttribute type */
                        type?: (google.ads.googleads.v8.enums.FeedAttributeTypeEnum.FeedAttributeType|keyof typeof google.ads.googleads.v8.enums.FeedAttributeTypeEnum.FeedAttributeType|null);

                        /** FeedAttribute is_part_of_key */
                        is_part_of_key?: (boolean|null);
                    }

                    /** Represents a FeedAttribute. */
                    class FeedAttribute implements IFeedAttribute {

                        /**
                         * Constructs a new FeedAttribute.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IFeedAttribute);

                        /** FeedAttribute id. */
                        public id?: (number|null);

                        /** FeedAttribute name. */
                        public name?: (string|null);

                        /** FeedAttribute type. */
                        public type: (google.ads.googleads.v8.enums.FeedAttributeTypeEnum.FeedAttributeType|keyof typeof google.ads.googleads.v8.enums.FeedAttributeTypeEnum.FeedAttributeType);

                        /** FeedAttribute is_part_of_key. */
                        public is_part_of_key?: (boolean|null);

                        /** FeedAttribute _id. */
                        public _id?: "id";

                        /** FeedAttribute _name. */
                        public _name?: "name";

                        /** FeedAttribute _is_part_of_key. */
                        public _is_part_of_key?: "is_part_of_key";

                        /**
                         * Creates a new FeedAttribute instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedAttribute instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IFeedAttribute): google.ads.googleads.v8.resources.FeedAttribute;

                        /**
                         * Encodes the specified FeedAttribute message. Does not implicitly {@link google.ads.googleads.v8.resources.FeedAttribute.verify|verify} messages.
                         * @param m FeedAttribute message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IFeedAttribute, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedAttribute message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.FeedAttribute.verify|verify} messages.
                         * @param message FeedAttribute message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.IFeedAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedAttribute message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedAttribute
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.FeedAttribute;

                        /**
                         * Decodes a FeedAttribute message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedAttribute
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.FeedAttribute;

                        /**
                         * Verifies a FeedAttribute message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedAttribute message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedAttribute
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.FeedAttribute;

                        /**
                         * Creates a plain object from a FeedAttribute message. Also converts values to other types if specified.
                         * @param m FeedAttribute
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.FeedAttribute, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedAttribute to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a FeedAttributeOperation. */
                    interface IFeedAttributeOperation {

                        /** FeedAttributeOperation operator */
                        operator?: (google.ads.googleads.v8.resources.FeedAttributeOperation.Operator|keyof typeof google.ads.googleads.v8.resources.FeedAttributeOperation.Operator|null);

                        /** FeedAttributeOperation value */
                        value?: (google.ads.googleads.v8.resources.IFeedAttribute|null);
                    }

                    /** Represents a FeedAttributeOperation. */
                    class FeedAttributeOperation implements IFeedAttributeOperation {

                        /**
                         * Constructs a new FeedAttributeOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IFeedAttributeOperation);

                        /** FeedAttributeOperation operator. */
                        public operator: (google.ads.googleads.v8.resources.FeedAttributeOperation.Operator|keyof typeof google.ads.googleads.v8.resources.FeedAttributeOperation.Operator);

                        /** FeedAttributeOperation value. */
                        public value?: (google.ads.googleads.v8.resources.IFeedAttribute|null);

                        /**
                         * Creates a new FeedAttributeOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedAttributeOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IFeedAttributeOperation): google.ads.googleads.v8.resources.FeedAttributeOperation;

                        /**
                         * Encodes the specified FeedAttributeOperation message. Does not implicitly {@link google.ads.googleads.v8.resources.FeedAttributeOperation.verify|verify} messages.
                         * @param m FeedAttributeOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IFeedAttributeOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedAttributeOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.FeedAttributeOperation.verify|verify} messages.
                         * @param message FeedAttributeOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.IFeedAttributeOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedAttributeOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedAttributeOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.FeedAttributeOperation;

                        /**
                         * Decodes a FeedAttributeOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedAttributeOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.FeedAttributeOperation;

                        /**
                         * Verifies a FeedAttributeOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedAttributeOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedAttributeOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.FeedAttributeOperation;

                        /**
                         * Creates a plain object from a FeedAttributeOperation message. Also converts values to other types if specified.
                         * @param m FeedAttributeOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.FeedAttributeOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedAttributeOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace FeedAttributeOperation {

                        /** Operator enum. */
                        enum Operator {
                            UNSPECIFIED = 0,
                            UNKNOWN = 1,
                            ADD = 2
                        }
                    }

                    /** Properties of a FeedItem. */
                    interface IFeedItem {

                        /** FeedItem resource_name */
                        resource_name?: (string|null);

                        /** FeedItem feed */
                        feed?: (string|null);

                        /** FeedItem id */
                        id?: (number|null);

                        /** FeedItem start_date_time */
                        start_date_time?: (string|null);

                        /** FeedItem end_date_time */
                        end_date_time?: (string|null);

                        /** FeedItem attribute_values */
                        attribute_values?: (google.ads.googleads.v8.resources.IFeedItemAttributeValue[]|null);

                        /** FeedItem geo_targeting_restriction */
                        geo_targeting_restriction?: (google.ads.googleads.v8.enums.GeoTargetingRestrictionEnum.GeoTargetingRestriction|keyof typeof google.ads.googleads.v8.enums.GeoTargetingRestrictionEnum.GeoTargetingRestriction|null);

                        /** FeedItem url_custom_parameters */
                        url_custom_parameters?: (google.ads.googleads.v8.common.ICustomParameter[]|null);

                        /** FeedItem status */
                        status?: (google.ads.googleads.v8.enums.FeedItemStatusEnum.FeedItemStatus|keyof typeof google.ads.googleads.v8.enums.FeedItemStatusEnum.FeedItemStatus|null);

                        /** FeedItem policy_infos */
                        policy_infos?: (google.ads.googleads.v8.resources.IFeedItemPlaceholderPolicyInfo[]|null);
                    }

                    /** Represents a FeedItem. */
                    class FeedItem implements IFeedItem {

                        /**
                         * Constructs a new FeedItem.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IFeedItem);

                        /** FeedItem resource_name. */
                        public resource_name: string;

                        /** FeedItem feed. */
                        public feed?: (string|null);

                        /** FeedItem id. */
                        public id?: (number|null);

                        /** FeedItem start_date_time. */
                        public start_date_time?: (string|null);

                        /** FeedItem end_date_time. */
                        public end_date_time?: (string|null);

                        /** FeedItem attribute_values. */
                        public attribute_values: google.ads.googleads.v8.resources.IFeedItemAttributeValue[];

                        /** FeedItem geo_targeting_restriction. */
                        public geo_targeting_restriction: (google.ads.googleads.v8.enums.GeoTargetingRestrictionEnum.GeoTargetingRestriction|keyof typeof google.ads.googleads.v8.enums.GeoTargetingRestrictionEnum.GeoTargetingRestriction);

                        /** FeedItem url_custom_parameters. */
                        public url_custom_parameters: google.ads.googleads.v8.common.ICustomParameter[];

                        /** FeedItem status. */
                        public status: (google.ads.googleads.v8.enums.FeedItemStatusEnum.FeedItemStatus|keyof typeof google.ads.googleads.v8.enums.FeedItemStatusEnum.FeedItemStatus);

                        /** FeedItem policy_infos. */
                        public policy_infos: google.ads.googleads.v8.resources.IFeedItemPlaceholderPolicyInfo[];

                        /** FeedItem _feed. */
                        public _feed?: "feed";

                        /** FeedItem _id. */
                        public _id?: "id";

                        /** FeedItem _start_date_time. */
                        public _start_date_time?: "start_date_time";

                        /** FeedItem _end_date_time. */
                        public _end_date_time?: "end_date_time";

                        /**
                         * Creates a new FeedItem instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedItem instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IFeedItem): google.ads.googleads.v8.resources.FeedItem;

                        /**
                         * Encodes the specified FeedItem message. Does not implicitly {@link google.ads.googleads.v8.resources.FeedItem.verify|verify} messages.
                         * @param m FeedItem message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IFeedItem, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItem message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.FeedItem.verify|verify} messages.
                         * @param message FeedItem message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.IFeedItem, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItem message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.FeedItem;

                        /**
                         * Decodes a FeedItem message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.FeedItem;

                        /**
                         * Verifies a FeedItem message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItem message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedItem
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.FeedItem;

                        /**
                         * Creates a plain object from a FeedItem message. Also converts values to other types if specified.
                         * @param m FeedItem
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.FeedItem, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItem to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a FeedItemAttributeValue. */
                    interface IFeedItemAttributeValue {

                        /** FeedItemAttributeValue feed_attribute_id */
                        feed_attribute_id?: (number|null);

                        /** FeedItemAttributeValue integer_value */
                        integer_value?: (number|null);

                        /** FeedItemAttributeValue boolean_value */
                        boolean_value?: (boolean|null);

                        /** FeedItemAttributeValue string_value */
                        string_value?: (string|null);

                        /** FeedItemAttributeValue double_value */
                        double_value?: (number|null);

                        /** FeedItemAttributeValue price_value */
                        price_value?: (google.ads.googleads.v8.common.IMoney|null);

                        /** FeedItemAttributeValue integer_values */
                        integer_values?: (number[]|null);

                        /** FeedItemAttributeValue boolean_values */
                        boolean_values?: (boolean[]|null);

                        /** FeedItemAttributeValue string_values */
                        string_values?: (string[]|null);

                        /** FeedItemAttributeValue double_values */
                        double_values?: (number[]|null);
                    }

                    /** Represents a FeedItemAttributeValue. */
                    class FeedItemAttributeValue implements IFeedItemAttributeValue {

                        /**
                         * Constructs a new FeedItemAttributeValue.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IFeedItemAttributeValue);

                        /** FeedItemAttributeValue feed_attribute_id. */
                        public feed_attribute_id?: (number|null);

                        /** FeedItemAttributeValue integer_value. */
                        public integer_value?: (number|null);

                        /** FeedItemAttributeValue boolean_value. */
                        public boolean_value?: (boolean|null);

                        /** FeedItemAttributeValue string_value. */
                        public string_value?: (string|null);

                        /** FeedItemAttributeValue double_value. */
                        public double_value?: (number|null);

                        /** FeedItemAttributeValue price_value. */
                        public price_value?: (google.ads.googleads.v8.common.IMoney|null);

                        /** FeedItemAttributeValue integer_values. */
                        public integer_values: number[];

                        /** FeedItemAttributeValue boolean_values. */
                        public boolean_values: boolean[];

                        /** FeedItemAttributeValue string_values. */
                        public string_values: string[];

                        /** FeedItemAttributeValue double_values. */
                        public double_values: number[];

                        /** FeedItemAttributeValue _feed_attribute_id. */
                        public _feed_attribute_id?: "feed_attribute_id";

                        /** FeedItemAttributeValue _integer_value. */
                        public _integer_value?: "integer_value";

                        /** FeedItemAttributeValue _boolean_value. */
                        public _boolean_value?: "boolean_value";

                        /** FeedItemAttributeValue _string_value. */
                        public _string_value?: "string_value";

                        /** FeedItemAttributeValue _double_value. */
                        public _double_value?: "double_value";

                        /**
                         * Creates a new FeedItemAttributeValue instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedItemAttributeValue instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IFeedItemAttributeValue): google.ads.googleads.v8.resources.FeedItemAttributeValue;

                        /**
                         * Encodes the specified FeedItemAttributeValue message. Does not implicitly {@link google.ads.googleads.v8.resources.FeedItemAttributeValue.verify|verify} messages.
                         * @param m FeedItemAttributeValue message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IFeedItemAttributeValue, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemAttributeValue message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.FeedItemAttributeValue.verify|verify} messages.
                         * @param message FeedItemAttributeValue message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.IFeedItemAttributeValue, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemAttributeValue message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedItemAttributeValue
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.FeedItemAttributeValue;

                        /**
                         * Decodes a FeedItemAttributeValue message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedItemAttributeValue
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.FeedItemAttributeValue;

                        /**
                         * Verifies a FeedItemAttributeValue message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemAttributeValue message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedItemAttributeValue
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.FeedItemAttributeValue;

                        /**
                         * Creates a plain object from a FeedItemAttributeValue message. Also converts values to other types if specified.
                         * @param m FeedItemAttributeValue
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.FeedItemAttributeValue, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemAttributeValue to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a FeedItemPlaceholderPolicyInfo. */
                    interface IFeedItemPlaceholderPolicyInfo {

                        /** FeedItemPlaceholderPolicyInfo placeholder_type_enum */
                        placeholder_type_enum?: (google.ads.googleads.v8.enums.PlaceholderTypeEnum.PlaceholderType|keyof typeof google.ads.googleads.v8.enums.PlaceholderTypeEnum.PlaceholderType|null);

                        /** FeedItemPlaceholderPolicyInfo feed_mapping_resource_name */
                        feed_mapping_resource_name?: (string|null);

                        /** FeedItemPlaceholderPolicyInfo review_status */
                        review_status?: (google.ads.googleads.v8.enums.PolicyReviewStatusEnum.PolicyReviewStatus|keyof typeof google.ads.googleads.v8.enums.PolicyReviewStatusEnum.PolicyReviewStatus|null);

                        /** FeedItemPlaceholderPolicyInfo approval_status */
                        approval_status?: (google.ads.googleads.v8.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|keyof typeof google.ads.googleads.v8.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|null);

                        /** FeedItemPlaceholderPolicyInfo policy_topic_entries */
                        policy_topic_entries?: (google.ads.googleads.v8.common.IPolicyTopicEntry[]|null);

                        /** FeedItemPlaceholderPolicyInfo validation_status */
                        validation_status?: (google.ads.googleads.v8.enums.FeedItemValidationStatusEnum.FeedItemValidationStatus|keyof typeof google.ads.googleads.v8.enums.FeedItemValidationStatusEnum.FeedItemValidationStatus|null);

                        /** FeedItemPlaceholderPolicyInfo validation_errors */
                        validation_errors?: (google.ads.googleads.v8.resources.IFeedItemValidationError[]|null);

                        /** FeedItemPlaceholderPolicyInfo quality_approval_status */
                        quality_approval_status?: (google.ads.googleads.v8.enums.FeedItemQualityApprovalStatusEnum.FeedItemQualityApprovalStatus|keyof typeof google.ads.googleads.v8.enums.FeedItemQualityApprovalStatusEnum.FeedItemQualityApprovalStatus|null);

                        /** FeedItemPlaceholderPolicyInfo quality_disapproval_reasons */
                        quality_disapproval_reasons?: (google.ads.googleads.v8.enums.FeedItemQualityDisapprovalReasonEnum.FeedItemQualityDisapprovalReason[]|null);
                    }

                    /** Represents a FeedItemPlaceholderPolicyInfo. */
                    class FeedItemPlaceholderPolicyInfo implements IFeedItemPlaceholderPolicyInfo {

                        /**
                         * Constructs a new FeedItemPlaceholderPolicyInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IFeedItemPlaceholderPolicyInfo);

                        /** FeedItemPlaceholderPolicyInfo placeholder_type_enum. */
                        public placeholder_type_enum: (google.ads.googleads.v8.enums.PlaceholderTypeEnum.PlaceholderType|keyof typeof google.ads.googleads.v8.enums.PlaceholderTypeEnum.PlaceholderType);

                        /** FeedItemPlaceholderPolicyInfo feed_mapping_resource_name. */
                        public feed_mapping_resource_name?: (string|null);

                        /** FeedItemPlaceholderPolicyInfo review_status. */
                        public review_status: (google.ads.googleads.v8.enums.PolicyReviewStatusEnum.PolicyReviewStatus|keyof typeof google.ads.googleads.v8.enums.PolicyReviewStatusEnum.PolicyReviewStatus);

                        /** FeedItemPlaceholderPolicyInfo approval_status. */
                        public approval_status: (google.ads.googleads.v8.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus|keyof typeof google.ads.googleads.v8.enums.PolicyApprovalStatusEnum.PolicyApprovalStatus);

                        /** FeedItemPlaceholderPolicyInfo policy_topic_entries. */
                        public policy_topic_entries: google.ads.googleads.v8.common.IPolicyTopicEntry[];

                        /** FeedItemPlaceholderPolicyInfo validation_status. */
                        public validation_status: (google.ads.googleads.v8.enums.FeedItemValidationStatusEnum.FeedItemValidationStatus|keyof typeof google.ads.googleads.v8.enums.FeedItemValidationStatusEnum.FeedItemValidationStatus);

                        /** FeedItemPlaceholderPolicyInfo validation_errors. */
                        public validation_errors: google.ads.googleads.v8.resources.IFeedItemValidationError[];

                        /** FeedItemPlaceholderPolicyInfo quality_approval_status. */
                        public quality_approval_status: (google.ads.googleads.v8.enums.FeedItemQualityApprovalStatusEnum.FeedItemQualityApprovalStatus|keyof typeof google.ads.googleads.v8.enums.FeedItemQualityApprovalStatusEnum.FeedItemQualityApprovalStatus);

                        /** FeedItemPlaceholderPolicyInfo quality_disapproval_reasons. */
                        public quality_disapproval_reasons: google.ads.googleads.v8.enums.FeedItemQualityDisapprovalReasonEnum.FeedItemQualityDisapprovalReason[];

                        /** FeedItemPlaceholderPolicyInfo _feed_mapping_resource_name. */
                        public _feed_mapping_resource_name?: "feed_mapping_resource_name";

                        /**
                         * Creates a new FeedItemPlaceholderPolicyInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedItemPlaceholderPolicyInfo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IFeedItemPlaceholderPolicyInfo): google.ads.googleads.v8.resources.FeedItemPlaceholderPolicyInfo;

                        /**
                         * Encodes the specified FeedItemPlaceholderPolicyInfo message. Does not implicitly {@link google.ads.googleads.v8.resources.FeedItemPlaceholderPolicyInfo.verify|verify} messages.
                         * @param m FeedItemPlaceholderPolicyInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IFeedItemPlaceholderPolicyInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemPlaceholderPolicyInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.FeedItemPlaceholderPolicyInfo.verify|verify} messages.
                         * @param message FeedItemPlaceholderPolicyInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.IFeedItemPlaceholderPolicyInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemPlaceholderPolicyInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedItemPlaceholderPolicyInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.FeedItemPlaceholderPolicyInfo;

                        /**
                         * Decodes a FeedItemPlaceholderPolicyInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedItemPlaceholderPolicyInfo
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.FeedItemPlaceholderPolicyInfo;

                        /**
                         * Verifies a FeedItemPlaceholderPolicyInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemPlaceholderPolicyInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedItemPlaceholderPolicyInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.FeedItemPlaceholderPolicyInfo;

                        /**
                         * Creates a plain object from a FeedItemPlaceholderPolicyInfo message. Also converts values to other types if specified.
                         * @param m FeedItemPlaceholderPolicyInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.FeedItemPlaceholderPolicyInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemPlaceholderPolicyInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a FeedItemValidationError. */
                    interface IFeedItemValidationError {

                        /** FeedItemValidationError validation_error */
                        validation_error?: (google.ads.googleads.v8.errors.FeedItemValidationErrorEnum.FeedItemValidationError|keyof typeof google.ads.googleads.v8.errors.FeedItemValidationErrorEnum.FeedItemValidationError|null);

                        /** FeedItemValidationError description */
                        description?: (string|null);

                        /** FeedItemValidationError feed_attribute_ids */
                        feed_attribute_ids?: (number[]|null);

                        /** FeedItemValidationError extra_info */
                        extra_info?: (string|null);
                    }

                    /** Represents a FeedItemValidationError. */
                    class FeedItemValidationError implements IFeedItemValidationError {

                        /**
                         * Constructs a new FeedItemValidationError.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IFeedItemValidationError);

                        /** FeedItemValidationError validation_error. */
                        public validation_error: (google.ads.googleads.v8.errors.FeedItemValidationErrorEnum.FeedItemValidationError|keyof typeof google.ads.googleads.v8.errors.FeedItemValidationErrorEnum.FeedItemValidationError);

                        /** FeedItemValidationError description. */
                        public description?: (string|null);

                        /** FeedItemValidationError feed_attribute_ids. */
                        public feed_attribute_ids: number[];

                        /** FeedItemValidationError extra_info. */
                        public extra_info?: (string|null);

                        /** FeedItemValidationError _description. */
                        public _description?: "description";

                        /** FeedItemValidationError _extra_info. */
                        public _extra_info?: "extra_info";

                        /**
                         * Creates a new FeedItemValidationError instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedItemValidationError instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IFeedItemValidationError): google.ads.googleads.v8.resources.FeedItemValidationError;

                        /**
                         * Encodes the specified FeedItemValidationError message. Does not implicitly {@link google.ads.googleads.v8.resources.FeedItemValidationError.verify|verify} messages.
                         * @param m FeedItemValidationError message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IFeedItemValidationError, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemValidationError message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.FeedItemValidationError.verify|verify} messages.
                         * @param message FeedItemValidationError message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.IFeedItemValidationError, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemValidationError message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedItemValidationError
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.FeedItemValidationError;

                        /**
                         * Decodes a FeedItemValidationError message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedItemValidationError
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.FeedItemValidationError;

                        /**
                         * Verifies a FeedItemValidationError message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemValidationError message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedItemValidationError
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.FeedItemValidationError;

                        /**
                         * Creates a plain object from a FeedItemValidationError message. Also converts values to other types if specified.
                         * @param m FeedItemValidationError
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.FeedItemValidationError, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemValidationError to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.ChangeStatusResourceTypeEnum.ChangeStatusResourceType|keyof typeof google.ads.googleads.v8.enums.ChangeStatusResourceTypeEnum.ChangeStatusResourceType|null);

                        /** ChangeStatus campaign */
                        campaign?: (string|null);

                        /** ChangeStatus ad_group */
                        ad_group?: (string|null);

                        /** ChangeStatus resource_status */
                        resource_status?: (google.ads.googleads.v8.enums.ChangeStatusOperationEnum.ChangeStatusOperation|keyof typeof google.ads.googleads.v8.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 feed */
                        feed?: (string|null);

                        /** ChangeStatus feed_item */
                        feed_item?: (string|null);

                        /** ChangeStatus ad_group_feed */
                        ad_group_feed?: (string|null);

                        /** ChangeStatus campaign_feed */
                        campaign_feed?: (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);
                    }

                    /** Represents a ChangeStatus. */
                    class ChangeStatus implements IChangeStatus {

                        /**
                         * Constructs a new ChangeStatus.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ChangeStatusResourceTypeEnum.ChangeStatusResourceType|keyof typeof google.ads.googleads.v8.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.v8.enums.ChangeStatusOperationEnum.ChangeStatusOperation|keyof typeof google.ads.googleads.v8.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 feed. */
                        public feed?: (string|null);

                        /** ChangeStatus feed_item. */
                        public feed_item?: (string|null);

                        /** ChangeStatus ad_group_feed. */
                        public ad_group_feed?: (string|null);

                        /** ChangeStatus campaign_feed. */
                        public campaign_feed?: (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 _last_change_date_time. */
                        public _last_change_date_time?: "last_change_date_time";

                        /** ChangeStatus _campaign. */
                        public _campaign?: "campaign";

                        /** ChangeStatus _ad_group. */
                        public _ad_group?: "ad_group";

                        /** ChangeStatus _ad_group_ad. */
                        public _ad_group_ad?: "ad_group_ad";

                        /** ChangeStatus _ad_group_criterion. */
                        public _ad_group_criterion?: "ad_group_criterion";

                        /** ChangeStatus _campaign_criterion. */
                        public _campaign_criterion?: "campaign_criterion";

                        /** ChangeStatus _feed. */
                        public _feed?: "feed";

                        /** ChangeStatus _feed_item. */
                        public _feed_item?: "feed_item";

                        /** ChangeStatus _ad_group_feed. */
                        public _ad_group_feed?: "ad_group_feed";

                        /** ChangeStatus _campaign_feed. */
                        public _campaign_feed?: "campaign_feed";

                        /** ChangeStatus _ad_group_bid_modifier. */
                        public _ad_group_bid_modifier?: "ad_group_bid_modifier";

                        /**
                         * Creates a new ChangeStatus instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ChangeStatus instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IChangeStatus): google.ads.googleads.v8.resources.ChangeStatus;

                        /**
                         * Encodes the specified ChangeStatus message. Does not implicitly {@link google.ads.googleads.v8.resources.ChangeStatus.verify|verify} messages.
                         * @param m ChangeStatus message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IChangeStatus, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ChangeStatus message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IChangeStatus, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ChangeStatus message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.ChangeStatus;

                        /**
                         * Verifies a ChangeStatus message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ChangeStatus message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ChangeStatus
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ChangeStatus;

                        /**
                         * Creates a plain object from a ChangeStatus message. Also converts values to other types if specified.
                         * @param m ChangeStatus
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.ChangeStatus, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ChangeStatus to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.common.IClickLocation|null);

                        /** ClickView location_of_presence */
                        location_of_presence?: (google.ads.googleads.v8.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.v8.common.IKeywordInfo|null);
                    }

                    /** Represents a ClickView. */
                    class ClickView implements IClickView {

                        /**
                         * Constructs a new ClickView.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.IClickLocation|null);

                        /** ClickView location_of_presence. */
                        public location_of_presence?: (google.ads.googleads.v8.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.v8.common.IKeywordInfo|null);

                        /** ClickView _gclid. */
                        public _gclid?: "gclid";

                        /** ClickView _page_number. */
                        public _page_number?: "page_number";

                        /** ClickView _ad_group_ad. */
                        public _ad_group_ad?: "ad_group_ad";

                        /** ClickView _campaign_location_target. */
                        public _campaign_location_target?: "campaign_location_target";

                        /** ClickView _user_list. */
                        public _user_list?: "user_list";

                        /**
                         * Creates a new ClickView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ClickView instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IClickView): google.ads.googleads.v8.resources.ClickView;

                        /**
                         * Encodes the specified ClickView message. Does not implicitly {@link google.ads.googleads.v8.resources.ClickView.verify|verify} messages.
                         * @param m ClickView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IClickView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ClickView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IClickView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ClickView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.ClickView;

                        /**
                         * Verifies a ClickView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ClickView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ClickView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ClickView;

                        /**
                         * Creates a plain object from a ClickView message. Also converts values to other types if specified.
                         * @param m ClickView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.ClickView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ClickView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CombinedAudience. */
                    interface ICombinedAudience {

                        /** CombinedAudience resource_name */
                        resource_name?: (string|null);

                        /** CombinedAudience id */
                        id?: (number|null);

                        /** CombinedAudience status */
                        status?: (google.ads.googleads.v8.enums.CombinedAudienceStatusEnum.CombinedAudienceStatus|keyof typeof google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.ICombinedAudience);

                        /** CombinedAudience resource_name. */
                        public resource_name: string;

                        /** CombinedAudience id. */
                        public id: number;

                        /** CombinedAudience status. */
                        public status: (google.ads.googleads.v8.enums.CombinedAudienceStatusEnum.CombinedAudienceStatus|keyof typeof google.ads.googleads.v8.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.v8.resources.ICombinedAudience): google.ads.googleads.v8.resources.CombinedAudience;

                        /**
                         * Encodes the specified CombinedAudience message. Does not implicitly {@link google.ads.googleads.v8.resources.CombinedAudience.verify|verify} messages.
                         * @param m CombinedAudience message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICombinedAudience, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CombinedAudience message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICombinedAudience, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CombinedAudience message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CombinedAudience;

                        /**
                         * Verifies a CombinedAudience message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CombinedAudience message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CombinedAudience
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CombinedAudience;

                        /**
                         * Creates a plain object from a CombinedAudience message. Also converts values to other types if specified.
                         * @param m CombinedAudience
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CombinedAudience, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CombinedAudience to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.ConversionActionStatusEnum.ConversionActionStatus|keyof typeof google.ads.googleads.v8.enums.ConversionActionStatusEnum.ConversionActionStatus|null);

                        /** ConversionAction type */
                        type?: (google.ads.googleads.v8.enums.ConversionActionTypeEnum.ConversionActionType|keyof typeof google.ads.googleads.v8.enums.ConversionActionTypeEnum.ConversionActionType|null);

                        /** ConversionAction category */
                        category?: (google.ads.googleads.v8.enums.ConversionActionCategoryEnum.ConversionActionCategory|keyof typeof google.ads.googleads.v8.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.v8.resources.ConversionAction.IValueSettings|null);

                        /** ConversionAction counting_type */
                        counting_type?: (google.ads.googleads.v8.enums.ConversionActionCountingTypeEnum.ConversionActionCountingType|keyof typeof google.ads.googleads.v8.enums.ConversionActionCountingTypeEnum.ConversionActionCountingType|null);

                        /** ConversionAction attribution_model_settings */
                        attribution_model_settings?: (google.ads.googleads.v8.resources.ConversionAction.IAttributionModelSettings|null);

                        /** ConversionAction tag_snippets */
                        tag_snippets?: (google.ads.googleads.v8.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.v8.enums.MobileAppVendorEnum.MobileAppVendor|keyof typeof google.ads.googleads.v8.enums.MobileAppVendorEnum.MobileAppVendor|null);

                        /** ConversionAction firebase_settings */
                        firebase_settings?: (google.ads.googleads.v8.resources.ConversionAction.IFirebaseSettings|null);

                        /** ConversionAction third_party_app_analytics_settings */
                        third_party_app_analytics_settings?: (google.ads.googleads.v8.resources.ConversionAction.IThirdPartyAppAnalyticsSettings|null);
                    }

                    /** Represents a ConversionAction. */
                    class ConversionAction implements IConversionAction {

                        /**
                         * Constructs a new ConversionAction.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ConversionActionStatusEnum.ConversionActionStatus|keyof typeof google.ads.googleads.v8.enums.ConversionActionStatusEnum.ConversionActionStatus);

                        /** ConversionAction type. */
                        public type: (google.ads.googleads.v8.enums.ConversionActionTypeEnum.ConversionActionType|keyof typeof google.ads.googleads.v8.enums.ConversionActionTypeEnum.ConversionActionType);

                        /** ConversionAction category. */
                        public category: (google.ads.googleads.v8.enums.ConversionActionCategoryEnum.ConversionActionCategory|keyof typeof google.ads.googleads.v8.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.v8.resources.ConversionAction.IValueSettings|null);

                        /** ConversionAction counting_type. */
                        public counting_type: (google.ads.googleads.v8.enums.ConversionActionCountingTypeEnum.ConversionActionCountingType|keyof typeof google.ads.googleads.v8.enums.ConversionActionCountingTypeEnum.ConversionActionCountingType);

                        /** ConversionAction attribution_model_settings. */
                        public attribution_model_settings?: (google.ads.googleads.v8.resources.ConversionAction.IAttributionModelSettings|null);

                        /** ConversionAction tag_snippets. */
                        public tag_snippets: google.ads.googleads.v8.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.v8.enums.MobileAppVendorEnum.MobileAppVendor|keyof typeof google.ads.googleads.v8.enums.MobileAppVendorEnum.MobileAppVendor);

                        /** ConversionAction firebase_settings. */
                        public firebase_settings?: (google.ads.googleads.v8.resources.ConversionAction.IFirebaseSettings|null);

                        /** ConversionAction third_party_app_analytics_settings. */
                        public third_party_app_analytics_settings?: (google.ads.googleads.v8.resources.ConversionAction.IThirdPartyAppAnalyticsSettings|null);

                        /** ConversionAction _id. */
                        public _id?: "id";

                        /** ConversionAction _name. */
                        public _name?: "name";

                        /** ConversionAction _owner_customer. */
                        public _owner_customer?: "owner_customer";

                        /** ConversionAction _include_in_conversions_metric. */
                        public _include_in_conversions_metric?: "include_in_conversions_metric";

                        /** ConversionAction _click_through_lookback_window_days. */
                        public _click_through_lookback_window_days?: "click_through_lookback_window_days";

                        /** ConversionAction _view_through_lookback_window_days. */
                        public _view_through_lookback_window_days?: "view_through_lookback_window_days";

                        /** ConversionAction _phone_call_duration_seconds. */
                        public _phone_call_duration_seconds?: "phone_call_duration_seconds";

                        /** ConversionAction _app_id. */
                        public _app_id?: "app_id";

                        /**
                         * Creates a new ConversionAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionAction instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IConversionAction): google.ads.googleads.v8.resources.ConversionAction;

                        /**
                         * Encodes the specified ConversionAction message. Does not implicitly {@link google.ads.googleads.v8.resources.ConversionAction.verify|verify} messages.
                         * @param m ConversionAction message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IConversionAction, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionAction message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IConversionAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionAction message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.ConversionAction;

                        /**
                         * Verifies a ConversionAction message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionAction message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionAction
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ConversionAction;

                        /**
                         * Creates a plain object from a ConversionAction message. Also converts values to other types if specified.
                         * @param m ConversionAction
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.ConversionAction, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace ConversionAction {

                        /** Properties of an AttributionModelSettings. */
                        interface IAttributionModelSettings {

                            /** AttributionModelSettings attribution_model */
                            attribution_model?: (google.ads.googleads.v8.enums.AttributionModelEnum.AttributionModel|keyof typeof google.ads.googleads.v8.enums.AttributionModelEnum.AttributionModel|null);

                            /** AttributionModelSettings data_driven_model_status */
                            data_driven_model_status?: (google.ads.googleads.v8.enums.DataDrivenModelStatusEnum.DataDrivenModelStatus|keyof typeof google.ads.googleads.v8.enums.DataDrivenModelStatusEnum.DataDrivenModelStatus|null);
                        }

                        /** Represents an AttributionModelSettings. */
                        class AttributionModelSettings implements IAttributionModelSettings {

                            /**
                             * Constructs a new AttributionModelSettings.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.ConversionAction.IAttributionModelSettings);

                            /** AttributionModelSettings attribution_model. */
                            public attribution_model: (google.ads.googleads.v8.enums.AttributionModelEnum.AttributionModel|keyof typeof google.ads.googleads.v8.enums.AttributionModelEnum.AttributionModel);

                            /** AttributionModelSettings data_driven_model_status. */
                            public data_driven_model_status: (google.ads.googleads.v8.enums.DataDrivenModelStatusEnum.DataDrivenModelStatus|keyof typeof google.ads.googleads.v8.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.v8.resources.ConversionAction.IAttributionModelSettings): google.ads.googleads.v8.resources.ConversionAction.AttributionModelSettings;

                            /**
                             * Encodes the specified AttributionModelSettings message. Does not implicitly {@link google.ads.googleads.v8.resources.ConversionAction.AttributionModelSettings.verify|verify} messages.
                             * @param m AttributionModelSettings message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.ConversionAction.IAttributionModelSettings, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AttributionModelSettings message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ConversionAction.IAttributionModelSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AttributionModelSettings message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.ConversionAction.AttributionModelSettings;

                            /**
                             * Verifies an AttributionModelSettings message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates an AttributionModelSettings message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns AttributionModelSettings
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ConversionAction.AttributionModelSettings;

                            /**
                             * Creates a plain object from an AttributionModelSettings message. Also converts values to other types if specified.
                             * @param m AttributionModelSettings
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.ConversionAction.AttributionModelSettings, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this AttributionModelSettings to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** 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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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);

                            /** ValueSettings _default_value. */
                            public _default_value?: "default_value";

                            /** ValueSettings _default_currency_code. */
                            public _default_currency_code?: "default_currency_code";

                            /** ValueSettings _always_use_default_value. */
                            public _always_use_default_value?: "always_use_default_value";

                            /**
                             * Creates a new ValueSettings instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ValueSettings instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.ConversionAction.IValueSettings): google.ads.googleads.v8.resources.ConversionAction.ValueSettings;

                            /**
                             * Encodes the specified ValueSettings message. Does not implicitly {@link google.ads.googleads.v8.resources.ConversionAction.ValueSettings.verify|verify} messages.
                             * @param m ValueSettings message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.ConversionAction.IValueSettings, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ValueSettings message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ConversionAction.IValueSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ValueSettings message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.ConversionAction.ValueSettings;

                            /**
                             * Verifies a ValueSettings message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ValueSettings message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns ValueSettings
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ConversionAction.ValueSettings;

                            /**
                             * Creates a plain object from a ValueSettings message. Also converts values to other types if specified.
                             * @param m ValueSettings
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.ConversionAction.ValueSettings, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ValueSettings to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a FirebaseSettings. */
                        interface IFirebaseSettings {

                            /** FirebaseSettings event_name */
                            event_name?: (string|null);

                            /** FirebaseSettings project_id */
                            project_id?: (string|null);
                        }

                        /** Represents a FirebaseSettings. */
                        class FirebaseSettings implements IFirebaseSettings {

                            /**
                             * Constructs a new FirebaseSettings.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.ConversionAction.IFirebaseSettings);

                            /** FirebaseSettings event_name. */
                            public event_name?: (string|null);

                            /** FirebaseSettings project_id. */
                            public project_id?: (string|null);

                            /** FirebaseSettings _event_name. */
                            public _event_name?: "event_name";

                            /** FirebaseSettings _project_id. */
                            public _project_id?: "project_id";

                            /**
                             * Creates a new FirebaseSettings instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns FirebaseSettings instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.ConversionAction.IFirebaseSettings): google.ads.googleads.v8.resources.ConversionAction.FirebaseSettings;

                            /**
                             * Encodes the specified FirebaseSettings message. Does not implicitly {@link google.ads.googleads.v8.resources.ConversionAction.FirebaseSettings.verify|verify} messages.
                             * @param m FirebaseSettings message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.ConversionAction.IFirebaseSettings, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified FirebaseSettings message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ConversionAction.IFirebaseSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a FirebaseSettings message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.ConversionAction.FirebaseSettings;

                            /**
                             * Verifies a FirebaseSettings message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a FirebaseSettings message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns FirebaseSettings
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ConversionAction.FirebaseSettings;

                            /**
                             * Creates a plain object from a FirebaseSettings message. Also converts values to other types if specified.
                             * @param m FirebaseSettings
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.ConversionAction.FirebaseSettings, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this FirebaseSettings to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** 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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.ConversionAction.IThirdPartyAppAnalyticsSettings);

                            /** ThirdPartyAppAnalyticsSettings event_name. */
                            public event_name?: (string|null);

                            /** ThirdPartyAppAnalyticsSettings provider_name. */
                            public provider_name: string;

                            /** ThirdPartyAppAnalyticsSettings _event_name. */
                            public _event_name?: "event_name";

                            /**
                             * Creates a new ThirdPartyAppAnalyticsSettings instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ThirdPartyAppAnalyticsSettings instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.ConversionAction.IThirdPartyAppAnalyticsSettings): google.ads.googleads.v8.resources.ConversionAction.ThirdPartyAppAnalyticsSettings;

                            /**
                             * Encodes the specified ThirdPartyAppAnalyticsSettings message. Does not implicitly {@link google.ads.googleads.v8.resources.ConversionAction.ThirdPartyAppAnalyticsSettings.verify|verify} messages.
                             * @param m ThirdPartyAppAnalyticsSettings message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.ConversionAction.IThirdPartyAppAnalyticsSettings, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ThirdPartyAppAnalyticsSettings message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ConversionAction.IThirdPartyAppAnalyticsSettings, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ThirdPartyAppAnalyticsSettings message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.ConversionAction.ThirdPartyAppAnalyticsSettings;

                            /**
                             * Verifies a ThirdPartyAppAnalyticsSettings message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ThirdPartyAppAnalyticsSettings message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns ThirdPartyAppAnalyticsSettings
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ConversionAction.ThirdPartyAppAnalyticsSettings;

                            /**
                             * Creates a plain object from a ThirdPartyAppAnalyticsSettings message. Also converts values to other types if specified.
                             * @param m ThirdPartyAppAnalyticsSettings
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.ConversionAction.ThirdPartyAppAnalyticsSettings, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ThirdPartyAppAnalyticsSettings to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }
                    }

                    /** 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.v8.enums.ConversionCustomVariableStatusEnum.ConversionCustomVariableStatus|keyof typeof google.ads.googleads.v8.enums.ConversionCustomVariableStatusEnum.ConversionCustomVariableStatus|null);

                        /** ConversionCustomVariable owner_customer */
                        owner_customer?: (string|null);
                    }

                    /** Represents a ConversionCustomVariable. */
                    class ConversionCustomVariable implements IConversionCustomVariable {

                        /**
                         * Constructs a new ConversionCustomVariable.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ConversionCustomVariableStatusEnum.ConversionCustomVariableStatus|keyof typeof google.ads.googleads.v8.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.v8.resources.IConversionCustomVariable): google.ads.googleads.v8.resources.ConversionCustomVariable;

                        /**
                         * Encodes the specified ConversionCustomVariable message. Does not implicitly {@link google.ads.googleads.v8.resources.ConversionCustomVariable.verify|verify} messages.
                         * @param m ConversionCustomVariable message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IConversionCustomVariable, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionCustomVariable message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IConversionCustomVariable, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionCustomVariable message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.ConversionCustomVariable;

                        /**
                         * Verifies a ConversionCustomVariable message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionCustomVariable message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionCustomVariable
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ConversionCustomVariable;

                        /**
                         * Creates a plain object from a ConversionCustomVariable message. Also converts values to other types if specified.
                         * @param m ConversionCustomVariable
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.ConversionCustomVariable, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionCustomVariable to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ConversionValueRule. */
                    interface IConversionValueRule {

                        /** ConversionValueRule resource_name */
                        resource_name?: (string|null);

                        /** ConversionValueRule id */
                        id?: (number|null);

                        /** ConversionValueRule action */
                        action?: (google.ads.googleads.v8.resources.ConversionValueRule.IValueRuleAction|null);

                        /** ConversionValueRule geo_location_condition */
                        geo_location_condition?: (google.ads.googleads.v8.resources.ConversionValueRule.IValueRuleGeoLocationCondition|null);

                        /** ConversionValueRule device_condition */
                        device_condition?: (google.ads.googleads.v8.resources.ConversionValueRule.IValueRuleDeviceCondition|null);

                        /** ConversionValueRule audience_condition */
                        audience_condition?: (google.ads.googleads.v8.resources.ConversionValueRule.IValueRuleAudienceCondition|null);

                        /** ConversionValueRule owner_customer */
                        owner_customer?: (string|null);

                        /** ConversionValueRule status */
                        status?: (google.ads.googleads.v8.enums.ConversionValueRuleStatusEnum.ConversionValueRuleStatus|keyof typeof google.ads.googleads.v8.enums.ConversionValueRuleStatusEnum.ConversionValueRuleStatus|null);
                    }

                    /** Represents a ConversionValueRule. */
                    class ConversionValueRule implements IConversionValueRule {

                        /**
                         * Constructs a new ConversionValueRule.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IConversionValueRule);

                        /** ConversionValueRule resource_name. */
                        public resource_name: string;

                        /** ConversionValueRule id. */
                        public id: number;

                        /** ConversionValueRule action. */
                        public action?: (google.ads.googleads.v8.resources.ConversionValueRule.IValueRuleAction|null);

                        /** ConversionValueRule geo_location_condition. */
                        public geo_location_condition?: (google.ads.googleads.v8.resources.ConversionValueRule.IValueRuleGeoLocationCondition|null);

                        /** ConversionValueRule device_condition. */
                        public device_condition?: (google.ads.googleads.v8.resources.ConversionValueRule.IValueRuleDeviceCondition|null);

                        /** ConversionValueRule audience_condition. */
                        public audience_condition?: (google.ads.googleads.v8.resources.ConversionValueRule.IValueRuleAudienceCondition|null);

                        /** ConversionValueRule owner_customer. */
                        public owner_customer: string;

                        /** ConversionValueRule status. */
                        public status: (google.ads.googleads.v8.enums.ConversionValueRuleStatusEnum.ConversionValueRuleStatus|keyof typeof google.ads.googleads.v8.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.v8.resources.IConversionValueRule): google.ads.googleads.v8.resources.ConversionValueRule;

                        /**
                         * Encodes the specified ConversionValueRule message. Does not implicitly {@link google.ads.googleads.v8.resources.ConversionValueRule.verify|verify} messages.
                         * @param m ConversionValueRule message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IConversionValueRule, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionValueRule message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IConversionValueRule, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionValueRule message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.ConversionValueRule;

                        /**
                         * Verifies a ConversionValueRule message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionValueRule message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionValueRule
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ConversionValueRule;

                        /**
                         * Creates a plain object from a ConversionValueRule message. Also converts values to other types if specified.
                         * @param m ConversionValueRule
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.ConversionValueRule, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionValueRule to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace ConversionValueRule {

                        /** Properties of a ValueRuleAction. */
                        interface IValueRuleAction {

                            /** ValueRuleAction operation */
                            operation?: (google.ads.googleads.v8.enums.ValueRuleOperationEnum.ValueRuleOperation|keyof typeof google.ads.googleads.v8.enums.ValueRuleOperationEnum.ValueRuleOperation|null);

                            /** ValueRuleAction value */
                            value?: (number|null);
                        }

                        /** Represents a ValueRuleAction. */
                        class ValueRuleAction implements IValueRuleAction {

                            /**
                             * Constructs a new ValueRuleAction.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.ConversionValueRule.IValueRuleAction);

                            /** ValueRuleAction operation. */
                            public operation: (google.ads.googleads.v8.enums.ValueRuleOperationEnum.ValueRuleOperation|keyof typeof google.ads.googleads.v8.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.v8.resources.ConversionValueRule.IValueRuleAction): google.ads.googleads.v8.resources.ConversionValueRule.ValueRuleAction;

                            /**
                             * Encodes the specified ValueRuleAction message. Does not implicitly {@link google.ads.googleads.v8.resources.ConversionValueRule.ValueRuleAction.verify|verify} messages.
                             * @param m ValueRuleAction message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.ConversionValueRule.IValueRuleAction, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ValueRuleAction message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ConversionValueRule.IValueRuleAction, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ValueRuleAction message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.ConversionValueRule.ValueRuleAction;

                            /**
                             * Verifies a ValueRuleAction message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ValueRuleAction message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns ValueRuleAction
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ConversionValueRule.ValueRuleAction;

                            /**
                             * Creates a plain object from a ValueRuleAction message. Also converts values to other types if specified.
                             * @param m ValueRuleAction
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.ConversionValueRule.ValueRuleAction, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ValueRuleAction to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** 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.v8.enums.ValueRuleGeoLocationMatchTypeEnum.ValueRuleGeoLocationMatchType|keyof typeof google.ads.googleads.v8.enums.ValueRuleGeoLocationMatchTypeEnum.ValueRuleGeoLocationMatchType|null);

                            /** ValueRuleGeoLocationCondition geo_target_constants */
                            geo_target_constants?: (string[]|null);

                            /** ValueRuleGeoLocationCondition geo_match_type */
                            geo_match_type?: (google.ads.googleads.v8.enums.ValueRuleGeoLocationMatchTypeEnum.ValueRuleGeoLocationMatchType|keyof typeof google.ads.googleads.v8.enums.ValueRuleGeoLocationMatchTypeEnum.ValueRuleGeoLocationMatchType|null);
                        }

                        /** Represents a ValueRuleGeoLocationCondition. */
                        class ValueRuleGeoLocationCondition implements IValueRuleGeoLocationCondition {

                            /**
                             * Constructs a new ValueRuleGeoLocationCondition.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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.v8.enums.ValueRuleGeoLocationMatchTypeEnum.ValueRuleGeoLocationMatchType|keyof typeof google.ads.googleads.v8.enums.ValueRuleGeoLocationMatchTypeEnum.ValueRuleGeoLocationMatchType);

                            /** ValueRuleGeoLocationCondition geo_target_constants. */
                            public geo_target_constants: string[];

                            /** ValueRuleGeoLocationCondition geo_match_type. */
                            public geo_match_type: (google.ads.googleads.v8.enums.ValueRuleGeoLocationMatchTypeEnum.ValueRuleGeoLocationMatchType|keyof typeof google.ads.googleads.v8.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.v8.resources.ConversionValueRule.IValueRuleGeoLocationCondition): google.ads.googleads.v8.resources.ConversionValueRule.ValueRuleGeoLocationCondition;

                            /**
                             * Encodes the specified ValueRuleGeoLocationCondition message. Does not implicitly {@link google.ads.googleads.v8.resources.ConversionValueRule.ValueRuleGeoLocationCondition.verify|verify} messages.
                             * @param m ValueRuleGeoLocationCondition message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.ConversionValueRule.IValueRuleGeoLocationCondition, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ValueRuleGeoLocationCondition message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ConversionValueRule.IValueRuleGeoLocationCondition, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ValueRuleGeoLocationCondition message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.ConversionValueRule.ValueRuleGeoLocationCondition;

                            /**
                             * Verifies a ValueRuleGeoLocationCondition message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ValueRuleGeoLocationCondition message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns ValueRuleGeoLocationCondition
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ConversionValueRule.ValueRuleGeoLocationCondition;

                            /**
                             * Creates a plain object from a ValueRuleGeoLocationCondition message. Also converts values to other types if specified.
                             * @param m ValueRuleGeoLocationCondition
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.ConversionValueRule.ValueRuleGeoLocationCondition, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ValueRuleGeoLocationCondition to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a ValueRuleDeviceCondition. */
                        interface IValueRuleDeviceCondition {

                            /** ValueRuleDeviceCondition device_types */
                            device_types?: (google.ads.googleads.v8.enums.ValueRuleDeviceTypeEnum.ValueRuleDeviceType[]|null);
                        }

                        /** Represents a ValueRuleDeviceCondition. */
                        class ValueRuleDeviceCondition implements IValueRuleDeviceCondition {

                            /**
                             * Constructs a new ValueRuleDeviceCondition.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.ConversionValueRule.IValueRuleDeviceCondition);

                            /** ValueRuleDeviceCondition device_types. */
                            public device_types: google.ads.googleads.v8.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.v8.resources.ConversionValueRule.IValueRuleDeviceCondition): google.ads.googleads.v8.resources.ConversionValueRule.ValueRuleDeviceCondition;

                            /**
                             * Encodes the specified ValueRuleDeviceCondition message. Does not implicitly {@link google.ads.googleads.v8.resources.ConversionValueRule.ValueRuleDeviceCondition.verify|verify} messages.
                             * @param m ValueRuleDeviceCondition message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.ConversionValueRule.IValueRuleDeviceCondition, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ValueRuleDeviceCondition message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ConversionValueRule.IValueRuleDeviceCondition, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ValueRuleDeviceCondition message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.ConversionValueRule.ValueRuleDeviceCondition;

                            /**
                             * Verifies a ValueRuleDeviceCondition message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ValueRuleDeviceCondition message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns ValueRuleDeviceCondition
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ConversionValueRule.ValueRuleDeviceCondition;

                            /**
                             * Creates a plain object from a ValueRuleDeviceCondition message. Also converts values to other types if specified.
                             * @param m ValueRuleDeviceCondition
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.ConversionValueRule.ValueRuleDeviceCondition, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ValueRuleDeviceCondition to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** 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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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.v8.resources.ConversionValueRule.IValueRuleAudienceCondition): google.ads.googleads.v8.resources.ConversionValueRule.ValueRuleAudienceCondition;

                            /**
                             * Encodes the specified ValueRuleAudienceCondition message. Does not implicitly {@link google.ads.googleads.v8.resources.ConversionValueRule.ValueRuleAudienceCondition.verify|verify} messages.
                             * @param m ValueRuleAudienceCondition message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.ConversionValueRule.IValueRuleAudienceCondition, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ValueRuleAudienceCondition message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ConversionValueRule.IValueRuleAudienceCondition, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ValueRuleAudienceCondition message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.ConversionValueRule.ValueRuleAudienceCondition;

                            /**
                             * Verifies a ValueRuleAudienceCondition message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ValueRuleAudienceCondition message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns ValueRuleAudienceCondition
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ConversionValueRule.ValueRuleAudienceCondition;

                            /**
                             * Creates a plain object from a ValueRuleAudienceCondition message. Also converts values to other types if specified.
                             * @param m ValueRuleAudienceCondition
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.ConversionValueRule.ValueRuleAudienceCondition, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ValueRuleAudienceCondition to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }
                    }

                    /** 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.v8.enums.ValueRuleSetDimensionEnum.ValueRuleSetDimension[]|null);

                        /** ConversionValueRuleSet owner_customer */
                        owner_customer?: (string|null);

                        /** ConversionValueRuleSet attachment_type */
                        attachment_type?: (google.ads.googleads.v8.enums.ValueRuleSetAttachmentTypeEnum.ValueRuleSetAttachmentType|keyof typeof google.ads.googleads.v8.enums.ValueRuleSetAttachmentTypeEnum.ValueRuleSetAttachmentType|null);

                        /** ConversionValueRuleSet campaign */
                        campaign?: (string|null);

                        /** ConversionValueRuleSet status */
                        status?: (google.ads.googleads.v8.enums.ConversionValueRuleSetStatusEnum.ConversionValueRuleSetStatus|keyof typeof google.ads.googleads.v8.enums.ConversionValueRuleSetStatusEnum.ConversionValueRuleSetStatus|null);
                    }

                    /** Represents a ConversionValueRuleSet. */
                    class ConversionValueRuleSet implements IConversionValueRuleSet {

                        /**
                         * Constructs a new ConversionValueRuleSet.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ValueRuleSetDimensionEnum.ValueRuleSetDimension[];

                        /** ConversionValueRuleSet owner_customer. */
                        public owner_customer: string;

                        /** ConversionValueRuleSet attachment_type. */
                        public attachment_type: (google.ads.googleads.v8.enums.ValueRuleSetAttachmentTypeEnum.ValueRuleSetAttachmentType|keyof typeof google.ads.googleads.v8.enums.ValueRuleSetAttachmentTypeEnum.ValueRuleSetAttachmentType);

                        /** ConversionValueRuleSet campaign. */
                        public campaign: string;

                        /** ConversionValueRuleSet status. */
                        public status: (google.ads.googleads.v8.enums.ConversionValueRuleSetStatusEnum.ConversionValueRuleSetStatus|keyof typeof google.ads.googleads.v8.enums.ConversionValueRuleSetStatusEnum.ConversionValueRuleSetStatus);

                        /**
                         * Creates a new ConversionValueRuleSet instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionValueRuleSet instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IConversionValueRuleSet): google.ads.googleads.v8.resources.ConversionValueRuleSet;

                        /**
                         * Encodes the specified ConversionValueRuleSet message. Does not implicitly {@link google.ads.googleads.v8.resources.ConversionValueRuleSet.verify|verify} messages.
                         * @param m ConversionValueRuleSet message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IConversionValueRuleSet, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionValueRuleSet message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IConversionValueRuleSet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionValueRuleSet message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.ConversionValueRuleSet;

                        /**
                         * Verifies a ConversionValueRuleSet message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionValueRuleSet message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionValueRuleSet
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ConversionValueRuleSet;

                        /**
                         * Creates a plain object from a ConversionValueRuleSet message. Also converts values to other types if specified.
                         * @param m ConversionValueRuleSet
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.ConversionValueRuleSet, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionValueRuleSet to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** CurrencyConstant _code. */
                        public _code?: "code";

                        /** CurrencyConstant _name. */
                        public _name?: "name";

                        /** CurrencyConstant _symbol. */
                        public _symbol?: "symbol";

                        /** CurrencyConstant _billable_unit_micros. */
                        public _billable_unit_micros?: "billable_unit_micros";

                        /**
                         * Creates a new CurrencyConstant instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CurrencyConstant instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICurrencyConstant): google.ads.googleads.v8.resources.CurrencyConstant;

                        /**
                         * Encodes the specified CurrencyConstant message. Does not implicitly {@link google.ads.googleads.v8.resources.CurrencyConstant.verify|verify} messages.
                         * @param m CurrencyConstant message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICurrencyConstant, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CurrencyConstant message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICurrencyConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CurrencyConstant message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CurrencyConstant;

                        /**
                         * Verifies a CurrencyConstant message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CurrencyConstant message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CurrencyConstant
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CurrencyConstant;

                        /**
                         * Creates a plain object from a CurrencyConstant message. Also converts values to other types if specified.
                         * @param m CurrencyConstant
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CurrencyConstant, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CurrencyConstant to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CustomAudience. */
                    interface ICustomAudience {

                        /** CustomAudience resource_name */
                        resource_name?: (string|null);

                        /** CustomAudience id */
                        id?: (number|null);

                        /** CustomAudience status */
                        status?: (google.ads.googleads.v8.enums.CustomAudienceStatusEnum.CustomAudienceStatus|keyof typeof google.ads.googleads.v8.enums.CustomAudienceStatusEnum.CustomAudienceStatus|null);

                        /** CustomAudience name */
                        name?: (string|null);

                        /** CustomAudience type */
                        type?: (google.ads.googleads.v8.enums.CustomAudienceTypeEnum.CustomAudienceType|keyof typeof google.ads.googleads.v8.enums.CustomAudienceTypeEnum.CustomAudienceType|null);

                        /** CustomAudience description */
                        description?: (string|null);

                        /** CustomAudience members */
                        members?: (google.ads.googleads.v8.resources.ICustomAudienceMember[]|null);
                    }

                    /** Represents a CustomAudience. */
                    class CustomAudience implements ICustomAudience {

                        /**
                         * Constructs a new CustomAudience.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.ICustomAudience);

                        /** CustomAudience resource_name. */
                        public resource_name: string;

                        /** CustomAudience id. */
                        public id: number;

                        /** CustomAudience status. */
                        public status: (google.ads.googleads.v8.enums.CustomAudienceStatusEnum.CustomAudienceStatus|keyof typeof google.ads.googleads.v8.enums.CustomAudienceStatusEnum.CustomAudienceStatus);

                        /** CustomAudience name. */
                        public name: string;

                        /** CustomAudience type. */
                        public type: (google.ads.googleads.v8.enums.CustomAudienceTypeEnum.CustomAudienceType|keyof typeof google.ads.googleads.v8.enums.CustomAudienceTypeEnum.CustomAudienceType);

                        /** CustomAudience description. */
                        public description: string;

                        /** CustomAudience members. */
                        public members: google.ads.googleads.v8.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.v8.resources.ICustomAudience): google.ads.googleads.v8.resources.CustomAudience;

                        /**
                         * Encodes the specified CustomAudience message. Does not implicitly {@link google.ads.googleads.v8.resources.CustomAudience.verify|verify} messages.
                         * @param m CustomAudience message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICustomAudience, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomAudience message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICustomAudience, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomAudience message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CustomAudience;

                        /**
                         * Verifies a CustomAudience message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomAudience message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomAudience
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CustomAudience;

                        /**
                         * Creates a plain object from a CustomAudience message. Also converts values to other types if specified.
                         * @param m CustomAudience
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CustomAudience, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomAudience to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CustomAudienceMember. */
                    interface ICustomAudienceMember {

                        /** CustomAudienceMember member_type */
                        member_type?: (google.ads.googleads.v8.enums.CustomAudienceMemberTypeEnum.CustomAudienceMemberType|keyof typeof google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.ICustomAudienceMember);

                        /** CustomAudienceMember member_type. */
                        public member_type: (google.ads.googleads.v8.enums.CustomAudienceMemberTypeEnum.CustomAudienceMemberType|keyof typeof google.ads.googleads.v8.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.v8.resources.ICustomAudienceMember): google.ads.googleads.v8.resources.CustomAudienceMember;

                        /**
                         * Encodes the specified CustomAudienceMember message. Does not implicitly {@link google.ads.googleads.v8.resources.CustomAudienceMember.verify|verify} messages.
                         * @param m CustomAudienceMember message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICustomAudienceMember, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomAudienceMember message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICustomAudienceMember, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomAudienceMember message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CustomAudienceMember;

                        /**
                         * Verifies a CustomAudienceMember message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomAudienceMember message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomAudienceMember
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CustomAudienceMember;

                        /**
                         * Creates a plain object from a CustomAudienceMember message. Also converts values to other types if specified.
                         * @param m CustomAudienceMember
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CustomAudienceMember, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomAudienceMember to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CustomInterest. */
                    interface ICustomInterest {

                        /** CustomInterest resource_name */
                        resource_name?: (string|null);

                        /** CustomInterest id */
                        id?: (number|null);

                        /** CustomInterest status */
                        status?: (google.ads.googleads.v8.enums.CustomInterestStatusEnum.CustomInterestStatus|keyof typeof google.ads.googleads.v8.enums.CustomInterestStatusEnum.CustomInterestStatus|null);

                        /** CustomInterest name */
                        name?: (string|null);

                        /** CustomInterest type */
                        type?: (google.ads.googleads.v8.enums.CustomInterestTypeEnum.CustomInterestType|keyof typeof google.ads.googleads.v8.enums.CustomInterestTypeEnum.CustomInterestType|null);

                        /** CustomInterest description */
                        description?: (string|null);

                        /** CustomInterest members */
                        members?: (google.ads.googleads.v8.resources.ICustomInterestMember[]|null);
                    }

                    /** Represents a CustomInterest. */
                    class CustomInterest implements ICustomInterest {

                        /**
                         * Constructs a new CustomInterest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.ICustomInterest);

                        /** CustomInterest resource_name. */
                        public resource_name: string;

                        /** CustomInterest id. */
                        public id?: (number|null);

                        /** CustomInterest status. */
                        public status: (google.ads.googleads.v8.enums.CustomInterestStatusEnum.CustomInterestStatus|keyof typeof google.ads.googleads.v8.enums.CustomInterestStatusEnum.CustomInterestStatus);

                        /** CustomInterest name. */
                        public name?: (string|null);

                        /** CustomInterest type. */
                        public type: (google.ads.googleads.v8.enums.CustomInterestTypeEnum.CustomInterestType|keyof typeof google.ads.googleads.v8.enums.CustomInterestTypeEnum.CustomInterestType);

                        /** CustomInterest description. */
                        public description?: (string|null);

                        /** CustomInterest members. */
                        public members: google.ads.googleads.v8.resources.ICustomInterestMember[];

                        /** CustomInterest _id. */
                        public _id?: "id";

                        /** CustomInterest _name. */
                        public _name?: "name";

                        /** CustomInterest _description. */
                        public _description?: "description";

                        /**
                         * Creates a new CustomInterest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomInterest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICustomInterest): google.ads.googleads.v8.resources.CustomInterest;

                        /**
                         * Encodes the specified CustomInterest message. Does not implicitly {@link google.ads.googleads.v8.resources.CustomInterest.verify|verify} messages.
                         * @param m CustomInterest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICustomInterest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomInterest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICustomInterest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomInterest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CustomInterest;

                        /**
                         * Verifies a CustomInterest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomInterest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomInterest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CustomInterest;

                        /**
                         * Creates a plain object from a CustomInterest message. Also converts values to other types if specified.
                         * @param m CustomInterest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CustomInterest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomInterest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CustomInterestMember. */
                    interface ICustomInterestMember {

                        /** CustomInterestMember member_type */
                        member_type?: (google.ads.googleads.v8.enums.CustomInterestMemberTypeEnum.CustomInterestMemberType|keyof typeof google.ads.googleads.v8.enums.CustomInterestMemberTypeEnum.CustomInterestMemberType|null);

                        /** CustomInterestMember parameter */
                        parameter?: (string|null);
                    }

                    /** Represents a CustomInterestMember. */
                    class CustomInterestMember implements ICustomInterestMember {

                        /**
                         * Constructs a new CustomInterestMember.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.ICustomInterestMember);

                        /** CustomInterestMember member_type. */
                        public member_type: (google.ads.googleads.v8.enums.CustomInterestMemberTypeEnum.CustomInterestMemberType|keyof typeof google.ads.googleads.v8.enums.CustomInterestMemberTypeEnum.CustomInterestMemberType);

                        /** CustomInterestMember parameter. */
                        public parameter?: (string|null);

                        /** CustomInterestMember _parameter. */
                        public _parameter?: "parameter";

                        /**
                         * Creates a new CustomInterestMember instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomInterestMember instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICustomInterestMember): google.ads.googleads.v8.resources.CustomInterestMember;

                        /**
                         * Encodes the specified CustomInterestMember message. Does not implicitly {@link google.ads.googleads.v8.resources.CustomInterestMember.verify|verify} messages.
                         * @param m CustomInterestMember message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICustomInterestMember, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomInterestMember message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICustomInterestMember, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomInterestMember message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CustomInterestMember;

                        /**
                         * Verifies a CustomInterestMember message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomInterestMember message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomInterestMember
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CustomInterestMember;

                        /**
                         * Creates a plain object from a CustomInterestMember message. Also converts values to other types if specified.
                         * @param m CustomInterestMember
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CustomInterestMember, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomInterestMember to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.resources.ICallReportingSetting|null);

                        /** Customer conversion_tracking_setting */
                        conversion_tracking_setting?: (google.ads.googleads.v8.resources.IConversionTrackingSetting|null);

                        /** Customer remarketing_setting */
                        remarketing_setting?: (google.ads.googleads.v8.resources.IRemarketingSetting|null);

                        /** Customer pay_per_conversion_eligibility_failure_reasons */
                        pay_per_conversion_eligibility_failure_reasons?: (google.ads.googleads.v8.enums.CustomerPayPerConversionEligibilityFailureReasonEnum.CustomerPayPerConversionEligibilityFailureReason[]|null);

                        /** Customer optimization_score */
                        optimization_score?: (number|null);

                        /** Customer optimization_score_weight */
                        optimization_score_weight?: (number|null);
                    }

                    /** Represents a Customer. */
                    class Customer implements ICustomer {

                        /**
                         * Constructs a new Customer.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.resources.ICallReportingSetting|null);

                        /** Customer conversion_tracking_setting. */
                        public conversion_tracking_setting?: (google.ads.googleads.v8.resources.IConversionTrackingSetting|null);

                        /** Customer remarketing_setting. */
                        public remarketing_setting?: (google.ads.googleads.v8.resources.IRemarketingSetting|null);

                        /** Customer pay_per_conversion_eligibility_failure_reasons. */
                        public pay_per_conversion_eligibility_failure_reasons: google.ads.googleads.v8.enums.CustomerPayPerConversionEligibilityFailureReasonEnum.CustomerPayPerConversionEligibilityFailureReason[];

                        /** Customer optimization_score. */
                        public optimization_score?: (number|null);

                        /** Customer optimization_score_weight. */
                        public optimization_score_weight: number;

                        /** Customer _id. */
                        public _id?: "id";

                        /** Customer _descriptive_name. */
                        public _descriptive_name?: "descriptive_name";

                        /** Customer _currency_code. */
                        public _currency_code?: "currency_code";

                        /** Customer _time_zone. */
                        public _time_zone?: "time_zone";

                        /** Customer _tracking_url_template. */
                        public _tracking_url_template?: "tracking_url_template";

                        /** Customer _final_url_suffix. */
                        public _final_url_suffix?: "final_url_suffix";

                        /** Customer _auto_tagging_enabled. */
                        public _auto_tagging_enabled?: "auto_tagging_enabled";

                        /** Customer _has_partners_badge. */
                        public _has_partners_badge?: "has_partners_badge";

                        /** Customer _manager. */
                        public _manager?: "manager";

                        /** Customer _test_account. */
                        public _test_account?: "test_account";

                        /** Customer _optimization_score. */
                        public _optimization_score?: "optimization_score";

                        /**
                         * Creates a new Customer instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Customer instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICustomer): google.ads.googleads.v8.resources.Customer;

                        /**
                         * Encodes the specified Customer message. Does not implicitly {@link google.ads.googleads.v8.resources.Customer.verify|verify} messages.
                         * @param m Customer message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICustomer, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Customer message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICustomer, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Customer message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Customer;

                        /**
                         * Verifies a Customer message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Customer message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns Customer
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Customer;

                        /**
                         * Creates a plain object from a Customer message. Also converts values to other types if specified.
                         * @param m Customer
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.Customer, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Customer to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** CallReportingSetting _call_reporting_enabled. */
                        public _call_reporting_enabled?: "call_reporting_enabled";

                        /** CallReportingSetting _call_conversion_reporting_enabled. */
                        public _call_conversion_reporting_enabled?: "call_conversion_reporting_enabled";

                        /** CallReportingSetting _call_conversion_action. */
                        public _call_conversion_action?: "call_conversion_action";

                        /**
                         * Creates a new CallReportingSetting instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CallReportingSetting instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICallReportingSetting): google.ads.googleads.v8.resources.CallReportingSetting;

                        /**
                         * Encodes the specified CallReportingSetting message. Does not implicitly {@link google.ads.googleads.v8.resources.CallReportingSetting.verify|verify} messages.
                         * @param m CallReportingSetting message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICallReportingSetting, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CallReportingSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICallReportingSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CallReportingSetting message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CallReportingSetting;

                        /**
                         * Verifies a CallReportingSetting message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CallReportingSetting message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CallReportingSetting
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CallReportingSetting;

                        /**
                         * Creates a plain object from a CallReportingSetting message. Also converts values to other types if specified.
                         * @param m CallReportingSetting
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CallReportingSetting, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CallReportingSetting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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);
                    }

                    /** Represents a ConversionTrackingSetting. */
                    class ConversionTrackingSetting implements IConversionTrackingSetting {

                        /**
                         * Constructs a new ConversionTrackingSetting.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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 _conversion_tracking_id. */
                        public _conversion_tracking_id?: "conversion_tracking_id";

                        /** ConversionTrackingSetting _cross_account_conversion_tracking_id. */
                        public _cross_account_conversion_tracking_id?: "cross_account_conversion_tracking_id";

                        /**
                         * Creates a new ConversionTrackingSetting instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionTrackingSetting instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IConversionTrackingSetting): google.ads.googleads.v8.resources.ConversionTrackingSetting;

                        /**
                         * Encodes the specified ConversionTrackingSetting message. Does not implicitly {@link google.ads.googleads.v8.resources.ConversionTrackingSetting.verify|verify} messages.
                         * @param m ConversionTrackingSetting message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IConversionTrackingSetting, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionTrackingSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IConversionTrackingSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionTrackingSetting message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.ConversionTrackingSetting;

                        /**
                         * Verifies a ConversionTrackingSetting message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionTrackingSetting message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionTrackingSetting
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ConversionTrackingSetting;

                        /**
                         * Creates a plain object from a ConversionTrackingSetting message. Also converts values to other types if specified.
                         * @param m ConversionTrackingSetting
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.ConversionTrackingSetting, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionTrackingSetting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IRemarketingSetting);

                        /** RemarketingSetting google_global_site_tag. */
                        public google_global_site_tag?: (string|null);

                        /** RemarketingSetting _google_global_site_tag. */
                        public _google_global_site_tag?: "google_global_site_tag";

                        /**
                         * Creates a new RemarketingSetting instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RemarketingSetting instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IRemarketingSetting): google.ads.googleads.v8.resources.RemarketingSetting;

                        /**
                         * Encodes the specified RemarketingSetting message. Does not implicitly {@link google.ads.googleads.v8.resources.RemarketingSetting.verify|verify} messages.
                         * @param m RemarketingSetting message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IRemarketingSetting, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RemarketingSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IRemarketingSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RemarketingSetting message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.RemarketingSetting;

                        /**
                         * Verifies a RemarketingSetting message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RemarketingSetting message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns RemarketingSetting
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.RemarketingSetting;

                        /**
                         * Creates a plain object from a RemarketingSetting message. Also converts values to other types if specified.
                         * @param m RemarketingSetting
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.RemarketingSetting, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RemarketingSetting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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);
                    }

                    /** Represents a CustomerClient. */
                    class CustomerClient implements ICustomerClient {

                        /**
                         * Constructs a new CustomerClient.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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 _client_customer. */
                        public _client_customer?: "client_customer";

                        /** CustomerClient _hidden. */
                        public _hidden?: "hidden";

                        /** CustomerClient _level. */
                        public _level?: "level";

                        /** CustomerClient _time_zone. */
                        public _time_zone?: "time_zone";

                        /** CustomerClient _test_account. */
                        public _test_account?: "test_account";

                        /** CustomerClient _manager. */
                        public _manager?: "manager";

                        /** CustomerClient _descriptive_name. */
                        public _descriptive_name?: "descriptive_name";

                        /** CustomerClient _currency_code. */
                        public _currency_code?: "currency_code";

                        /** CustomerClient _id. */
                        public _id?: "id";

                        /**
                         * Creates a new CustomerClient instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerClient instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICustomerClient): google.ads.googleads.v8.resources.CustomerClient;

                        /**
                         * Encodes the specified CustomerClient message. Does not implicitly {@link google.ads.googleads.v8.resources.CustomerClient.verify|verify} messages.
                         * @param m CustomerClient message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICustomerClient, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerClient message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICustomerClient, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerClient message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CustomerClient;

                        /**
                         * Verifies a CustomerClient message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerClient message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerClient
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CustomerClient;

                        /**
                         * Creates a plain object from a CustomerClient message. Also converts values to other types if specified.
                         * @param m CustomerClient
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CustomerClient, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerClient to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.ManagerLinkStatusEnum.ManagerLinkStatus|keyof typeof google.ads.googleads.v8.enums.ManagerLinkStatusEnum.ManagerLinkStatus|null);

                        /** CustomerClientLink hidden */
                        hidden?: (boolean|null);
                    }

                    /** Represents a CustomerClientLink. */
                    class CustomerClientLink implements ICustomerClientLink {

                        /**
                         * Constructs a new CustomerClientLink.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ManagerLinkStatusEnum.ManagerLinkStatus|keyof typeof google.ads.googleads.v8.enums.ManagerLinkStatusEnum.ManagerLinkStatus);

                        /** CustomerClientLink hidden. */
                        public hidden?: (boolean|null);

                        /** CustomerClientLink _client_customer. */
                        public _client_customer?: "client_customer";

                        /** CustomerClientLink _manager_link_id. */
                        public _manager_link_id?: "manager_link_id";

                        /** CustomerClientLink _hidden. */
                        public _hidden?: "hidden";

                        /**
                         * Creates a new CustomerClientLink instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerClientLink instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICustomerClientLink): google.ads.googleads.v8.resources.CustomerClientLink;

                        /**
                         * Encodes the specified CustomerClientLink message. Does not implicitly {@link google.ads.googleads.v8.resources.CustomerClientLink.verify|verify} messages.
                         * @param m CustomerClientLink message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICustomerClientLink, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerClientLink message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICustomerClientLink, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerClientLink message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CustomerClientLink;

                        /**
                         * Verifies a CustomerClientLink message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerClientLink message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerClientLink
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CustomerClientLink;

                        /**
                         * Creates a plain object from a CustomerClientLink message. Also converts values to other types if specified.
                         * @param m CustomerClientLink
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CustomerClientLink, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerClientLink to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CustomerExtensionSetting. */
                    interface ICustomerExtensionSetting {

                        /** CustomerExtensionSetting resource_name */
                        resource_name?: (string|null);

                        /** CustomerExtensionSetting extension_type */
                        extension_type?: (google.ads.googleads.v8.enums.ExtensionTypeEnum.ExtensionType|keyof typeof google.ads.googleads.v8.enums.ExtensionTypeEnum.ExtensionType|null);

                        /** CustomerExtensionSetting extension_feed_items */
                        extension_feed_items?: (string[]|null);

                        /** CustomerExtensionSetting device */
                        device?: (google.ads.googleads.v8.enums.ExtensionSettingDeviceEnum.ExtensionSettingDevice|keyof typeof google.ads.googleads.v8.enums.ExtensionSettingDeviceEnum.ExtensionSettingDevice|null);
                    }

                    /** Represents a CustomerExtensionSetting. */
                    class CustomerExtensionSetting implements ICustomerExtensionSetting {

                        /**
                         * Constructs a new CustomerExtensionSetting.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.ICustomerExtensionSetting);

                        /** CustomerExtensionSetting resource_name. */
                        public resource_name: string;

                        /** CustomerExtensionSetting extension_type. */
                        public extension_type: (google.ads.googleads.v8.enums.ExtensionTypeEnum.ExtensionType|keyof typeof google.ads.googleads.v8.enums.ExtensionTypeEnum.ExtensionType);

                        /** CustomerExtensionSetting extension_feed_items. */
                        public extension_feed_items: string[];

                        /** CustomerExtensionSetting device. */
                        public device: (google.ads.googleads.v8.enums.ExtensionSettingDeviceEnum.ExtensionSettingDevice|keyof typeof google.ads.googleads.v8.enums.ExtensionSettingDeviceEnum.ExtensionSettingDevice);

                        /**
                         * Creates a new CustomerExtensionSetting instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerExtensionSetting instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICustomerExtensionSetting): google.ads.googleads.v8.resources.CustomerExtensionSetting;

                        /**
                         * Encodes the specified CustomerExtensionSetting message. Does not implicitly {@link google.ads.googleads.v8.resources.CustomerExtensionSetting.verify|verify} messages.
                         * @param m CustomerExtensionSetting message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICustomerExtensionSetting, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerExtensionSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.CustomerExtensionSetting.verify|verify} messages.
                         * @param message CustomerExtensionSetting message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.ICustomerExtensionSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerExtensionSetting message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns CustomerExtensionSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.CustomerExtensionSetting;

                        /**
                         * Decodes a CustomerExtensionSetting message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerExtensionSetting
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.CustomerExtensionSetting;

                        /**
                         * Verifies a CustomerExtensionSetting message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerExtensionSetting message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerExtensionSetting
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CustomerExtensionSetting;

                        /**
                         * Creates a plain object from a CustomerExtensionSetting message. Also converts values to other types if specified.
                         * @param m CustomerExtensionSetting
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CustomerExtensionSetting, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerExtensionSetting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CustomerFeed. */
                    interface ICustomerFeed {

                        /** CustomerFeed resource_name */
                        resource_name?: (string|null);

                        /** CustomerFeed feed */
                        feed?: (string|null);

                        /** CustomerFeed placeholder_types */
                        placeholder_types?: (google.ads.googleads.v8.enums.PlaceholderTypeEnum.PlaceholderType[]|null);

                        /** CustomerFeed matching_function */
                        matching_function?: (google.ads.googleads.v8.common.IMatchingFunction|null);

                        /** CustomerFeed status */
                        status?: (google.ads.googleads.v8.enums.FeedLinkStatusEnum.FeedLinkStatus|keyof typeof google.ads.googleads.v8.enums.FeedLinkStatusEnum.FeedLinkStatus|null);
                    }

                    /** Represents a CustomerFeed. */
                    class CustomerFeed implements ICustomerFeed {

                        /**
                         * Constructs a new CustomerFeed.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.ICustomerFeed);

                        /** CustomerFeed resource_name. */
                        public resource_name: string;

                        /** CustomerFeed feed. */
                        public feed?: (string|null);

                        /** CustomerFeed placeholder_types. */
                        public placeholder_types: google.ads.googleads.v8.enums.PlaceholderTypeEnum.PlaceholderType[];

                        /** CustomerFeed matching_function. */
                        public matching_function?: (google.ads.googleads.v8.common.IMatchingFunction|null);

                        /** CustomerFeed status. */
                        public status: (google.ads.googleads.v8.enums.FeedLinkStatusEnum.FeedLinkStatus|keyof typeof google.ads.googleads.v8.enums.FeedLinkStatusEnum.FeedLinkStatus);

                        /** CustomerFeed _feed. */
                        public _feed?: "feed";

                        /**
                         * Creates a new CustomerFeed instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerFeed instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICustomerFeed): google.ads.googleads.v8.resources.CustomerFeed;

                        /**
                         * Encodes the specified CustomerFeed message. Does not implicitly {@link google.ads.googleads.v8.resources.CustomerFeed.verify|verify} messages.
                         * @param m CustomerFeed message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICustomerFeed, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerFeed message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.CustomerFeed.verify|verify} messages.
                         * @param message CustomerFeed message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.ICustomerFeed, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerFeed message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns CustomerFeed
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.CustomerFeed;

                        /**
                         * Decodes a CustomerFeed message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerFeed
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.CustomerFeed;

                        /**
                         * Verifies a CustomerFeed message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerFeed message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerFeed
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CustomerFeed;

                        /**
                         * Creates a plain object from a CustomerFeed message. Also converts values to other types if specified.
                         * @param m CustomerFeed
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CustomerFeed, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerFeed to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.ICustomerLabel);

                        /** CustomerLabel resource_name. */
                        public resource_name: string;

                        /** CustomerLabel customer. */
                        public customer?: (string|null);

                        /** CustomerLabel label. */
                        public label?: (string|null);

                        /** CustomerLabel _customer. */
                        public _customer?: "customer";

                        /** CustomerLabel _label. */
                        public _label?: "label";

                        /**
                         * Creates a new CustomerLabel instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerLabel instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICustomerLabel): google.ads.googleads.v8.resources.CustomerLabel;

                        /**
                         * Encodes the specified CustomerLabel message. Does not implicitly {@link google.ads.googleads.v8.resources.CustomerLabel.verify|verify} messages.
                         * @param m CustomerLabel message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICustomerLabel, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerLabel message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICustomerLabel, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerLabel message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CustomerLabel;

                        /**
                         * Verifies a CustomerLabel message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerLabel message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerLabel
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CustomerLabel;

                        /**
                         * Creates a plain object from a CustomerLabel message. Also converts values to other types if specified.
                         * @param m CustomerLabel
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CustomerLabel, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerLabel to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.ManagerLinkStatusEnum.ManagerLinkStatus|keyof typeof google.ads.googleads.v8.enums.ManagerLinkStatusEnum.ManagerLinkStatus|null);
                    }

                    /** Represents a CustomerManagerLink. */
                    class CustomerManagerLink implements ICustomerManagerLink {

                        /**
                         * Constructs a new CustomerManagerLink.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ManagerLinkStatusEnum.ManagerLinkStatus|keyof typeof google.ads.googleads.v8.enums.ManagerLinkStatusEnum.ManagerLinkStatus);

                        /** CustomerManagerLink _manager_customer. */
                        public _manager_customer?: "manager_customer";

                        /** CustomerManagerLink _manager_link_id. */
                        public _manager_link_id?: "manager_link_id";

                        /**
                         * Creates a new CustomerManagerLink instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerManagerLink instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICustomerManagerLink): google.ads.googleads.v8.resources.CustomerManagerLink;

                        /**
                         * Encodes the specified CustomerManagerLink message. Does not implicitly {@link google.ads.googleads.v8.resources.CustomerManagerLink.verify|verify} messages.
                         * @param m CustomerManagerLink message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICustomerManagerLink, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerManagerLink message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICustomerManagerLink, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerManagerLink message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CustomerManagerLink;

                        /**
                         * Verifies a CustomerManagerLink message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerManagerLink message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerManagerLink
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CustomerManagerLink;

                        /**
                         * Creates a plain object from a CustomerManagerLink message. Also converts values to other types if specified.
                         * @param m CustomerManagerLink
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CustomerManagerLink, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerManagerLink to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CustomerNegativeCriterion. */
                    interface ICustomerNegativeCriterion {

                        /** CustomerNegativeCriterion resource_name */
                        resource_name?: (string|null);

                        /** CustomerNegativeCriterion id */
                        id?: (number|null);

                        /** CustomerNegativeCriterion type */
                        type?: (google.ads.googleads.v8.enums.CriterionTypeEnum.CriterionType|keyof typeof google.ads.googleads.v8.enums.CriterionTypeEnum.CriterionType|null);

                        /** CustomerNegativeCriterion content_label */
                        content_label?: (google.ads.googleads.v8.common.IContentLabelInfo|null);

                        /** CustomerNegativeCriterion mobile_application */
                        mobile_application?: (google.ads.googleads.v8.common.IMobileApplicationInfo|null);

                        /** CustomerNegativeCriterion mobile_app_category */
                        mobile_app_category?: (google.ads.googleads.v8.common.IMobileAppCategoryInfo|null);

                        /** CustomerNegativeCriterion placement */
                        placement?: (google.ads.googleads.v8.common.IPlacementInfo|null);

                        /** CustomerNegativeCriterion youtube_video */
                        youtube_video?: (google.ads.googleads.v8.common.IYouTubeVideoInfo|null);

                        /** CustomerNegativeCriterion youtube_channel */
                        youtube_channel?: (google.ads.googleads.v8.common.IYouTubeChannelInfo|null);
                    }

                    /** Represents a CustomerNegativeCriterion. */
                    class CustomerNegativeCriterion implements ICustomerNegativeCriterion {

                        /**
                         * Constructs a new CustomerNegativeCriterion.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.ICustomerNegativeCriterion);

                        /** CustomerNegativeCriterion resource_name. */
                        public resource_name: string;

                        /** CustomerNegativeCriterion id. */
                        public id?: (number|null);

                        /** CustomerNegativeCriterion type. */
                        public type: (google.ads.googleads.v8.enums.CriterionTypeEnum.CriterionType|keyof typeof google.ads.googleads.v8.enums.CriterionTypeEnum.CriterionType);

                        /** CustomerNegativeCriterion content_label. */
                        public content_label?: (google.ads.googleads.v8.common.IContentLabelInfo|null);

                        /** CustomerNegativeCriterion mobile_application. */
                        public mobile_application?: (google.ads.googleads.v8.common.IMobileApplicationInfo|null);

                        /** CustomerNegativeCriterion mobile_app_category. */
                        public mobile_app_category?: (google.ads.googleads.v8.common.IMobileAppCategoryInfo|null);

                        /** CustomerNegativeCriterion placement. */
                        public placement?: (google.ads.googleads.v8.common.IPlacementInfo|null);

                        /** CustomerNegativeCriterion youtube_video. */
                        public youtube_video?: (google.ads.googleads.v8.common.IYouTubeVideoInfo|null);

                        /** CustomerNegativeCriterion youtube_channel. */
                        public youtube_channel?: (google.ads.googleads.v8.common.IYouTubeChannelInfo|null);

                        /** CustomerNegativeCriterion _id. */
                        public _id?: "id";

                        /** CustomerNegativeCriterion criterion. */
                        public criterion?: ("content_label"|"mobile_application"|"mobile_app_category"|"placement"|"youtube_video"|"youtube_channel");

                        /**
                         * Creates a new CustomerNegativeCriterion instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerNegativeCriterion instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICustomerNegativeCriterion): google.ads.googleads.v8.resources.CustomerNegativeCriterion;

                        /**
                         * Encodes the specified CustomerNegativeCriterion message. Does not implicitly {@link google.ads.googleads.v8.resources.CustomerNegativeCriterion.verify|verify} messages.
                         * @param m CustomerNegativeCriterion message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICustomerNegativeCriterion, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerNegativeCriterion message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICustomerNegativeCriterion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerNegativeCriterion message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CustomerNegativeCriterion;

                        /**
                         * Verifies a CustomerNegativeCriterion message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerNegativeCriterion message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerNegativeCriterion
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CustomerNegativeCriterion;

                        /**
                         * Creates a plain object from a CustomerNegativeCriterion message. Also converts values to other types if specified.
                         * @param m CustomerNegativeCriterion
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CustomerNegativeCriterion, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerNegativeCriterion to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.AccessRoleEnum.AccessRole|keyof typeof google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.AccessRoleEnum.AccessRole|keyof typeof google.ads.googleads.v8.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);

                        /** CustomerUserAccess _email_address. */
                        public _email_address?: "email_address";

                        /** CustomerUserAccess _access_creation_date_time. */
                        public _access_creation_date_time?: "access_creation_date_time";

                        /** CustomerUserAccess _inviter_user_email_address. */
                        public _inviter_user_email_address?: "inviter_user_email_address";

                        /**
                         * Creates a new CustomerUserAccess instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerUserAccess instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ICustomerUserAccess): google.ads.googleads.v8.resources.CustomerUserAccess;

                        /**
                         * Encodes the specified CustomerUserAccess message. Does not implicitly {@link google.ads.googleads.v8.resources.CustomerUserAccess.verify|verify} messages.
                         * @param m CustomerUserAccess message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICustomerUserAccess, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerUserAccess message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICustomerUserAccess, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerUserAccess message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CustomerUserAccess;

                        /**
                         * Verifies a CustomerUserAccess message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerUserAccess message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerUserAccess
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CustomerUserAccess;

                        /**
                         * Creates a plain object from a CustomerUserAccess message. Also converts values to other types if specified.
                         * @param m CustomerUserAccess
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CustomerUserAccess, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerUserAccess to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.AccessRoleEnum.AccessRole|keyof typeof google.ads.googleads.v8.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.v8.enums.AccessInvitationStatusEnum.AccessInvitationStatus|keyof typeof google.ads.googleads.v8.enums.AccessInvitationStatusEnum.AccessInvitationStatus|null);
                    }

                    /** Represents a CustomerUserAccessInvitation. */
                    class CustomerUserAccessInvitation implements ICustomerUserAccessInvitation {

                        /**
                         * Constructs a new CustomerUserAccessInvitation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.AccessRoleEnum.AccessRole|keyof typeof google.ads.googleads.v8.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.v8.enums.AccessInvitationStatusEnum.AccessInvitationStatus|keyof typeof google.ads.googleads.v8.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.v8.resources.ICustomerUserAccessInvitation): google.ads.googleads.v8.resources.CustomerUserAccessInvitation;

                        /**
                         * Encodes the specified CustomerUserAccessInvitation message. Does not implicitly {@link google.ads.googleads.v8.resources.CustomerUserAccessInvitation.verify|verify} messages.
                         * @param m CustomerUserAccessInvitation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ICustomerUserAccessInvitation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerUserAccessInvitation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ICustomerUserAccessInvitation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerUserAccessInvitation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.CustomerUserAccessInvitation;

                        /**
                         * Verifies a CustomerUserAccessInvitation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerUserAccessInvitation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerUserAccessInvitation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.CustomerUserAccessInvitation;

                        /**
                         * Creates a plain object from a CustomerUserAccessInvitation message. Also converts values to other types if specified.
                         * @param m CustomerUserAccessInvitation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.CustomerUserAccessInvitation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerUserAccessInvitation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.PlacementTypeEnum.PlacementType|keyof typeof google.ads.googleads.v8.enums.PlacementTypeEnum.PlacementType|null);
                    }

                    /** Represents a DetailPlacementView. */
                    class DetailPlacementView implements IDetailPlacementView {

                        /**
                         * Constructs a new DetailPlacementView.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.PlacementTypeEnum.PlacementType|keyof typeof google.ads.googleads.v8.enums.PlacementTypeEnum.PlacementType);

                        /** DetailPlacementView _placement. */
                        public _placement?: "placement";

                        /** DetailPlacementView _display_name. */
                        public _display_name?: "display_name";

                        /** DetailPlacementView _group_placement_target_url. */
                        public _group_placement_target_url?: "group_placement_target_url";

                        /** DetailPlacementView _target_url. */
                        public _target_url?: "target_url";

                        /**
                         * Creates a new DetailPlacementView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DetailPlacementView instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IDetailPlacementView): google.ads.googleads.v8.resources.DetailPlacementView;

                        /**
                         * Encodes the specified DetailPlacementView message. Does not implicitly {@link google.ads.googleads.v8.resources.DetailPlacementView.verify|verify} messages.
                         * @param m DetailPlacementView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IDetailPlacementView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DetailPlacementView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IDetailPlacementView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DetailPlacementView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.DetailPlacementView;

                        /**
                         * Verifies a DetailPlacementView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DetailPlacementView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns DetailPlacementView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.DetailPlacementView;

                        /**
                         * Creates a plain object from a DetailPlacementView message. Also converts values to other types if specified.
                         * @param m DetailPlacementView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.DetailPlacementView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DetailPlacementView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.common.ICriterionCategoryAvailability[]|null);
                    }

                    /** Represents a DetailedDemographic. */
                    class DetailedDemographic implements IDetailedDemographic {

                        /**
                         * Constructs a new DetailedDemographic.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.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.v8.resources.IDetailedDemographic): google.ads.googleads.v8.resources.DetailedDemographic;

                        /**
                         * Encodes the specified DetailedDemographic message. Does not implicitly {@link google.ads.googleads.v8.resources.DetailedDemographic.verify|verify} messages.
                         * @param m DetailedDemographic message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IDetailedDemographic, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DetailedDemographic message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IDetailedDemographic, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DetailedDemographic message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.DetailedDemographic;

                        /**
                         * Verifies a DetailedDemographic message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DetailedDemographic message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns DetailedDemographic
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.DetailedDemographic;

                        /**
                         * Creates a plain object from a DetailedDemographic message. Also converts values to other types if specified.
                         * @param m DetailedDemographic
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.DetailedDemographic, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DetailedDemographic to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.resources.IDisplayKeywordView): google.ads.googleads.v8.resources.DisplayKeywordView;

                        /**
                         * Encodes the specified DisplayKeywordView message. Does not implicitly {@link google.ads.googleads.v8.resources.DisplayKeywordView.verify|verify} messages.
                         * @param m DisplayKeywordView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IDisplayKeywordView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DisplayKeywordView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IDisplayKeywordView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DisplayKeywordView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.DisplayKeywordView;

                        /**
                         * Verifies a DisplayKeywordView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DisplayKeywordView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns DisplayKeywordView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.DisplayKeywordView;

                        /**
                         * Creates a plain object from a DisplayKeywordView message. Also converts values to other types if specified.
                         * @param m DisplayKeywordView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.DisplayKeywordView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DisplayKeywordView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a DistanceView. */
                    interface IDistanceView {

                        /** DistanceView resource_name */
                        resource_name?: (string|null);

                        /** DistanceView distance_bucket */
                        distance_bucket?: (google.ads.googleads.v8.enums.DistanceBucketEnum.DistanceBucket|keyof typeof google.ads.googleads.v8.enums.DistanceBucketEnum.DistanceBucket|null);

                        /** DistanceView metric_system */
                        metric_system?: (boolean|null);
                    }

                    /** Represents a DistanceView. */
                    class DistanceView implements IDistanceView {

                        /**
                         * Constructs a new DistanceView.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IDistanceView);

                        /** DistanceView resource_name. */
                        public resource_name: string;

                        /** DistanceView distance_bucket. */
                        public distance_bucket: (google.ads.googleads.v8.enums.DistanceBucketEnum.DistanceBucket|keyof typeof google.ads.googleads.v8.enums.DistanceBucketEnum.DistanceBucket);

                        /** DistanceView metric_system. */
                        public metric_system?: (boolean|null);

                        /** DistanceView _metric_system. */
                        public _metric_system?: "metric_system";

                        /**
                         * Creates a new DistanceView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DistanceView instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IDistanceView): google.ads.googleads.v8.resources.DistanceView;

                        /**
                         * Encodes the specified DistanceView message. Does not implicitly {@link google.ads.googleads.v8.resources.DistanceView.verify|verify} messages.
                         * @param m DistanceView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IDistanceView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DistanceView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IDistanceView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DistanceView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.DistanceView;

                        /**
                         * Verifies a DistanceView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DistanceView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns DistanceView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.DistanceView;

                        /**
                         * Creates a plain object from a DistanceView message. Also converts values to other types if specified.
                         * @param m DistanceView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.DistanceView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DistanceView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** DomainCategory _campaign. */
                        public _campaign?: "campaign";

                        /** DomainCategory _category. */
                        public _category?: "category";

                        /** DomainCategory _language_code. */
                        public _language_code?: "language_code";

                        /** DomainCategory _domain. */
                        public _domain?: "domain";

                        /** DomainCategory _coverage_fraction. */
                        public _coverage_fraction?: "coverage_fraction";

                        /** DomainCategory _category_rank. */
                        public _category_rank?: "category_rank";

                        /** DomainCategory _has_children. */
                        public _has_children?: "has_children";

                        /** DomainCategory _recommended_cpc_bid_micros. */
                        public _recommended_cpc_bid_micros?: "recommended_cpc_bid_micros";

                        /**
                         * Creates a new DomainCategory instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DomainCategory instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IDomainCategory): google.ads.googleads.v8.resources.DomainCategory;

                        /**
                         * Encodes the specified DomainCategory message. Does not implicitly {@link google.ads.googleads.v8.resources.DomainCategory.verify|verify} messages.
                         * @param m DomainCategory message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IDomainCategory, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DomainCategory message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IDomainCategory, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DomainCategory message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.DomainCategory;

                        /**
                         * Verifies a DomainCategory message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DomainCategory message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns DomainCategory
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.DomainCategory;

                        /**
                         * Creates a plain object from a DomainCategory message. Also converts values to other types if specified.
                         * @param m DomainCategory
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.DomainCategory, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DomainCategory to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** DynamicSearchAdsSearchTermView _search_term. */
                        public _search_term?: "search_term";

                        /** DynamicSearchAdsSearchTermView _headline. */
                        public _headline?: "headline";

                        /** DynamicSearchAdsSearchTermView _landing_page. */
                        public _landing_page?: "landing_page";

                        /** DynamicSearchAdsSearchTermView _page_url. */
                        public _page_url?: "page_url";

                        /** DynamicSearchAdsSearchTermView _has_negative_keyword. */
                        public _has_negative_keyword?: "has_negative_keyword";

                        /** DynamicSearchAdsSearchTermView _has_matching_keyword. */
                        public _has_matching_keyword?: "has_matching_keyword";

                        /** DynamicSearchAdsSearchTermView _has_negative_url. */
                        public _has_negative_url?: "has_negative_url";

                        /**
                         * Creates a new DynamicSearchAdsSearchTermView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DynamicSearchAdsSearchTermView instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IDynamicSearchAdsSearchTermView): google.ads.googleads.v8.resources.DynamicSearchAdsSearchTermView;

                        /**
                         * Encodes the specified DynamicSearchAdsSearchTermView message. Does not implicitly {@link google.ads.googleads.v8.resources.DynamicSearchAdsSearchTermView.verify|verify} messages.
                         * @param m DynamicSearchAdsSearchTermView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IDynamicSearchAdsSearchTermView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DynamicSearchAdsSearchTermView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IDynamicSearchAdsSearchTermView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DynamicSearchAdsSearchTermView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.DynamicSearchAdsSearchTermView;

                        /**
                         * Verifies a DynamicSearchAdsSearchTermView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DynamicSearchAdsSearchTermView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns DynamicSearchAdsSearchTermView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.DynamicSearchAdsSearchTermView;

                        /**
                         * Creates a plain object from a DynamicSearchAdsSearchTermView message. Also converts values to other types if specified.
                         * @param m DynamicSearchAdsSearchTermView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.DynamicSearchAdsSearchTermView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DynamicSearchAdsSearchTermView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IExpandedLandingPageView);

                        /** ExpandedLandingPageView resource_name. */
                        public resource_name: string;

                        /** ExpandedLandingPageView expanded_final_url. */
                        public expanded_final_url?: (string|null);

                        /** ExpandedLandingPageView _expanded_final_url. */
                        public _expanded_final_url?: "expanded_final_url";

                        /**
                         * Creates a new ExpandedLandingPageView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExpandedLandingPageView instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IExpandedLandingPageView): google.ads.googleads.v8.resources.ExpandedLandingPageView;

                        /**
                         * Encodes the specified ExpandedLandingPageView message. Does not implicitly {@link google.ads.googleads.v8.resources.ExpandedLandingPageView.verify|verify} messages.
                         * @param m ExpandedLandingPageView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IExpandedLandingPageView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExpandedLandingPageView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IExpandedLandingPageView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExpandedLandingPageView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.ExpandedLandingPageView;

                        /**
                         * Verifies an ExpandedLandingPageView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an ExpandedLandingPageView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ExpandedLandingPageView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ExpandedLandingPageView;

                        /**
                         * Creates a plain object from an ExpandedLandingPageView message. Also converts values to other types if specified.
                         * @param m ExpandedLandingPageView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.ExpandedLandingPageView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExpandedLandingPageView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an ExtensionFeedItem. */
                    interface IExtensionFeedItem {

                        /** ExtensionFeedItem resource_name */
                        resource_name?: (string|null);

                        /** ExtensionFeedItem id */
                        id?: (number|null);

                        /** ExtensionFeedItem extension_type */
                        extension_type?: (google.ads.googleads.v8.enums.ExtensionTypeEnum.ExtensionType|keyof typeof google.ads.googleads.v8.enums.ExtensionTypeEnum.ExtensionType|null);

                        /** ExtensionFeedItem start_date_time */
                        start_date_time?: (string|null);

                        /** ExtensionFeedItem end_date_time */
                        end_date_time?: (string|null);

                        /** ExtensionFeedItem ad_schedules */
                        ad_schedules?: (google.ads.googleads.v8.common.IAdScheduleInfo[]|null);

                        /** ExtensionFeedItem device */
                        device?: (google.ads.googleads.v8.enums.FeedItemTargetDeviceEnum.FeedItemTargetDevice|keyof typeof google.ads.googleads.v8.enums.FeedItemTargetDeviceEnum.FeedItemTargetDevice|null);

                        /** ExtensionFeedItem targeted_geo_target_constant */
                        targeted_geo_target_constant?: (string|null);

                        /** ExtensionFeedItem targeted_keyword */
                        targeted_keyword?: (google.ads.googleads.v8.common.IKeywordInfo|null);

                        /** ExtensionFeedItem status */
                        status?: (google.ads.googleads.v8.enums.FeedItemStatusEnum.FeedItemStatus|keyof typeof google.ads.googleads.v8.enums.FeedItemStatusEnum.FeedItemStatus|null);

                        /** ExtensionFeedItem sitelink_feed_item */
                        sitelink_feed_item?: (google.ads.googleads.v8.common.ISitelinkFeedItem|null);

                        /** ExtensionFeedItem structured_snippet_feed_item */
                        structured_snippet_feed_item?: (google.ads.googleads.v8.common.IStructuredSnippetFeedItem|null);

                        /** ExtensionFeedItem app_feed_item */
                        app_feed_item?: (google.ads.googleads.v8.common.IAppFeedItem|null);

                        /** ExtensionFeedItem call_feed_item */
                        call_feed_item?: (google.ads.googleads.v8.common.ICallFeedItem|null);

                        /** ExtensionFeedItem callout_feed_item */
                        callout_feed_item?: (google.ads.googleads.v8.common.ICalloutFeedItem|null);

                        /** ExtensionFeedItem text_message_feed_item */
                        text_message_feed_item?: (google.ads.googleads.v8.common.ITextMessageFeedItem|null);

                        /** ExtensionFeedItem price_feed_item */
                        price_feed_item?: (google.ads.googleads.v8.common.IPriceFeedItem|null);

                        /** ExtensionFeedItem promotion_feed_item */
                        promotion_feed_item?: (google.ads.googleads.v8.common.IPromotionFeedItem|null);

                        /** ExtensionFeedItem location_feed_item */
                        location_feed_item?: (google.ads.googleads.v8.common.ILocationFeedItem|null);

                        /** ExtensionFeedItem affiliate_location_feed_item */
                        affiliate_location_feed_item?: (google.ads.googleads.v8.common.IAffiliateLocationFeedItem|null);

                        /** ExtensionFeedItem hotel_callout_feed_item */
                        hotel_callout_feed_item?: (google.ads.googleads.v8.common.IHotelCalloutFeedItem|null);

                        /** ExtensionFeedItem image_feed_item */
                        image_feed_item?: (google.ads.googleads.v8.common.IImageFeedItem|null);

                        /** ExtensionFeedItem targeted_campaign */
                        targeted_campaign?: (string|null);

                        /** ExtensionFeedItem targeted_ad_group */
                        targeted_ad_group?: (string|null);
                    }

                    /** Represents an ExtensionFeedItem. */
                    class ExtensionFeedItem implements IExtensionFeedItem {

                        /**
                         * Constructs a new ExtensionFeedItem.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IExtensionFeedItem);

                        /** ExtensionFeedItem resource_name. */
                        public resource_name: string;

                        /** ExtensionFeedItem id. */
                        public id?: (number|null);

                        /** ExtensionFeedItem extension_type. */
                        public extension_type: (google.ads.googleads.v8.enums.ExtensionTypeEnum.ExtensionType|keyof typeof google.ads.googleads.v8.enums.ExtensionTypeEnum.ExtensionType);

                        /** ExtensionFeedItem start_date_time. */
                        public start_date_time?: (string|null);

                        /** ExtensionFeedItem end_date_time. */
                        public end_date_time?: (string|null);

                        /** ExtensionFeedItem ad_schedules. */
                        public ad_schedules: google.ads.googleads.v8.common.IAdScheduleInfo[];

                        /** ExtensionFeedItem device. */
                        public device: (google.ads.googleads.v8.enums.FeedItemTargetDeviceEnum.FeedItemTargetDevice|keyof typeof google.ads.googleads.v8.enums.FeedItemTargetDeviceEnum.FeedItemTargetDevice);

                        /** ExtensionFeedItem targeted_geo_target_constant. */
                        public targeted_geo_target_constant?: (string|null);

                        /** ExtensionFeedItem targeted_keyword. */
                        public targeted_keyword?: (google.ads.googleads.v8.common.IKeywordInfo|null);

                        /** ExtensionFeedItem status. */
                        public status: (google.ads.googleads.v8.enums.FeedItemStatusEnum.FeedItemStatus|keyof typeof google.ads.googleads.v8.enums.FeedItemStatusEnum.FeedItemStatus);

                        /** ExtensionFeedItem sitelink_feed_item. */
                        public sitelink_feed_item?: (google.ads.googleads.v8.common.ISitelinkFeedItem|null);

                        /** ExtensionFeedItem structured_snippet_feed_item. */
                        public structured_snippet_feed_item?: (google.ads.googleads.v8.common.IStructuredSnippetFeedItem|null);

                        /** ExtensionFeedItem app_feed_item. */
                        public app_feed_item?: (google.ads.googleads.v8.common.IAppFeedItem|null);

                        /** ExtensionFeedItem call_feed_item. */
                        public call_feed_item?: (google.ads.googleads.v8.common.ICallFeedItem|null);

                        /** ExtensionFeedItem callout_feed_item. */
                        public callout_feed_item?: (google.ads.googleads.v8.common.ICalloutFeedItem|null);

                        /** ExtensionFeedItem text_message_feed_item. */
                        public text_message_feed_item?: (google.ads.googleads.v8.common.ITextMessageFeedItem|null);

                        /** ExtensionFeedItem price_feed_item. */
                        public price_feed_item?: (google.ads.googleads.v8.common.IPriceFeedItem|null);

                        /** ExtensionFeedItem promotion_feed_item. */
                        public promotion_feed_item?: (google.ads.googleads.v8.common.IPromotionFeedItem|null);

                        /** ExtensionFeedItem location_feed_item. */
                        public location_feed_item?: (google.ads.googleads.v8.common.ILocationFeedItem|null);

                        /** ExtensionFeedItem affiliate_location_feed_item. */
                        public affiliate_location_feed_item?: (google.ads.googleads.v8.common.IAffiliateLocationFeedItem|null);

                        /** ExtensionFeedItem hotel_callout_feed_item. */
                        public hotel_callout_feed_item?: (google.ads.googleads.v8.common.IHotelCalloutFeedItem|null);

                        /** ExtensionFeedItem image_feed_item. */
                        public image_feed_item?: (google.ads.googleads.v8.common.IImageFeedItem|null);

                        /** ExtensionFeedItem targeted_campaign. */
                        public targeted_campaign?: (string|null);

                        /** ExtensionFeedItem targeted_ad_group. */
                        public targeted_ad_group?: (string|null);

                        /** ExtensionFeedItem _id. */
                        public _id?: "id";

                        /** ExtensionFeedItem _start_date_time. */
                        public _start_date_time?: "start_date_time";

                        /** ExtensionFeedItem _end_date_time. */
                        public _end_date_time?: "end_date_time";

                        /** ExtensionFeedItem _targeted_geo_target_constant. */
                        public _targeted_geo_target_constant?: "targeted_geo_target_constant";

                        /** ExtensionFeedItem extension. */
                        public extension?: ("sitelink_feed_item"|"structured_snippet_feed_item"|"app_feed_item"|"call_feed_item"|"callout_feed_item"|"text_message_feed_item"|"price_feed_item"|"promotion_feed_item"|"location_feed_item"|"affiliate_location_feed_item"|"hotel_callout_feed_item"|"image_feed_item");

                        /** ExtensionFeedItem serving_resource_targeting. */
                        public serving_resource_targeting?: ("targeted_campaign"|"targeted_ad_group");

                        /**
                         * Creates a new ExtensionFeedItem instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExtensionFeedItem instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IExtensionFeedItem): google.ads.googleads.v8.resources.ExtensionFeedItem;

                        /**
                         * Encodes the specified ExtensionFeedItem message. Does not implicitly {@link google.ads.googleads.v8.resources.ExtensionFeedItem.verify|verify} messages.
                         * @param m ExtensionFeedItem message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IExtensionFeedItem, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExtensionFeedItem message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.ExtensionFeedItem.verify|verify} messages.
                         * @param message ExtensionFeedItem message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.IExtensionFeedItem, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExtensionFeedItem message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns ExtensionFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.ExtensionFeedItem;

                        /**
                         * Decodes an ExtensionFeedItem message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExtensionFeedItem
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.ExtensionFeedItem;

                        /**
                         * Verifies an ExtensionFeedItem message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an ExtensionFeedItem message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ExtensionFeedItem
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ExtensionFeedItem;

                        /**
                         * Creates a plain object from an ExtensionFeedItem message. Also converts values to other types if specified.
                         * @param m ExtensionFeedItem
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.ExtensionFeedItem, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExtensionFeedItem to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a FeedItemSet. */
                    interface IFeedItemSet {

                        /** FeedItemSet resource_name */
                        resource_name?: (string|null);

                        /** FeedItemSet feed */
                        feed?: (string|null);

                        /** FeedItemSet feed_item_set_id */
                        feed_item_set_id?: (number|null);

                        /** FeedItemSet display_name */
                        display_name?: (string|null);

                        /** FeedItemSet status */
                        status?: (google.ads.googleads.v8.enums.FeedItemSetStatusEnum.FeedItemSetStatus|keyof typeof google.ads.googleads.v8.enums.FeedItemSetStatusEnum.FeedItemSetStatus|null);

                        /** FeedItemSet dynamic_location_set_filter */
                        dynamic_location_set_filter?: (google.ads.googleads.v8.common.IDynamicLocationSetFilter|null);

                        /** FeedItemSet dynamic_affiliate_location_set_filter */
                        dynamic_affiliate_location_set_filter?: (google.ads.googleads.v8.common.IDynamicAffiliateLocationSetFilter|null);
                    }

                    /** Represents a FeedItemSet. */
                    class FeedItemSet implements IFeedItemSet {

                        /**
                         * Constructs a new FeedItemSet.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IFeedItemSet);

                        /** FeedItemSet resource_name. */
                        public resource_name: string;

                        /** FeedItemSet feed. */
                        public feed: string;

                        /** FeedItemSet feed_item_set_id. */
                        public feed_item_set_id: number;

                        /** FeedItemSet display_name. */
                        public display_name: string;

                        /** FeedItemSet status. */
                        public status: (google.ads.googleads.v8.enums.FeedItemSetStatusEnum.FeedItemSetStatus|keyof typeof google.ads.googleads.v8.enums.FeedItemSetStatusEnum.FeedItemSetStatus);

                        /** FeedItemSet dynamic_location_set_filter. */
                        public dynamic_location_set_filter?: (google.ads.googleads.v8.common.IDynamicLocationSetFilter|null);

                        /** FeedItemSet dynamic_affiliate_location_set_filter. */
                        public dynamic_affiliate_location_set_filter?: (google.ads.googleads.v8.common.IDynamicAffiliateLocationSetFilter|null);

                        /** FeedItemSet dynamic_set_filter. */
                        public dynamic_set_filter?: ("dynamic_location_set_filter"|"dynamic_affiliate_location_set_filter");

                        /**
                         * Creates a new FeedItemSet instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedItemSet instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IFeedItemSet): google.ads.googleads.v8.resources.FeedItemSet;

                        /**
                         * Encodes the specified FeedItemSet message. Does not implicitly {@link google.ads.googleads.v8.resources.FeedItemSet.verify|verify} messages.
                         * @param m FeedItemSet message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IFeedItemSet, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemSet message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.FeedItemSet.verify|verify} messages.
                         * @param message FeedItemSet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.IFeedItemSet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemSet message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedItemSet
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.FeedItemSet;

                        /**
                         * Decodes a FeedItemSet message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedItemSet
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.FeedItemSet;

                        /**
                         * Verifies a FeedItemSet message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemSet message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedItemSet
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.FeedItemSet;

                        /**
                         * Creates a plain object from a FeedItemSet message. Also converts values to other types if specified.
                         * @param m FeedItemSet
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.FeedItemSet, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemSet to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a FeedItemSetLink. */
                    interface IFeedItemSetLink {

                        /** FeedItemSetLink resource_name */
                        resource_name?: (string|null);

                        /** FeedItemSetLink feed_item */
                        feed_item?: (string|null);

                        /** FeedItemSetLink feed_item_set */
                        feed_item_set?: (string|null);
                    }

                    /** Represents a FeedItemSetLink. */
                    class FeedItemSetLink implements IFeedItemSetLink {

                        /**
                         * Constructs a new FeedItemSetLink.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IFeedItemSetLink);

                        /** FeedItemSetLink resource_name. */
                        public resource_name: string;

                        /** FeedItemSetLink feed_item. */
                        public feed_item: string;

                        /** FeedItemSetLink feed_item_set. */
                        public feed_item_set: string;

                        /**
                         * Creates a new FeedItemSetLink instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedItemSetLink instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IFeedItemSetLink): google.ads.googleads.v8.resources.FeedItemSetLink;

                        /**
                         * Encodes the specified FeedItemSetLink message. Does not implicitly {@link google.ads.googleads.v8.resources.FeedItemSetLink.verify|verify} messages.
                         * @param m FeedItemSetLink message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IFeedItemSetLink, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemSetLink message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.FeedItemSetLink.verify|verify} messages.
                         * @param message FeedItemSetLink message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.IFeedItemSetLink, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemSetLink message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedItemSetLink
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.FeedItemSetLink;

                        /**
                         * Decodes a FeedItemSetLink message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedItemSetLink
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.FeedItemSetLink;

                        /**
                         * Verifies a FeedItemSetLink message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemSetLink message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedItemSetLink
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.FeedItemSetLink;

                        /**
                         * Creates a plain object from a FeedItemSetLink message. Also converts values to other types if specified.
                         * @param m FeedItemSetLink
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.FeedItemSetLink, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemSetLink to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a FeedItemTarget. */
                    interface IFeedItemTarget {

                        /** FeedItemTarget resource_name */
                        resource_name?: (string|null);

                        /** FeedItemTarget feed_item */
                        feed_item?: (string|null);

                        /** FeedItemTarget feed_item_target_type */
                        feed_item_target_type?: (google.ads.googleads.v8.enums.FeedItemTargetTypeEnum.FeedItemTargetType|keyof typeof google.ads.googleads.v8.enums.FeedItemTargetTypeEnum.FeedItemTargetType|null);

                        /** FeedItemTarget feed_item_target_id */
                        feed_item_target_id?: (number|null);

                        /** FeedItemTarget status */
                        status?: (google.ads.googleads.v8.enums.FeedItemTargetStatusEnum.FeedItemTargetStatus|keyof typeof google.ads.googleads.v8.enums.FeedItemTargetStatusEnum.FeedItemTargetStatus|null);

                        /** FeedItemTarget campaign */
                        campaign?: (string|null);

                        /** FeedItemTarget ad_group */
                        ad_group?: (string|null);

                        /** FeedItemTarget keyword */
                        keyword?: (google.ads.googleads.v8.common.IKeywordInfo|null);

                        /** FeedItemTarget geo_target_constant */
                        geo_target_constant?: (string|null);

                        /** FeedItemTarget device */
                        device?: (google.ads.googleads.v8.enums.FeedItemTargetDeviceEnum.FeedItemTargetDevice|keyof typeof google.ads.googleads.v8.enums.FeedItemTargetDeviceEnum.FeedItemTargetDevice|null);

                        /** FeedItemTarget ad_schedule */
                        ad_schedule?: (google.ads.googleads.v8.common.IAdScheduleInfo|null);
                    }

                    /** Represents a FeedItemTarget. */
                    class FeedItemTarget implements IFeedItemTarget {

                        /**
                         * Constructs a new FeedItemTarget.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IFeedItemTarget);

                        /** FeedItemTarget resource_name. */
                        public resource_name: string;

                        /** FeedItemTarget feed_item. */
                        public feed_item?: (string|null);

                        /** FeedItemTarget feed_item_target_type. */
                        public feed_item_target_type: (google.ads.googleads.v8.enums.FeedItemTargetTypeEnum.FeedItemTargetType|keyof typeof google.ads.googleads.v8.enums.FeedItemTargetTypeEnum.FeedItemTargetType);

                        /** FeedItemTarget feed_item_target_id. */
                        public feed_item_target_id?: (number|null);

                        /** FeedItemTarget status. */
                        public status: (google.ads.googleads.v8.enums.FeedItemTargetStatusEnum.FeedItemTargetStatus|keyof typeof google.ads.googleads.v8.enums.FeedItemTargetStatusEnum.FeedItemTargetStatus);

                        /** FeedItemTarget campaign. */
                        public campaign?: (string|null);

                        /** FeedItemTarget ad_group. */
                        public ad_group?: (string|null);

                        /** FeedItemTarget keyword. */
                        public keyword?: (google.ads.googleads.v8.common.IKeywordInfo|null);

                        /** FeedItemTarget geo_target_constant. */
                        public geo_target_constant?: (string|null);

                        /** FeedItemTarget device. */
                        public device?: (google.ads.googleads.v8.enums.FeedItemTargetDeviceEnum.FeedItemTargetDevice|keyof typeof google.ads.googleads.v8.enums.FeedItemTargetDeviceEnum.FeedItemTargetDevice|null);

                        /** FeedItemTarget ad_schedule. */
                        public ad_schedule?: (google.ads.googleads.v8.common.IAdScheduleInfo|null);

                        /** FeedItemTarget _feed_item. */
                        public _feed_item?: "feed_item";

                        /** FeedItemTarget _feed_item_target_id. */
                        public _feed_item_target_id?: "feed_item_target_id";

                        /** FeedItemTarget target. */
                        public target?: ("campaign"|"ad_group"|"keyword"|"geo_target_constant"|"device"|"ad_schedule");

                        /**
                         * Creates a new FeedItemTarget instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedItemTarget instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IFeedItemTarget): google.ads.googleads.v8.resources.FeedItemTarget;

                        /**
                         * Encodes the specified FeedItemTarget message. Does not implicitly {@link google.ads.googleads.v8.resources.FeedItemTarget.verify|verify} messages.
                         * @param m FeedItemTarget message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IFeedItemTarget, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemTarget message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.FeedItemTarget.verify|verify} messages.
                         * @param message FeedItemTarget message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.IFeedItemTarget, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemTarget message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedItemTarget
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.FeedItemTarget;

                        /**
                         * Decodes a FeedItemTarget message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedItemTarget
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.FeedItemTarget;

                        /**
                         * Verifies a FeedItemTarget message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemTarget message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedItemTarget
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.FeedItemTarget;

                        /**
                         * Creates a plain object from a FeedItemTarget message. Also converts values to other types if specified.
                         * @param m FeedItemTarget
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.FeedItemTarget, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemTarget to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a FeedMapping. */
                    interface IFeedMapping {

                        /** FeedMapping resource_name */
                        resource_name?: (string|null);

                        /** FeedMapping feed */
                        feed?: (string|null);

                        /** FeedMapping attribute_field_mappings */
                        attribute_field_mappings?: (google.ads.googleads.v8.resources.IAttributeFieldMapping[]|null);

                        /** FeedMapping status */
                        status?: (google.ads.googleads.v8.enums.FeedMappingStatusEnum.FeedMappingStatus|keyof typeof google.ads.googleads.v8.enums.FeedMappingStatusEnum.FeedMappingStatus|null);

                        /** FeedMapping placeholder_type */
                        placeholder_type?: (google.ads.googleads.v8.enums.PlaceholderTypeEnum.PlaceholderType|keyof typeof google.ads.googleads.v8.enums.PlaceholderTypeEnum.PlaceholderType|null);

                        /** FeedMapping criterion_type */
                        criterion_type?: (google.ads.googleads.v8.enums.FeedMappingCriterionTypeEnum.FeedMappingCriterionType|keyof typeof google.ads.googleads.v8.enums.FeedMappingCriterionTypeEnum.FeedMappingCriterionType|null);
                    }

                    /** Represents a FeedMapping. */
                    class FeedMapping implements IFeedMapping {

                        /**
                         * Constructs a new FeedMapping.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IFeedMapping);

                        /** FeedMapping resource_name. */
                        public resource_name: string;

                        /** FeedMapping feed. */
                        public feed?: (string|null);

                        /** FeedMapping attribute_field_mappings. */
                        public attribute_field_mappings: google.ads.googleads.v8.resources.IAttributeFieldMapping[];

                        /** FeedMapping status. */
                        public status: (google.ads.googleads.v8.enums.FeedMappingStatusEnum.FeedMappingStatus|keyof typeof google.ads.googleads.v8.enums.FeedMappingStatusEnum.FeedMappingStatus);

                        /** FeedMapping placeholder_type. */
                        public placeholder_type?: (google.ads.googleads.v8.enums.PlaceholderTypeEnum.PlaceholderType|keyof typeof google.ads.googleads.v8.enums.PlaceholderTypeEnum.PlaceholderType|null);

                        /** FeedMapping criterion_type. */
                        public criterion_type?: (google.ads.googleads.v8.enums.FeedMappingCriterionTypeEnum.FeedMappingCriterionType|keyof typeof google.ads.googleads.v8.enums.FeedMappingCriterionTypeEnum.FeedMappingCriterionType|null);

                        /** FeedMapping _feed. */
                        public _feed?: "feed";

                        /** FeedMapping target. */
                        public target?: ("placeholder_type"|"criterion_type");

                        /**
                         * Creates a new FeedMapping instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedMapping instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IFeedMapping): google.ads.googleads.v8.resources.FeedMapping;

                        /**
                         * Encodes the specified FeedMapping message. Does not implicitly {@link google.ads.googleads.v8.resources.FeedMapping.verify|verify} messages.
                         * @param m FeedMapping message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IFeedMapping, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedMapping message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.FeedMapping.verify|verify} messages.
                         * @param message FeedMapping message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.IFeedMapping, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedMapping message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedMapping
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.FeedMapping;

                        /**
                         * Decodes a FeedMapping message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedMapping
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.FeedMapping;

                        /**
                         * Verifies a FeedMapping message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedMapping message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedMapping
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.FeedMapping;

                        /**
                         * Creates a plain object from a FeedMapping message. Also converts values to other types if specified.
                         * @param m FeedMapping
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.FeedMapping, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedMapping to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an AttributeFieldMapping. */
                    interface IAttributeFieldMapping {

                        /** AttributeFieldMapping feed_attribute_id */
                        feed_attribute_id?: (number|null);

                        /** AttributeFieldMapping field_id */
                        field_id?: (number|null);

                        /** AttributeFieldMapping sitelink_field */
                        sitelink_field?: (google.ads.googleads.v8.enums.SitelinkPlaceholderFieldEnum.SitelinkPlaceholderField|keyof typeof google.ads.googleads.v8.enums.SitelinkPlaceholderFieldEnum.SitelinkPlaceholderField|null);

                        /** AttributeFieldMapping call_field */
                        call_field?: (google.ads.googleads.v8.enums.CallPlaceholderFieldEnum.CallPlaceholderField|keyof typeof google.ads.googleads.v8.enums.CallPlaceholderFieldEnum.CallPlaceholderField|null);

                        /** AttributeFieldMapping app_field */
                        app_field?: (google.ads.googleads.v8.enums.AppPlaceholderFieldEnum.AppPlaceholderField|keyof typeof google.ads.googleads.v8.enums.AppPlaceholderFieldEnum.AppPlaceholderField|null);

                        /** AttributeFieldMapping location_field */
                        location_field?: (google.ads.googleads.v8.enums.LocationPlaceholderFieldEnum.LocationPlaceholderField|keyof typeof google.ads.googleads.v8.enums.LocationPlaceholderFieldEnum.LocationPlaceholderField|null);

                        /** AttributeFieldMapping affiliate_location_field */
                        affiliate_location_field?: (google.ads.googleads.v8.enums.AffiliateLocationPlaceholderFieldEnum.AffiliateLocationPlaceholderField|keyof typeof google.ads.googleads.v8.enums.AffiliateLocationPlaceholderFieldEnum.AffiliateLocationPlaceholderField|null);

                        /** AttributeFieldMapping callout_field */
                        callout_field?: (google.ads.googleads.v8.enums.CalloutPlaceholderFieldEnum.CalloutPlaceholderField|keyof typeof google.ads.googleads.v8.enums.CalloutPlaceholderFieldEnum.CalloutPlaceholderField|null);

                        /** AttributeFieldMapping structured_snippet_field */
                        structured_snippet_field?: (google.ads.googleads.v8.enums.StructuredSnippetPlaceholderFieldEnum.StructuredSnippetPlaceholderField|keyof typeof google.ads.googleads.v8.enums.StructuredSnippetPlaceholderFieldEnum.StructuredSnippetPlaceholderField|null);

                        /** AttributeFieldMapping message_field */
                        message_field?: (google.ads.googleads.v8.enums.MessagePlaceholderFieldEnum.MessagePlaceholderField|keyof typeof google.ads.googleads.v8.enums.MessagePlaceholderFieldEnum.MessagePlaceholderField|null);

                        /** AttributeFieldMapping price_field */
                        price_field?: (google.ads.googleads.v8.enums.PricePlaceholderFieldEnum.PricePlaceholderField|keyof typeof google.ads.googleads.v8.enums.PricePlaceholderFieldEnum.PricePlaceholderField|null);

                        /** AttributeFieldMapping promotion_field */
                        promotion_field?: (google.ads.googleads.v8.enums.PromotionPlaceholderFieldEnum.PromotionPlaceholderField|keyof typeof google.ads.googleads.v8.enums.PromotionPlaceholderFieldEnum.PromotionPlaceholderField|null);

                        /** AttributeFieldMapping ad_customizer_field */
                        ad_customizer_field?: (google.ads.googleads.v8.enums.AdCustomizerPlaceholderFieldEnum.AdCustomizerPlaceholderField|keyof typeof google.ads.googleads.v8.enums.AdCustomizerPlaceholderFieldEnum.AdCustomizerPlaceholderField|null);

                        /** AttributeFieldMapping dsa_page_feed_field */
                        dsa_page_feed_field?: (google.ads.googleads.v8.enums.DsaPageFeedCriterionFieldEnum.DsaPageFeedCriterionField|keyof typeof google.ads.googleads.v8.enums.DsaPageFeedCriterionFieldEnum.DsaPageFeedCriterionField|null);

                        /** AttributeFieldMapping location_extension_targeting_field */
                        location_extension_targeting_field?: (google.ads.googleads.v8.enums.LocationExtensionTargetingCriterionFieldEnum.LocationExtensionTargetingCriterionField|keyof typeof google.ads.googleads.v8.enums.LocationExtensionTargetingCriterionFieldEnum.LocationExtensionTargetingCriterionField|null);

                        /** AttributeFieldMapping education_field */
                        education_field?: (google.ads.googleads.v8.enums.EducationPlaceholderFieldEnum.EducationPlaceholderField|keyof typeof google.ads.googleads.v8.enums.EducationPlaceholderFieldEnum.EducationPlaceholderField|null);

                        /** AttributeFieldMapping flight_field */
                        flight_field?: (google.ads.googleads.v8.enums.FlightPlaceholderFieldEnum.FlightPlaceholderField|keyof typeof google.ads.googleads.v8.enums.FlightPlaceholderFieldEnum.FlightPlaceholderField|null);

                        /** AttributeFieldMapping custom_field */
                        custom_field?: (google.ads.googleads.v8.enums.CustomPlaceholderFieldEnum.CustomPlaceholderField|keyof typeof google.ads.googleads.v8.enums.CustomPlaceholderFieldEnum.CustomPlaceholderField|null);

                        /** AttributeFieldMapping hotel_field */
                        hotel_field?: (google.ads.googleads.v8.enums.HotelPlaceholderFieldEnum.HotelPlaceholderField|keyof typeof google.ads.googleads.v8.enums.HotelPlaceholderFieldEnum.HotelPlaceholderField|null);

                        /** AttributeFieldMapping real_estate_field */
                        real_estate_field?: (google.ads.googleads.v8.enums.RealEstatePlaceholderFieldEnum.RealEstatePlaceholderField|keyof typeof google.ads.googleads.v8.enums.RealEstatePlaceholderFieldEnum.RealEstatePlaceholderField|null);

                        /** AttributeFieldMapping travel_field */
                        travel_field?: (google.ads.googleads.v8.enums.TravelPlaceholderFieldEnum.TravelPlaceholderField|keyof typeof google.ads.googleads.v8.enums.TravelPlaceholderFieldEnum.TravelPlaceholderField|null);

                        /** AttributeFieldMapping local_field */
                        local_field?: (google.ads.googleads.v8.enums.LocalPlaceholderFieldEnum.LocalPlaceholderField|keyof typeof google.ads.googleads.v8.enums.LocalPlaceholderFieldEnum.LocalPlaceholderField|null);

                        /** AttributeFieldMapping job_field */
                        job_field?: (google.ads.googleads.v8.enums.JobPlaceholderFieldEnum.JobPlaceholderField|keyof typeof google.ads.googleads.v8.enums.JobPlaceholderFieldEnum.JobPlaceholderField|null);

                        /** AttributeFieldMapping image_field */
                        image_field?: (google.ads.googleads.v8.enums.ImagePlaceholderFieldEnum.ImagePlaceholderField|keyof typeof google.ads.googleads.v8.enums.ImagePlaceholderFieldEnum.ImagePlaceholderField|null);
                    }

                    /** Represents an AttributeFieldMapping. */
                    class AttributeFieldMapping implements IAttributeFieldMapping {

                        /**
                         * Constructs a new AttributeFieldMapping.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IAttributeFieldMapping);

                        /** AttributeFieldMapping feed_attribute_id. */
                        public feed_attribute_id?: (number|null);

                        /** AttributeFieldMapping field_id. */
                        public field_id?: (number|null);

                        /** AttributeFieldMapping sitelink_field. */
                        public sitelink_field?: (google.ads.googleads.v8.enums.SitelinkPlaceholderFieldEnum.SitelinkPlaceholderField|keyof typeof google.ads.googleads.v8.enums.SitelinkPlaceholderFieldEnum.SitelinkPlaceholderField|null);

                        /** AttributeFieldMapping call_field. */
                        public call_field?: (google.ads.googleads.v8.enums.CallPlaceholderFieldEnum.CallPlaceholderField|keyof typeof google.ads.googleads.v8.enums.CallPlaceholderFieldEnum.CallPlaceholderField|null);

                        /** AttributeFieldMapping app_field. */
                        public app_field?: (google.ads.googleads.v8.enums.AppPlaceholderFieldEnum.AppPlaceholderField|keyof typeof google.ads.googleads.v8.enums.AppPlaceholderFieldEnum.AppPlaceholderField|null);

                        /** AttributeFieldMapping location_field. */
                        public location_field?: (google.ads.googleads.v8.enums.LocationPlaceholderFieldEnum.LocationPlaceholderField|keyof typeof google.ads.googleads.v8.enums.LocationPlaceholderFieldEnum.LocationPlaceholderField|null);

                        /** AttributeFieldMapping affiliate_location_field. */
                        public affiliate_location_field?: (google.ads.googleads.v8.enums.AffiliateLocationPlaceholderFieldEnum.AffiliateLocationPlaceholderField|keyof typeof google.ads.googleads.v8.enums.AffiliateLocationPlaceholderFieldEnum.AffiliateLocationPlaceholderField|null);

                        /** AttributeFieldMapping callout_field. */
                        public callout_field?: (google.ads.googleads.v8.enums.CalloutPlaceholderFieldEnum.CalloutPlaceholderField|keyof typeof google.ads.googleads.v8.enums.CalloutPlaceholderFieldEnum.CalloutPlaceholderField|null);

                        /** AttributeFieldMapping structured_snippet_field. */
                        public structured_snippet_field?: (google.ads.googleads.v8.enums.StructuredSnippetPlaceholderFieldEnum.StructuredSnippetPlaceholderField|keyof typeof google.ads.googleads.v8.enums.StructuredSnippetPlaceholderFieldEnum.StructuredSnippetPlaceholderField|null);

                        /** AttributeFieldMapping message_field. */
                        public message_field?: (google.ads.googleads.v8.enums.MessagePlaceholderFieldEnum.MessagePlaceholderField|keyof typeof google.ads.googleads.v8.enums.MessagePlaceholderFieldEnum.MessagePlaceholderField|null);

                        /** AttributeFieldMapping price_field. */
                        public price_field?: (google.ads.googleads.v8.enums.PricePlaceholderFieldEnum.PricePlaceholderField|keyof typeof google.ads.googleads.v8.enums.PricePlaceholderFieldEnum.PricePlaceholderField|null);

                        /** AttributeFieldMapping promotion_field. */
                        public promotion_field?: (google.ads.googleads.v8.enums.PromotionPlaceholderFieldEnum.PromotionPlaceholderField|keyof typeof google.ads.googleads.v8.enums.PromotionPlaceholderFieldEnum.PromotionPlaceholderField|null);

                        /** AttributeFieldMapping ad_customizer_field. */
                        public ad_customizer_field?: (google.ads.googleads.v8.enums.AdCustomizerPlaceholderFieldEnum.AdCustomizerPlaceholderField|keyof typeof google.ads.googleads.v8.enums.AdCustomizerPlaceholderFieldEnum.AdCustomizerPlaceholderField|null);

                        /** AttributeFieldMapping dsa_page_feed_field. */
                        public dsa_page_feed_field?: (google.ads.googleads.v8.enums.DsaPageFeedCriterionFieldEnum.DsaPageFeedCriterionField|keyof typeof google.ads.googleads.v8.enums.DsaPageFeedCriterionFieldEnum.DsaPageFeedCriterionField|null);

                        /** AttributeFieldMapping location_extension_targeting_field. */
                        public location_extension_targeting_field?: (google.ads.googleads.v8.enums.LocationExtensionTargetingCriterionFieldEnum.LocationExtensionTargetingCriterionField|keyof typeof google.ads.googleads.v8.enums.LocationExtensionTargetingCriterionFieldEnum.LocationExtensionTargetingCriterionField|null);

                        /** AttributeFieldMapping education_field. */
                        public education_field?: (google.ads.googleads.v8.enums.EducationPlaceholderFieldEnum.EducationPlaceholderField|keyof typeof google.ads.googleads.v8.enums.EducationPlaceholderFieldEnum.EducationPlaceholderField|null);

                        /** AttributeFieldMapping flight_field. */
                        public flight_field?: (google.ads.googleads.v8.enums.FlightPlaceholderFieldEnum.FlightPlaceholderField|keyof typeof google.ads.googleads.v8.enums.FlightPlaceholderFieldEnum.FlightPlaceholderField|null);

                        /** AttributeFieldMapping custom_field. */
                        public custom_field?: (google.ads.googleads.v8.enums.CustomPlaceholderFieldEnum.CustomPlaceholderField|keyof typeof google.ads.googleads.v8.enums.CustomPlaceholderFieldEnum.CustomPlaceholderField|null);

                        /** AttributeFieldMapping hotel_field. */
                        public hotel_field?: (google.ads.googleads.v8.enums.HotelPlaceholderFieldEnum.HotelPlaceholderField|keyof typeof google.ads.googleads.v8.enums.HotelPlaceholderFieldEnum.HotelPlaceholderField|null);

                        /** AttributeFieldMapping real_estate_field. */
                        public real_estate_field?: (google.ads.googleads.v8.enums.RealEstatePlaceholderFieldEnum.RealEstatePlaceholderField|keyof typeof google.ads.googleads.v8.enums.RealEstatePlaceholderFieldEnum.RealEstatePlaceholderField|null);

                        /** AttributeFieldMapping travel_field. */
                        public travel_field?: (google.ads.googleads.v8.enums.TravelPlaceholderFieldEnum.TravelPlaceholderField|keyof typeof google.ads.googleads.v8.enums.TravelPlaceholderFieldEnum.TravelPlaceholderField|null);

                        /** AttributeFieldMapping local_field. */
                        public local_field?: (google.ads.googleads.v8.enums.LocalPlaceholderFieldEnum.LocalPlaceholderField|keyof typeof google.ads.googleads.v8.enums.LocalPlaceholderFieldEnum.LocalPlaceholderField|null);

                        /** AttributeFieldMapping job_field. */
                        public job_field?: (google.ads.googleads.v8.enums.JobPlaceholderFieldEnum.JobPlaceholderField|keyof typeof google.ads.googleads.v8.enums.JobPlaceholderFieldEnum.JobPlaceholderField|null);

                        /** AttributeFieldMapping image_field. */
                        public image_field?: (google.ads.googleads.v8.enums.ImagePlaceholderFieldEnum.ImagePlaceholderField|keyof typeof google.ads.googleads.v8.enums.ImagePlaceholderFieldEnum.ImagePlaceholderField|null);

                        /** AttributeFieldMapping _feed_attribute_id. */
                        public _feed_attribute_id?: "feed_attribute_id";

                        /** AttributeFieldMapping _field_id. */
                        public _field_id?: "field_id";

                        /** AttributeFieldMapping field. */
                        public field?: ("sitelink_field"|"call_field"|"app_field"|"location_field"|"affiliate_location_field"|"callout_field"|"structured_snippet_field"|"message_field"|"price_field"|"promotion_field"|"ad_customizer_field"|"dsa_page_feed_field"|"location_extension_targeting_field"|"education_field"|"flight_field"|"custom_field"|"hotel_field"|"real_estate_field"|"travel_field"|"local_field"|"job_field"|"image_field");

                        /**
                         * Creates a new AttributeFieldMapping instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AttributeFieldMapping instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IAttributeFieldMapping): google.ads.googleads.v8.resources.AttributeFieldMapping;

                        /**
                         * Encodes the specified AttributeFieldMapping message. Does not implicitly {@link google.ads.googleads.v8.resources.AttributeFieldMapping.verify|verify} messages.
                         * @param m AttributeFieldMapping message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IAttributeFieldMapping, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AttributeFieldMapping message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.AttributeFieldMapping.verify|verify} messages.
                         * @param message AttributeFieldMapping message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.IAttributeFieldMapping, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AttributeFieldMapping message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns AttributeFieldMapping
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.AttributeFieldMapping;

                        /**
                         * Decodes an AttributeFieldMapping message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AttributeFieldMapping
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.AttributeFieldMapping;

                        /**
                         * Verifies an AttributeFieldMapping message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AttributeFieldMapping message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AttributeFieldMapping
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.AttributeFieldMapping;

                        /**
                         * Creates a plain object from an AttributeFieldMapping message. Also converts values to other types if specified.
                         * @param m AttributeFieldMapping
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.AttributeFieldMapping, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AttributeFieldMapping to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a FeedPlaceholderView. */
                    interface IFeedPlaceholderView {

                        /** FeedPlaceholderView resource_name */
                        resource_name?: (string|null);

                        /** FeedPlaceholderView placeholder_type */
                        placeholder_type?: (google.ads.googleads.v8.enums.PlaceholderTypeEnum.PlaceholderType|keyof typeof google.ads.googleads.v8.enums.PlaceholderTypeEnum.PlaceholderType|null);
                    }

                    /** Represents a FeedPlaceholderView. */
                    class FeedPlaceholderView implements IFeedPlaceholderView {

                        /**
                         * Constructs a new FeedPlaceholderView.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IFeedPlaceholderView);

                        /** FeedPlaceholderView resource_name. */
                        public resource_name: string;

                        /** FeedPlaceholderView placeholder_type. */
                        public placeholder_type: (google.ads.googleads.v8.enums.PlaceholderTypeEnum.PlaceholderType|keyof typeof google.ads.googleads.v8.enums.PlaceholderTypeEnum.PlaceholderType);

                        /**
                         * Creates a new FeedPlaceholderView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedPlaceholderView instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IFeedPlaceholderView): google.ads.googleads.v8.resources.FeedPlaceholderView;

                        /**
                         * Encodes the specified FeedPlaceholderView message. Does not implicitly {@link google.ads.googleads.v8.resources.FeedPlaceholderView.verify|verify} messages.
                         * @param m FeedPlaceholderView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IFeedPlaceholderView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedPlaceholderView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.FeedPlaceholderView.verify|verify} messages.
                         * @param message FeedPlaceholderView message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.IFeedPlaceholderView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedPlaceholderView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedPlaceholderView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.FeedPlaceholderView;

                        /**
                         * Decodes a FeedPlaceholderView message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedPlaceholderView
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.FeedPlaceholderView;

                        /**
                         * Verifies a FeedPlaceholderView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedPlaceholderView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedPlaceholderView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.FeedPlaceholderView;

                        /**
                         * Creates a plain object from a FeedPlaceholderView message. Also converts values to other types if specified.
                         * @param m FeedPlaceholderView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.FeedPlaceholderView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedPlaceholderView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.resources.IGenderView): google.ads.googleads.v8.resources.GenderView;

                        /**
                         * Encodes the specified GenderView message. Does not implicitly {@link google.ads.googleads.v8.resources.GenderView.verify|verify} messages.
                         * @param m GenderView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IGenderView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenderView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IGenderView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenderView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.GenderView;

                        /**
                         * Verifies a GenderView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenderView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GenderView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.GenderView;

                        /**
                         * Creates a plain object from a GenderView message. Also converts values to other types if specified.
                         * @param m GenderView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.GenderView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenderView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.GeoTargetConstantStatusEnum.GeoTargetConstantStatus|keyof typeof google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.GeoTargetConstantStatusEnum.GeoTargetConstantStatus|keyof typeof google.ads.googleads.v8.enums.GeoTargetConstantStatusEnum.GeoTargetConstantStatus);

                        /** GeoTargetConstant canonical_name. */
                        public canonical_name?: (string|null);

                        /** GeoTargetConstant parent_geo_target. */
                        public parent_geo_target?: (string|null);

                        /** GeoTargetConstant _id. */
                        public _id?: "id";

                        /** GeoTargetConstant _name. */
                        public _name?: "name";

                        /** GeoTargetConstant _country_code. */
                        public _country_code?: "country_code";

                        /** GeoTargetConstant _target_type. */
                        public _target_type?: "target_type";

                        /** GeoTargetConstant _canonical_name. */
                        public _canonical_name?: "canonical_name";

                        /** GeoTargetConstant _parent_geo_target. */
                        public _parent_geo_target?: "parent_geo_target";

                        /**
                         * Creates a new GeoTargetConstant instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GeoTargetConstant instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IGeoTargetConstant): google.ads.googleads.v8.resources.GeoTargetConstant;

                        /**
                         * Encodes the specified GeoTargetConstant message. Does not implicitly {@link google.ads.googleads.v8.resources.GeoTargetConstant.verify|verify} messages.
                         * @param m GeoTargetConstant message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IGeoTargetConstant, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GeoTargetConstant message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IGeoTargetConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GeoTargetConstant message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.GeoTargetConstant;

                        /**
                         * Verifies a GeoTargetConstant message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GeoTargetConstant message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GeoTargetConstant
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.GeoTargetConstant;

                        /**
                         * Creates a plain object from a GeoTargetConstant message. Also converts values to other types if specified.
                         * @param m GeoTargetConstant
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.GeoTargetConstant, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GeoTargetConstant to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a GeographicView. */
                    interface IGeographicView {

                        /** GeographicView resource_name */
                        resource_name?: (string|null);

                        /** GeographicView location_type */
                        location_type?: (google.ads.googleads.v8.enums.GeoTargetingTypeEnum.GeoTargetingType|keyof typeof google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IGeographicView);

                        /** GeographicView resource_name. */
                        public resource_name: string;

                        /** GeographicView location_type. */
                        public location_type: (google.ads.googleads.v8.enums.GeoTargetingTypeEnum.GeoTargetingType|keyof typeof google.ads.googleads.v8.enums.GeoTargetingTypeEnum.GeoTargetingType);

                        /** GeographicView country_criterion_id. */
                        public country_criterion_id?: (number|null);

                        /** GeographicView _country_criterion_id. */
                        public _country_criterion_id?: "country_criterion_id";

                        /**
                         * Creates a new GeographicView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GeographicView instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IGeographicView): google.ads.googleads.v8.resources.GeographicView;

                        /**
                         * Encodes the specified GeographicView message. Does not implicitly {@link google.ads.googleads.v8.resources.GeographicView.verify|verify} messages.
                         * @param m GeographicView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IGeographicView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GeographicView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IGeographicView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GeographicView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.GeographicView;

                        /**
                         * Verifies a GeographicView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GeographicView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GeographicView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.GeographicView;

                        /**
                         * Creates a plain object from a GeographicView message. Also converts values to other types if specified.
                         * @param m GeographicView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.GeographicView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GeographicView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a GoogleAdsField. */
                    interface IGoogleAdsField {

                        /** GoogleAdsField resource_name */
                        resource_name?: (string|null);

                        /** GoogleAdsField name */
                        name?: (string|null);

                        /** GoogleAdsField category */
                        category?: (google.ads.googleads.v8.enums.GoogleAdsFieldCategoryEnum.GoogleAdsFieldCategory|keyof typeof google.ads.googleads.v8.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.v8.enums.GoogleAdsFieldDataTypeEnum.GoogleAdsFieldDataType|keyof typeof google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IGoogleAdsField);

                        /** GoogleAdsField resource_name. */
                        public resource_name: string;

                        /** GoogleAdsField name. */
                        public name?: (string|null);

                        /** GoogleAdsField category. */
                        public category: (google.ads.googleads.v8.enums.GoogleAdsFieldCategoryEnum.GoogleAdsFieldCategory|keyof typeof google.ads.googleads.v8.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.v8.enums.GoogleAdsFieldDataTypeEnum.GoogleAdsFieldDataType|keyof typeof google.ads.googleads.v8.enums.GoogleAdsFieldDataTypeEnum.GoogleAdsFieldDataType);

                        /** GoogleAdsField type_url. */
                        public type_url?: (string|null);

                        /** GoogleAdsField is_repeated. */
                        public is_repeated?: (boolean|null);

                        /** GoogleAdsField _name. */
                        public _name?: "name";

                        /** GoogleAdsField _selectable. */
                        public _selectable?: "selectable";

                        /** GoogleAdsField _filterable. */
                        public _filterable?: "filterable";

                        /** GoogleAdsField _sortable. */
                        public _sortable?: "sortable";

                        /** GoogleAdsField _type_url. */
                        public _type_url?: "type_url";

                        /** GoogleAdsField _is_repeated. */
                        public _is_repeated?: "is_repeated";

                        /**
                         * Creates a new GoogleAdsField instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GoogleAdsField instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IGoogleAdsField): google.ads.googleads.v8.resources.GoogleAdsField;

                        /**
                         * Encodes the specified GoogleAdsField message. Does not implicitly {@link google.ads.googleads.v8.resources.GoogleAdsField.verify|verify} messages.
                         * @param m GoogleAdsField message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IGoogleAdsField, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GoogleAdsField message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IGoogleAdsField, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GoogleAdsField message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.GoogleAdsField;

                        /**
                         * Verifies a GoogleAdsField message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GoogleAdsField message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GoogleAdsField
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.GoogleAdsField;

                        /**
                         * Creates a plain object from a GoogleAdsField message. Also converts values to other types if specified.
                         * @param m GoogleAdsField
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.GoogleAdsField, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GoogleAdsField to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.PlacementTypeEnum.PlacementType|keyof typeof google.ads.googleads.v8.enums.PlacementTypeEnum.PlacementType|null);
                    }

                    /** Represents a GroupPlacementView. */
                    class GroupPlacementView implements IGroupPlacementView {

                        /**
                         * Constructs a new GroupPlacementView.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.PlacementTypeEnum.PlacementType|keyof typeof google.ads.googleads.v8.enums.PlacementTypeEnum.PlacementType);

                        /** GroupPlacementView _placement. */
                        public _placement?: "placement";

                        /** GroupPlacementView _display_name. */
                        public _display_name?: "display_name";

                        /** GroupPlacementView _target_url. */
                        public _target_url?: "target_url";

                        /**
                         * Creates a new GroupPlacementView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GroupPlacementView instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IGroupPlacementView): google.ads.googleads.v8.resources.GroupPlacementView;

                        /**
                         * Encodes the specified GroupPlacementView message. Does not implicitly {@link google.ads.googleads.v8.resources.GroupPlacementView.verify|verify} messages.
                         * @param m GroupPlacementView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IGroupPlacementView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GroupPlacementView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IGroupPlacementView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GroupPlacementView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.GroupPlacementView;

                        /**
                         * Verifies a GroupPlacementView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GroupPlacementView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GroupPlacementView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.GroupPlacementView;

                        /**
                         * Creates a plain object from a GroupPlacementView message. Also converts values to other types if specified.
                         * @param m GroupPlacementView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.GroupPlacementView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GroupPlacementView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.resources.IHotelGroupView): google.ads.googleads.v8.resources.HotelGroupView;

                        /**
                         * Encodes the specified HotelGroupView message. Does not implicitly {@link google.ads.googleads.v8.resources.HotelGroupView.verify|verify} messages.
                         * @param m HotelGroupView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IHotelGroupView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelGroupView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IHotelGroupView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelGroupView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.HotelGroupView;

                        /**
                         * Verifies a HotelGroupView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelGroupView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns HotelGroupView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.HotelGroupView;

                        /**
                         * Creates a plain object from a HotelGroupView message. Also converts values to other types if specified.
                         * @param m HotelGroupView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.HotelGroupView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelGroupView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.resources.IHotelPerformanceView): google.ads.googleads.v8.resources.HotelPerformanceView;

                        /**
                         * Encodes the specified HotelPerformanceView message. Does not implicitly {@link google.ads.googleads.v8.resources.HotelPerformanceView.verify|verify} messages.
                         * @param m HotelPerformanceView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IHotelPerformanceView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified HotelPerformanceView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IHotelPerformanceView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a HotelPerformanceView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.HotelPerformanceView;

                        /**
                         * Verifies a HotelPerformanceView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a HotelPerformanceView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns HotelPerformanceView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.HotelPerformanceView;

                        /**
                         * Creates a plain object from a HotelPerformanceView message. Also converts values to other types if specified.
                         * @param m HotelPerformanceView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.HotelPerformanceView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this HotelPerformanceView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.resources.IIncomeRangeView): google.ads.googleads.v8.resources.IncomeRangeView;

                        /**
                         * Encodes the specified IncomeRangeView message. Does not implicitly {@link google.ads.googleads.v8.resources.IncomeRangeView.verify|verify} messages.
                         * @param m IncomeRangeView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IIncomeRangeView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified IncomeRangeView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IIncomeRangeView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an IncomeRangeView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.IncomeRangeView;

                        /**
                         * Verifies an IncomeRangeView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an IncomeRangeView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns IncomeRangeView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.IncomeRangeView;

                        /**
                         * Creates a plain object from an IncomeRangeView message. Also converts values to other types if specified.
                         * @param m IncomeRangeView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.IncomeRangeView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this IncomeRangeView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an Invoice. */
                    interface IInvoice {

                        /** Invoice resource_name */
                        resource_name?: (string|null);

                        /** Invoice id */
                        id?: (string|null);

                        /** Invoice type */
                        type?: (google.ads.googleads.v8.enums.InvoiceTypeEnum.InvoiceType|keyof typeof google.ads.googleads.v8.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.v8.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 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.v8.resources.Invoice.IAccountBudgetSummary[]|null);
                    }

                    /** Represents an Invoice. */
                    class Invoice implements IInvoice {

                        /**
                         * Constructs a new Invoice.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IInvoice);

                        /** Invoice resource_name. */
                        public resource_name: string;

                        /** Invoice id. */
                        public id?: (string|null);

                        /** Invoice type. */
                        public type: (google.ads.googleads.v8.enums.InvoiceTypeEnum.InvoiceType|keyof typeof google.ads.googleads.v8.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.v8.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 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.v8.resources.Invoice.IAccountBudgetSummary[];

                        /** Invoice _id. */
                        public _id?: "id";

                        /** Invoice _billing_setup. */
                        public _billing_setup?: "billing_setup";

                        /** Invoice _payments_account_id. */
                        public _payments_account_id?: "payments_account_id";

                        /** Invoice _payments_profile_id. */
                        public _payments_profile_id?: "payments_profile_id";

                        /** Invoice _issue_date. */
                        public _issue_date?: "issue_date";

                        /** Invoice _due_date. */
                        public _due_date?: "due_date";

                        /** Invoice _currency_code. */
                        public _currency_code?: "currency_code";

                        /** Invoice _subtotal_amount_micros. */
                        public _subtotal_amount_micros?: "subtotal_amount_micros";

                        /** Invoice _tax_amount_micros. */
                        public _tax_amount_micros?: "tax_amount_micros";

                        /** Invoice _total_amount_micros. */
                        public _total_amount_micros?: "total_amount_micros";

                        /** Invoice _corrected_invoice. */
                        public _corrected_invoice?: "corrected_invoice";

                        /** Invoice _pdf_url. */
                        public _pdf_url?: "pdf_url";

                        /**
                         * Creates a new Invoice instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Invoice instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IInvoice): google.ads.googleads.v8.resources.Invoice;

                        /**
                         * Encodes the specified Invoice message. Does not implicitly {@link google.ads.googleads.v8.resources.Invoice.verify|verify} messages.
                         * @param m Invoice message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IInvoice, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Invoice message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IInvoice, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an Invoice message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Invoice;

                        /**
                         * Verifies an Invoice message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an Invoice message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns Invoice
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Invoice;

                        /**
                         * Creates a plain object from an Invoice message. Also converts values to other types if specified.
                         * @param m Invoice
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.Invoice, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Invoice to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace Invoice {

                        /** 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.v8.common.IDateRange|null);
                        }

                        /** Represents an AccountBudgetSummary. */
                        class AccountBudgetSummary implements IAccountBudgetSummary {

                            /**
                             * Constructs a new AccountBudgetSummary.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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.v8.common.IDateRange|null);

                            /** AccountBudgetSummary _customer. */
                            public _customer?: "customer";

                            /** AccountBudgetSummary _customer_descriptive_name. */
                            public _customer_descriptive_name?: "customer_descriptive_name";

                            /** AccountBudgetSummary _account_budget. */
                            public _account_budget?: "account_budget";

                            /** AccountBudgetSummary _account_budget_name. */
                            public _account_budget_name?: "account_budget_name";

                            /** AccountBudgetSummary _purchase_order_number. */
                            public _purchase_order_number?: "purchase_order_number";

                            /** AccountBudgetSummary _subtotal_amount_micros. */
                            public _subtotal_amount_micros?: "subtotal_amount_micros";

                            /** AccountBudgetSummary _tax_amount_micros. */
                            public _tax_amount_micros?: "tax_amount_micros";

                            /** AccountBudgetSummary _total_amount_micros. */
                            public _total_amount_micros?: "total_amount_micros";

                            /**
                             * Creates a new AccountBudgetSummary instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AccountBudgetSummary instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.Invoice.IAccountBudgetSummary): google.ads.googleads.v8.resources.Invoice.AccountBudgetSummary;

                            /**
                             * Encodes the specified AccountBudgetSummary message. Does not implicitly {@link google.ads.googleads.v8.resources.Invoice.AccountBudgetSummary.verify|verify} messages.
                             * @param m AccountBudgetSummary message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Invoice.IAccountBudgetSummary, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AccountBudgetSummary message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Invoice.IAccountBudgetSummary, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AccountBudgetSummary message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Invoice.AccountBudgetSummary;

                            /**
                             * Verifies an AccountBudgetSummary message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates an AccountBudgetSummary message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns AccountBudgetSummary
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Invoice.AccountBudgetSummary;

                            /**
                             * Creates a plain object from an AccountBudgetSummary message. Also converts values to other types if specified.
                             * @param m AccountBudgetSummary
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Invoice.AccountBudgetSummary, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this AccountBudgetSummary to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }
                    }

                    /** 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.v8.resources.IKeywordPlanForecastPeriod|null);
                    }

                    /** Represents a KeywordPlan. */
                    class KeywordPlan implements IKeywordPlan {

                        /**
                         * Constructs a new KeywordPlan.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.resources.IKeywordPlanForecastPeriod|null);

                        /** KeywordPlan _id. */
                        public _id?: "id";

                        /** KeywordPlan _name. */
                        public _name?: "name";

                        /**
                         * Creates a new KeywordPlan instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlan instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IKeywordPlan): google.ads.googleads.v8.resources.KeywordPlan;

                        /**
                         * Encodes the specified KeywordPlan message. Does not implicitly {@link google.ads.googleads.v8.resources.KeywordPlan.verify|verify} messages.
                         * @param m KeywordPlan message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IKeywordPlan, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlan message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IKeywordPlan, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlan message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.KeywordPlan;

                        /**
                         * Verifies a KeywordPlan message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlan message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlan
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.KeywordPlan;

                        /**
                         * Creates a plain object from a KeywordPlan message. Also converts values to other types if specified.
                         * @param m KeywordPlan
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.KeywordPlan, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlan to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a KeywordPlanForecastPeriod. */
                    interface IKeywordPlanForecastPeriod {

                        /** KeywordPlanForecastPeriod date_interval */
                        date_interval?: (google.ads.googleads.v8.enums.KeywordPlanForecastIntervalEnum.KeywordPlanForecastInterval|keyof typeof google.ads.googleads.v8.enums.KeywordPlanForecastIntervalEnum.KeywordPlanForecastInterval|null);

                        /** KeywordPlanForecastPeriod date_range */
                        date_range?: (google.ads.googleads.v8.common.IDateRange|null);
                    }

                    /** Represents a KeywordPlanForecastPeriod. */
                    class KeywordPlanForecastPeriod implements IKeywordPlanForecastPeriod {

                        /**
                         * Constructs a new KeywordPlanForecastPeriod.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IKeywordPlanForecastPeriod);

                        /** KeywordPlanForecastPeriod date_interval. */
                        public date_interval?: (google.ads.googleads.v8.enums.KeywordPlanForecastIntervalEnum.KeywordPlanForecastInterval|keyof typeof google.ads.googleads.v8.enums.KeywordPlanForecastIntervalEnum.KeywordPlanForecastInterval|null);

                        /** KeywordPlanForecastPeriod date_range. */
                        public date_range?: (google.ads.googleads.v8.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.v8.resources.IKeywordPlanForecastPeriod): google.ads.googleads.v8.resources.KeywordPlanForecastPeriod;

                        /**
                         * Encodes the specified KeywordPlanForecastPeriod message. Does not implicitly {@link google.ads.googleads.v8.resources.KeywordPlanForecastPeriod.verify|verify} messages.
                         * @param m KeywordPlanForecastPeriod message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IKeywordPlanForecastPeriod, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanForecastPeriod message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IKeywordPlanForecastPeriod, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanForecastPeriod message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.KeywordPlanForecastPeriod;

                        /**
                         * Verifies a KeywordPlanForecastPeriod message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanForecastPeriod message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanForecastPeriod
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.KeywordPlanForecastPeriod;

                        /**
                         * Creates a plain object from a KeywordPlanForecastPeriod message. Also converts values to other types if specified.
                         * @param m KeywordPlanForecastPeriod
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.KeywordPlanForecastPeriod, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanForecastPeriod to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** KeywordPlanAdGroup _keyword_plan_campaign. */
                        public _keyword_plan_campaign?: "keyword_plan_campaign";

                        /** KeywordPlanAdGroup _id. */
                        public _id?: "id";

                        /** KeywordPlanAdGroup _name. */
                        public _name?: "name";

                        /** KeywordPlanAdGroup _cpc_bid_micros. */
                        public _cpc_bid_micros?: "cpc_bid_micros";

                        /**
                         * Creates a new KeywordPlanAdGroup instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanAdGroup instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IKeywordPlanAdGroup): google.ads.googleads.v8.resources.KeywordPlanAdGroup;

                        /**
                         * Encodes the specified KeywordPlanAdGroup message. Does not implicitly {@link google.ads.googleads.v8.resources.KeywordPlanAdGroup.verify|verify} messages.
                         * @param m KeywordPlanAdGroup message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IKeywordPlanAdGroup, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanAdGroup message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IKeywordPlanAdGroup, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanAdGroup message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.KeywordPlanAdGroup;

                        /**
                         * Verifies a KeywordPlanAdGroup message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanAdGroup message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanAdGroup
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.KeywordPlanAdGroup;

                        /**
                         * Creates a plain object from a KeywordPlanAdGroup message. Also converts values to other types if specified.
                         * @param m KeywordPlanAdGroup
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.KeywordPlanAdGroup, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanAdGroup to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.KeywordMatchTypeEnum.KeywordMatchType|keyof typeof google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.KeywordMatchTypeEnum.KeywordMatchType|keyof typeof google.ads.googleads.v8.enums.KeywordMatchTypeEnum.KeywordMatchType);

                        /** KeywordPlanAdGroupKeyword cpc_bid_micros. */
                        public cpc_bid_micros?: (number|null);

                        /** KeywordPlanAdGroupKeyword negative. */
                        public negative?: (boolean|null);

                        /** KeywordPlanAdGroupKeyword _keyword_plan_ad_group. */
                        public _keyword_plan_ad_group?: "keyword_plan_ad_group";

                        /** KeywordPlanAdGroupKeyword _id. */
                        public _id?: "id";

                        /** KeywordPlanAdGroupKeyword _text. */
                        public _text?: "text";

                        /** KeywordPlanAdGroupKeyword _cpc_bid_micros. */
                        public _cpc_bid_micros?: "cpc_bid_micros";

                        /** KeywordPlanAdGroupKeyword _negative. */
                        public _negative?: "negative";

                        /**
                         * Creates a new KeywordPlanAdGroupKeyword instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanAdGroupKeyword instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IKeywordPlanAdGroupKeyword): google.ads.googleads.v8.resources.KeywordPlanAdGroupKeyword;

                        /**
                         * Encodes the specified KeywordPlanAdGroupKeyword message. Does not implicitly {@link google.ads.googleads.v8.resources.KeywordPlanAdGroupKeyword.verify|verify} messages.
                         * @param m KeywordPlanAdGroupKeyword message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IKeywordPlanAdGroupKeyword, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanAdGroupKeyword message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IKeywordPlanAdGroupKeyword, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanAdGroupKeyword message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.KeywordPlanAdGroupKeyword;

                        /**
                         * Verifies a KeywordPlanAdGroupKeyword message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanAdGroupKeyword message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanAdGroupKeyword
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.KeywordPlanAdGroupKeyword;

                        /**
                         * Creates a plain object from a KeywordPlanAdGroupKeyword message. Also converts values to other types if specified.
                         * @param m KeywordPlanAdGroupKeyword
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.KeywordPlanAdGroupKeyword, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanAdGroupKeyword to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.KeywordPlanNetworkEnum.KeywordPlanNetwork|keyof typeof google.ads.googleads.v8.enums.KeywordPlanNetworkEnum.KeywordPlanNetwork|null);

                        /** KeywordPlanCampaign cpc_bid_micros */
                        cpc_bid_micros?: (number|null);

                        /** KeywordPlanCampaign geo_targets */
                        geo_targets?: (google.ads.googleads.v8.resources.IKeywordPlanGeoTarget[]|null);
                    }

                    /** Represents a KeywordPlanCampaign. */
                    class KeywordPlanCampaign implements IKeywordPlanCampaign {

                        /**
                         * Constructs a new KeywordPlanCampaign.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.KeywordPlanNetworkEnum.KeywordPlanNetwork|keyof typeof google.ads.googleads.v8.enums.KeywordPlanNetworkEnum.KeywordPlanNetwork);

                        /** KeywordPlanCampaign cpc_bid_micros. */
                        public cpc_bid_micros?: (number|null);

                        /** KeywordPlanCampaign geo_targets. */
                        public geo_targets: google.ads.googleads.v8.resources.IKeywordPlanGeoTarget[];

                        /** KeywordPlanCampaign _keyword_plan. */
                        public _keyword_plan?: "keyword_plan";

                        /** KeywordPlanCampaign _id. */
                        public _id?: "id";

                        /** KeywordPlanCampaign _name. */
                        public _name?: "name";

                        /** KeywordPlanCampaign _cpc_bid_micros. */
                        public _cpc_bid_micros?: "cpc_bid_micros";

                        /**
                         * Creates a new KeywordPlanCampaign instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanCampaign instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IKeywordPlanCampaign): google.ads.googleads.v8.resources.KeywordPlanCampaign;

                        /**
                         * Encodes the specified KeywordPlanCampaign message. Does not implicitly {@link google.ads.googleads.v8.resources.KeywordPlanCampaign.verify|verify} messages.
                         * @param m KeywordPlanCampaign message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IKeywordPlanCampaign, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanCampaign message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IKeywordPlanCampaign, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanCampaign message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.KeywordPlanCampaign;

                        /**
                         * Verifies a KeywordPlanCampaign message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanCampaign message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanCampaign
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.KeywordPlanCampaign;

                        /**
                         * Creates a plain object from a KeywordPlanCampaign message. Also converts values to other types if specified.
                         * @param m KeywordPlanCampaign
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.KeywordPlanCampaign, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanCampaign to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IKeywordPlanGeoTarget);

                        /** KeywordPlanGeoTarget geo_target_constant. */
                        public geo_target_constant?: (string|null);

                        /** KeywordPlanGeoTarget _geo_target_constant. */
                        public _geo_target_constant?: "geo_target_constant";

                        /**
                         * Creates a new KeywordPlanGeoTarget instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanGeoTarget instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IKeywordPlanGeoTarget): google.ads.googleads.v8.resources.KeywordPlanGeoTarget;

                        /**
                         * Encodes the specified KeywordPlanGeoTarget message. Does not implicitly {@link google.ads.googleads.v8.resources.KeywordPlanGeoTarget.verify|verify} messages.
                         * @param m KeywordPlanGeoTarget message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IKeywordPlanGeoTarget, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanGeoTarget message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IKeywordPlanGeoTarget, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanGeoTarget message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.KeywordPlanGeoTarget;

                        /**
                         * Verifies a KeywordPlanGeoTarget message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanGeoTarget message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanGeoTarget
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.KeywordPlanGeoTarget;

                        /**
                         * Creates a plain object from a KeywordPlanGeoTarget message. Also converts values to other types if specified.
                         * @param m KeywordPlanGeoTarget
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.KeywordPlanGeoTarget, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanGeoTarget to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.KeywordMatchTypeEnum.KeywordMatchType|keyof typeof google.ads.googleads.v8.enums.KeywordMatchTypeEnum.KeywordMatchType|null);

                        /** KeywordPlanCampaignKeyword negative */
                        negative?: (boolean|null);
                    }

                    /** Represents a KeywordPlanCampaignKeyword. */
                    class KeywordPlanCampaignKeyword implements IKeywordPlanCampaignKeyword {

                        /**
                         * Constructs a new KeywordPlanCampaignKeyword.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.KeywordMatchTypeEnum.KeywordMatchType|keyof typeof google.ads.googleads.v8.enums.KeywordMatchTypeEnum.KeywordMatchType);

                        /** KeywordPlanCampaignKeyword negative. */
                        public negative?: (boolean|null);

                        /** KeywordPlanCampaignKeyword _keyword_plan_campaign. */
                        public _keyword_plan_campaign?: "keyword_plan_campaign";

                        /** KeywordPlanCampaignKeyword _id. */
                        public _id?: "id";

                        /** KeywordPlanCampaignKeyword _text. */
                        public _text?: "text";

                        /** KeywordPlanCampaignKeyword _negative. */
                        public _negative?: "negative";

                        /**
                         * Creates a new KeywordPlanCampaignKeyword instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanCampaignKeyword instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IKeywordPlanCampaignKeyword): google.ads.googleads.v8.resources.KeywordPlanCampaignKeyword;

                        /**
                         * Encodes the specified KeywordPlanCampaignKeyword message. Does not implicitly {@link google.ads.googleads.v8.resources.KeywordPlanCampaignKeyword.verify|verify} messages.
                         * @param m KeywordPlanCampaignKeyword message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IKeywordPlanCampaignKeyword, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanCampaignKeyword message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IKeywordPlanCampaignKeyword, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanCampaignKeyword message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.KeywordPlanCampaignKeyword;

                        /**
                         * Verifies a KeywordPlanCampaignKeyword message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanCampaignKeyword message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanCampaignKeyword
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.KeywordPlanCampaignKeyword;

                        /**
                         * Creates a plain object from a KeywordPlanCampaignKeyword message. Also converts values to other types if specified.
                         * @param m KeywordPlanCampaignKeyword
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.KeywordPlanCampaignKeyword, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanCampaignKeyword to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** KeywordThemeConstant _country_code. */
                        public _country_code?: "country_code";

                        /** KeywordThemeConstant _language_code. */
                        public _language_code?: "language_code";

                        /** KeywordThemeConstant _display_name. */
                        public _display_name?: "display_name";

                        /**
                         * Creates a new KeywordThemeConstant instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordThemeConstant instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IKeywordThemeConstant): google.ads.googleads.v8.resources.KeywordThemeConstant;

                        /**
                         * Encodes the specified KeywordThemeConstant message. Does not implicitly {@link google.ads.googleads.v8.resources.KeywordThemeConstant.verify|verify} messages.
                         * @param m KeywordThemeConstant message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IKeywordThemeConstant, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordThemeConstant message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IKeywordThemeConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordThemeConstant message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.KeywordThemeConstant;

                        /**
                         * Verifies a KeywordThemeConstant message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordThemeConstant message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordThemeConstant
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.KeywordThemeConstant;

                        /**
                         * Creates a plain object from a KeywordThemeConstant message. Also converts values to other types if specified.
                         * @param m KeywordThemeConstant
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.KeywordThemeConstant, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordThemeConstant to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.resources.IKeywordView): google.ads.googleads.v8.resources.KeywordView;

                        /**
                         * Encodes the specified KeywordView message. Does not implicitly {@link google.ads.googleads.v8.resources.KeywordView.verify|verify} messages.
                         * @param m KeywordView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IKeywordView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IKeywordView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.KeywordView;

                        /**
                         * Verifies a KeywordView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.KeywordView;

                        /**
                         * Creates a plain object from a KeywordView message. Also converts values to other types if specified.
                         * @param m KeywordView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.KeywordView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.LabelStatusEnum.LabelStatus|keyof typeof google.ads.googleads.v8.enums.LabelStatusEnum.LabelStatus|null);

                        /** Label text_label */
                        text_label?: (google.ads.googleads.v8.common.ITextLabel|null);
                    }

                    /** Represents a Label. */
                    class Label implements ILabel {

                        /**
                         * Constructs a new Label.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.LabelStatusEnum.LabelStatus|keyof typeof google.ads.googleads.v8.enums.LabelStatusEnum.LabelStatus);

                        /** Label text_label. */
                        public text_label?: (google.ads.googleads.v8.common.ITextLabel|null);

                        /** Label _id. */
                        public _id?: "id";

                        /** Label _name. */
                        public _name?: "name";

                        /**
                         * Creates a new Label instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Label instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ILabel): google.ads.googleads.v8.resources.Label;

                        /**
                         * Encodes the specified Label message. Does not implicitly {@link google.ads.googleads.v8.resources.Label.verify|verify} messages.
                         * @param m Label message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ILabel, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Label message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ILabel, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Label message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Label;

                        /**
                         * Verifies a Label message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Label message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns Label
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Label;

                        /**
                         * Creates a plain object from a Label message. Also converts values to other types if specified.
                         * @param m Label
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.Label, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Label to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.ILandingPageView);

                        /** LandingPageView resource_name. */
                        public resource_name: string;

                        /** LandingPageView unexpanded_final_url. */
                        public unexpanded_final_url?: (string|null);

                        /** LandingPageView _unexpanded_final_url. */
                        public _unexpanded_final_url?: "unexpanded_final_url";

                        /**
                         * Creates a new LandingPageView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LandingPageView instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ILandingPageView): google.ads.googleads.v8.resources.LandingPageView;

                        /**
                         * Encodes the specified LandingPageView message. Does not implicitly {@link google.ads.googleads.v8.resources.LandingPageView.verify|verify} messages.
                         * @param m LandingPageView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ILandingPageView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LandingPageView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ILandingPageView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LandingPageView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.LandingPageView;

                        /**
                         * Verifies a LandingPageView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LandingPageView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns LandingPageView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.LandingPageView;

                        /**
                         * Creates a plain object from a LandingPageView message. Also converts values to other types if specified.
                         * @param m LandingPageView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.LandingPageView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LandingPageView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** LanguageConstant _id. */
                        public _id?: "id";

                        /** LanguageConstant _code. */
                        public _code?: "code";

                        /** LanguageConstant _name. */
                        public _name?: "name";

                        /** LanguageConstant _targetable. */
                        public _targetable?: "targetable";

                        /**
                         * Creates a new LanguageConstant instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LanguageConstant instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ILanguageConstant): google.ads.googleads.v8.resources.LanguageConstant;

                        /**
                         * Encodes the specified LanguageConstant message. Does not implicitly {@link google.ads.googleads.v8.resources.LanguageConstant.verify|verify} messages.
                         * @param m LanguageConstant message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ILanguageConstant, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LanguageConstant message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ILanguageConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LanguageConstant message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.LanguageConstant;

                        /**
                         * Verifies a LanguageConstant message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LanguageConstant message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns LanguageConstant
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.LanguageConstant;

                        /**
                         * Creates a plain object from a LanguageConstant message. Also converts values to other types if specified.
                         * @param m LanguageConstant
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.LanguageConstant, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LanguageConstant to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.common.ICriterionCategoryAvailability[]|null);
                    }

                    /** Represents a LifeEvent. */
                    class LifeEvent implements ILifeEvent {

                        /**
                         * Constructs a new LifeEvent.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.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.v8.resources.ILifeEvent): google.ads.googleads.v8.resources.LifeEvent;

                        /**
                         * Encodes the specified LifeEvent message. Does not implicitly {@link google.ads.googleads.v8.resources.LifeEvent.verify|verify} messages.
                         * @param m LifeEvent message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ILifeEvent, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LifeEvent message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ILifeEvent, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LifeEvent message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.LifeEvent;

                        /**
                         * Verifies a LifeEvent message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LifeEvent message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns LifeEvent
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.LifeEvent;

                        /**
                         * Creates a plain object from a LifeEvent message. Also converts values to other types if specified.
                         * @param m LifeEvent
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.LifeEvent, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LifeEvent to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.resources.ILocationView): google.ads.googleads.v8.resources.LocationView;

                        /**
                         * Encodes the specified LocationView message. Does not implicitly {@link google.ads.googleads.v8.resources.LocationView.verify|verify} messages.
                         * @param m LocationView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ILocationView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LocationView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ILocationView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LocationView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.LocationView;

                        /**
                         * Verifies a LocationView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LocationView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns LocationView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.LocationView;

                        /**
                         * Creates a plain object from a LocationView message. Also converts values to other types if specified.
                         * @param m LocationView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.LocationView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LocationView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.resources.IManagedPlacementView): google.ads.googleads.v8.resources.ManagedPlacementView;

                        /**
                         * Encodes the specified ManagedPlacementView message. Does not implicitly {@link google.ads.googleads.v8.resources.ManagedPlacementView.verify|verify} messages.
                         * @param m ManagedPlacementView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IManagedPlacementView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ManagedPlacementView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IManagedPlacementView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ManagedPlacementView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.ManagedPlacementView;

                        /**
                         * Verifies a ManagedPlacementView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ManagedPlacementView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ManagedPlacementView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ManagedPlacementView;

                        /**
                         * Creates a plain object from a ManagedPlacementView message. Also converts values to other types if specified.
                         * @param m ManagedPlacementView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.ManagedPlacementView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ManagedPlacementView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MediaFile. */
                    interface IMediaFile {

                        /** MediaFile resource_name */
                        resource_name?: (string|null);

                        /** MediaFile id */
                        id?: (number|null);

                        /** MediaFile type */
                        type?: (google.ads.googleads.v8.enums.MediaTypeEnum.MediaType|keyof typeof google.ads.googleads.v8.enums.MediaTypeEnum.MediaType|null);

                        /** MediaFile mime_type */
                        mime_type?: (google.ads.googleads.v8.enums.MimeTypeEnum.MimeType|keyof typeof google.ads.googleads.v8.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.v8.resources.IMediaImage|null);

                        /** MediaFile media_bundle */
                        media_bundle?: (google.ads.googleads.v8.resources.IMediaBundle|null);

                        /** MediaFile audio */
                        audio?: (google.ads.googleads.v8.resources.IMediaAudio|null);

                        /** MediaFile video */
                        video?: (google.ads.googleads.v8.resources.IMediaVideo|null);
                    }

                    /** Represents a MediaFile. */
                    class MediaFile implements IMediaFile {

                        /**
                         * Constructs a new MediaFile.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IMediaFile);

                        /** MediaFile resource_name. */
                        public resource_name: string;

                        /** MediaFile id. */
                        public id?: (number|null);

                        /** MediaFile type. */
                        public type: (google.ads.googleads.v8.enums.MediaTypeEnum.MediaType|keyof typeof google.ads.googleads.v8.enums.MediaTypeEnum.MediaType);

                        /** MediaFile mime_type. */
                        public mime_type: (google.ads.googleads.v8.enums.MimeTypeEnum.MimeType|keyof typeof google.ads.googleads.v8.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.v8.resources.IMediaImage|null);

                        /** MediaFile media_bundle. */
                        public media_bundle?: (google.ads.googleads.v8.resources.IMediaBundle|null);

                        /** MediaFile audio. */
                        public audio?: (google.ads.googleads.v8.resources.IMediaAudio|null);

                        /** MediaFile video. */
                        public video?: (google.ads.googleads.v8.resources.IMediaVideo|null);

                        /** MediaFile _id. */
                        public _id?: "id";

                        /** MediaFile _source_url. */
                        public _source_url?: "source_url";

                        /** MediaFile _name. */
                        public _name?: "name";

                        /** MediaFile _file_size. */
                        public _file_size?: "file_size";

                        /** 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.v8.resources.IMediaFile): google.ads.googleads.v8.resources.MediaFile;

                        /**
                         * Encodes the specified MediaFile message. Does not implicitly {@link google.ads.googleads.v8.resources.MediaFile.verify|verify} messages.
                         * @param m MediaFile message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IMediaFile, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MediaFile message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IMediaFile, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MediaFile message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.MediaFile;

                        /**
                         * Verifies a MediaFile message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MediaFile message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MediaFile
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.MediaFile;

                        /**
                         * Creates a plain object from a MediaFile message. Also converts values to other types if specified.
                         * @param m MediaFile
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.MediaFile, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MediaFile to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MediaImage. */
                    interface IMediaImage {

                        /** MediaImage data */
                        data?: (Uint8Array|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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IMediaImage);

                        /** MediaImage data. */
                        public data?: (Uint8Array|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);

                        /** MediaImage _data. */
                        public _data?: "data";

                        /** MediaImage _full_size_image_url. */
                        public _full_size_image_url?: "full_size_image_url";

                        /** MediaImage _preview_size_image_url. */
                        public _preview_size_image_url?: "preview_size_image_url";

                        /**
                         * Creates a new MediaImage instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MediaImage instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IMediaImage): google.ads.googleads.v8.resources.MediaImage;

                        /**
                         * Encodes the specified MediaImage message. Does not implicitly {@link google.ads.googleads.v8.resources.MediaImage.verify|verify} messages.
                         * @param m MediaImage message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IMediaImage, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MediaImage message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IMediaImage, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MediaImage message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.MediaImage;

                        /**
                         * Verifies a MediaImage message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MediaImage message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MediaImage
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.MediaImage;

                        /**
                         * Creates a plain object from a MediaImage message. Also converts values to other types if specified.
                         * @param m MediaImage
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.MediaImage, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MediaImage to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MediaBundle. */
                    interface IMediaBundle {

                        /** MediaBundle data */
                        data?: (Uint8Array|string|null);

                        /** MediaBundle url */
                        url?: (string|null);
                    }

                    /** Represents a MediaBundle. */
                    class MediaBundle implements IMediaBundle {

                        /**
                         * Constructs a new MediaBundle.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IMediaBundle);

                        /** MediaBundle data. */
                        public data?: (Uint8Array|string|null);

                        /** MediaBundle url. */
                        public url?: (string|null);

                        /** MediaBundle _data. */
                        public _data?: "data";

                        /** MediaBundle _url. */
                        public _url?: "url";

                        /**
                         * Creates a new MediaBundle instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MediaBundle instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IMediaBundle): google.ads.googleads.v8.resources.MediaBundle;

                        /**
                         * Encodes the specified MediaBundle message. Does not implicitly {@link google.ads.googleads.v8.resources.MediaBundle.verify|verify} messages.
                         * @param m MediaBundle message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IMediaBundle, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MediaBundle message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IMediaBundle, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MediaBundle message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.MediaBundle;

                        /**
                         * Verifies a MediaBundle message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MediaBundle message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MediaBundle
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.MediaBundle;

                        /**
                         * Creates a plain object from a MediaBundle message. Also converts values to other types if specified.
                         * @param m MediaBundle
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.MediaBundle, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MediaBundle to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IMediaAudio);

                        /** MediaAudio ad_duration_millis. */
                        public ad_duration_millis?: (number|null);

                        /** MediaAudio _ad_duration_millis. */
                        public _ad_duration_millis?: "ad_duration_millis";

                        /**
                         * Creates a new MediaAudio instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MediaAudio instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IMediaAudio): google.ads.googleads.v8.resources.MediaAudio;

                        /**
                         * Encodes the specified MediaAudio message. Does not implicitly {@link google.ads.googleads.v8.resources.MediaAudio.verify|verify} messages.
                         * @param m MediaAudio message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IMediaAudio, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MediaAudio message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IMediaAudio, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MediaAudio message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.MediaAudio;

                        /**
                         * Verifies a MediaAudio message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MediaAudio message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MediaAudio
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.MediaAudio;

                        /**
                         * Creates a plain object from a MediaAudio message. Also converts values to other types if specified.
                         * @param m MediaAudio
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.MediaAudio, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MediaAudio to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** MediaVideo _ad_duration_millis. */
                        public _ad_duration_millis?: "ad_duration_millis";

                        /** MediaVideo _youtube_video_id. */
                        public _youtube_video_id?: "youtube_video_id";

                        /** MediaVideo _advertising_id_code. */
                        public _advertising_id_code?: "advertising_id_code";

                        /** MediaVideo _isci_code. */
                        public _isci_code?: "isci_code";

                        /**
                         * Creates a new MediaVideo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MediaVideo instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IMediaVideo): google.ads.googleads.v8.resources.MediaVideo;

                        /**
                         * Encodes the specified MediaVideo message. Does not implicitly {@link google.ads.googleads.v8.resources.MediaVideo.verify|verify} messages.
                         * @param m MediaVideo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IMediaVideo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MediaVideo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IMediaVideo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MediaVideo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.MediaVideo;

                        /**
                         * Verifies a MediaVideo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MediaVideo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MediaVideo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.MediaVideo;

                        /**
                         * Creates a plain object from a MediaVideo message. Also converts values to other types if specified.
                         * @param m MediaVideo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.MediaVideo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MediaVideo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MerchantCenterLink. */
                    interface IMerchantCenterLink {

                        /** MerchantCenterLink resource_name */
                        resource_name?: (string|null);

                        /** MerchantCenterLink id */
                        id?: (number|null);

                        /** MerchantCenterLink merchant_center_account_name */
                        merchant_center_account_name?: (string|null);

                        /** MerchantCenterLink status */
                        status?: (google.ads.googleads.v8.enums.MerchantCenterLinkStatusEnum.MerchantCenterLinkStatus|keyof typeof google.ads.googleads.v8.enums.MerchantCenterLinkStatusEnum.MerchantCenterLinkStatus|null);
                    }

                    /** Represents a MerchantCenterLink. */
                    class MerchantCenterLink implements IMerchantCenterLink {

                        /**
                         * Constructs a new MerchantCenterLink.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IMerchantCenterLink);

                        /** MerchantCenterLink resource_name. */
                        public resource_name: string;

                        /** MerchantCenterLink id. */
                        public id?: (number|null);

                        /** MerchantCenterLink merchant_center_account_name. */
                        public merchant_center_account_name?: (string|null);

                        /** MerchantCenterLink status. */
                        public status: (google.ads.googleads.v8.enums.MerchantCenterLinkStatusEnum.MerchantCenterLinkStatus|keyof typeof google.ads.googleads.v8.enums.MerchantCenterLinkStatusEnum.MerchantCenterLinkStatus);

                        /** MerchantCenterLink _id. */
                        public _id?: "id";

                        /** MerchantCenterLink _merchant_center_account_name. */
                        public _merchant_center_account_name?: "merchant_center_account_name";

                        /**
                         * Creates a new MerchantCenterLink instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MerchantCenterLink instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IMerchantCenterLink): google.ads.googleads.v8.resources.MerchantCenterLink;

                        /**
                         * Encodes the specified MerchantCenterLink message. Does not implicitly {@link google.ads.googleads.v8.resources.MerchantCenterLink.verify|verify} messages.
                         * @param m MerchantCenterLink message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IMerchantCenterLink, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MerchantCenterLink message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.MerchantCenterLink.verify|verify} messages.
                         * @param message MerchantCenterLink message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.IMerchantCenterLink, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MerchantCenterLink message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MerchantCenterLink
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.MerchantCenterLink;

                        /**
                         * Decodes a MerchantCenterLink message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MerchantCenterLink
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.MerchantCenterLink;

                        /**
                         * Verifies a MerchantCenterLink message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MerchantCenterLink message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MerchantCenterLink
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.MerchantCenterLink;

                        /**
                         * Creates a plain object from a MerchantCenterLink message. Also converts values to other types if specified.
                         * @param m MerchantCenterLink
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.MerchantCenterLink, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MerchantCenterLink to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IMobileAppCategoryConstant);

                        /** MobileAppCategoryConstant resource_name. */
                        public resource_name: string;

                        /** MobileAppCategoryConstant id. */
                        public id?: (number|null);

                        /** MobileAppCategoryConstant name. */
                        public name?: (string|null);

                        /** MobileAppCategoryConstant _id. */
                        public _id?: "id";

                        /** MobileAppCategoryConstant _name. */
                        public _name?: "name";

                        /**
                         * Creates a new MobileAppCategoryConstant instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MobileAppCategoryConstant instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IMobileAppCategoryConstant): google.ads.googleads.v8.resources.MobileAppCategoryConstant;

                        /**
                         * Encodes the specified MobileAppCategoryConstant message. Does not implicitly {@link google.ads.googleads.v8.resources.MobileAppCategoryConstant.verify|verify} messages.
                         * @param m MobileAppCategoryConstant message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IMobileAppCategoryConstant, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MobileAppCategoryConstant message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IMobileAppCategoryConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MobileAppCategoryConstant message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.MobileAppCategoryConstant;

                        /**
                         * Verifies a MobileAppCategoryConstant message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MobileAppCategoryConstant message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MobileAppCategoryConstant
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.MobileAppCategoryConstant;

                        /**
                         * Creates a plain object from a MobileAppCategoryConstant message. Also converts values to other types if specified.
                         * @param m MobileAppCategoryConstant
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.MobileAppCategoryConstant, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MobileAppCategoryConstant to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.MobileDeviceTypeEnum.MobileDeviceType|keyof typeof google.ads.googleads.v8.enums.MobileDeviceTypeEnum.MobileDeviceType|null);
                    }

                    /** Represents a MobileDeviceConstant. */
                    class MobileDeviceConstant implements IMobileDeviceConstant {

                        /**
                         * Constructs a new MobileDeviceConstant.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.MobileDeviceTypeEnum.MobileDeviceType|keyof typeof google.ads.googleads.v8.enums.MobileDeviceTypeEnum.MobileDeviceType);

                        /** MobileDeviceConstant _id. */
                        public _id?: "id";

                        /** MobileDeviceConstant _name. */
                        public _name?: "name";

                        /** MobileDeviceConstant _manufacturer_name. */
                        public _manufacturer_name?: "manufacturer_name";

                        /** MobileDeviceConstant _operating_system_name. */
                        public _operating_system_name?: "operating_system_name";

                        /**
                         * Creates a new MobileDeviceConstant instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MobileDeviceConstant instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IMobileDeviceConstant): google.ads.googleads.v8.resources.MobileDeviceConstant;

                        /**
                         * Encodes the specified MobileDeviceConstant message. Does not implicitly {@link google.ads.googleads.v8.resources.MobileDeviceConstant.verify|verify} messages.
                         * @param m MobileDeviceConstant message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IMobileDeviceConstant, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MobileDeviceConstant message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IMobileDeviceConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MobileDeviceConstant message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.MobileDeviceConstant;

                        /**
                         * Verifies a MobileDeviceConstant message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MobileDeviceConstant message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MobileDeviceConstant
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.MobileDeviceConstant;

                        /**
                         * Creates a plain object from a MobileDeviceConstant message. Also converts values to other types if specified.
                         * @param m MobileDeviceConstant
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.MobileDeviceConstant, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MobileDeviceConstant to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.OfflineUserDataJobTypeEnum.OfflineUserDataJobType|keyof typeof google.ads.googleads.v8.enums.OfflineUserDataJobTypeEnum.OfflineUserDataJobType|null);

                        /** OfflineUserDataJob status */
                        status?: (google.ads.googleads.v8.enums.OfflineUserDataJobStatusEnum.OfflineUserDataJobStatus|keyof typeof google.ads.googleads.v8.enums.OfflineUserDataJobStatusEnum.OfflineUserDataJobStatus|null);

                        /** OfflineUserDataJob failure_reason */
                        failure_reason?: (google.ads.googleads.v8.enums.OfflineUserDataJobFailureReasonEnum.OfflineUserDataJobFailureReason|keyof typeof google.ads.googleads.v8.enums.OfflineUserDataJobFailureReasonEnum.OfflineUserDataJobFailureReason|null);

                        /** OfflineUserDataJob customer_match_user_list_metadata */
                        customer_match_user_list_metadata?: (google.ads.googleads.v8.common.ICustomerMatchUserListMetadata|null);

                        /** OfflineUserDataJob store_sales_metadata */
                        store_sales_metadata?: (google.ads.googleads.v8.common.IStoreSalesMetadata|null);
                    }

                    /** Represents an OfflineUserDataJob. */
                    class OfflineUserDataJob implements IOfflineUserDataJob {

                        /**
                         * Constructs a new OfflineUserDataJob.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.OfflineUserDataJobTypeEnum.OfflineUserDataJobType|keyof typeof google.ads.googleads.v8.enums.OfflineUserDataJobTypeEnum.OfflineUserDataJobType);

                        /** OfflineUserDataJob status. */
                        public status: (google.ads.googleads.v8.enums.OfflineUserDataJobStatusEnum.OfflineUserDataJobStatus|keyof typeof google.ads.googleads.v8.enums.OfflineUserDataJobStatusEnum.OfflineUserDataJobStatus);

                        /** OfflineUserDataJob failure_reason. */
                        public failure_reason: (google.ads.googleads.v8.enums.OfflineUserDataJobFailureReasonEnum.OfflineUserDataJobFailureReason|keyof typeof google.ads.googleads.v8.enums.OfflineUserDataJobFailureReasonEnum.OfflineUserDataJobFailureReason);

                        /** OfflineUserDataJob customer_match_user_list_metadata. */
                        public customer_match_user_list_metadata?: (google.ads.googleads.v8.common.ICustomerMatchUserListMetadata|null);

                        /** OfflineUserDataJob store_sales_metadata. */
                        public store_sales_metadata?: (google.ads.googleads.v8.common.IStoreSalesMetadata|null);

                        /** OfflineUserDataJob _id. */
                        public _id?: "id";

                        /** OfflineUserDataJob _external_id. */
                        public _external_id?: "external_id";

                        /** 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.v8.resources.IOfflineUserDataJob): google.ads.googleads.v8.resources.OfflineUserDataJob;

                        /**
                         * Encodes the specified OfflineUserDataJob message. Does not implicitly {@link google.ads.googleads.v8.resources.OfflineUserDataJob.verify|verify} messages.
                         * @param m OfflineUserDataJob message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IOfflineUserDataJob, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OfflineUserDataJob message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IOfflineUserDataJob, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OfflineUserDataJob message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.OfflineUserDataJob;

                        /**
                         * Verifies an OfflineUserDataJob message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an OfflineUserDataJob message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns OfflineUserDataJob
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.OfflineUserDataJob;

                        /**
                         * Creates a plain object from an OfflineUserDataJob message. Also converts values to other types if specified.
                         * @param m OfflineUserDataJob
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.OfflineUserDataJob, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OfflineUserDataJob to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.OperatingSystemVersionOperatorTypeEnum.OperatingSystemVersionOperatorType|keyof typeof google.ads.googleads.v8.enums.OperatingSystemVersionOperatorTypeEnum.OperatingSystemVersionOperatorType|null);
                    }

                    /** Represents an OperatingSystemVersionConstant. */
                    class OperatingSystemVersionConstant implements IOperatingSystemVersionConstant {

                        /**
                         * Constructs a new OperatingSystemVersionConstant.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.OperatingSystemVersionOperatorTypeEnum.OperatingSystemVersionOperatorType|keyof typeof google.ads.googleads.v8.enums.OperatingSystemVersionOperatorTypeEnum.OperatingSystemVersionOperatorType);

                        /** OperatingSystemVersionConstant _id. */
                        public _id?: "id";

                        /** OperatingSystemVersionConstant _name. */
                        public _name?: "name";

                        /** OperatingSystemVersionConstant _os_major_version. */
                        public _os_major_version?: "os_major_version";

                        /** OperatingSystemVersionConstant _os_minor_version. */
                        public _os_minor_version?: "os_minor_version";

                        /**
                         * Creates a new OperatingSystemVersionConstant instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OperatingSystemVersionConstant instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IOperatingSystemVersionConstant): google.ads.googleads.v8.resources.OperatingSystemVersionConstant;

                        /**
                         * Encodes the specified OperatingSystemVersionConstant message. Does not implicitly {@link google.ads.googleads.v8.resources.OperatingSystemVersionConstant.verify|verify} messages.
                         * @param m OperatingSystemVersionConstant message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IOperatingSystemVersionConstant, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OperatingSystemVersionConstant message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IOperatingSystemVersionConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OperatingSystemVersionConstant message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.OperatingSystemVersionConstant;

                        /**
                         * Verifies an OperatingSystemVersionConstant message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an OperatingSystemVersionConstant message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns OperatingSystemVersionConstant
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.OperatingSystemVersionConstant;

                        /**
                         * Creates a plain object from an OperatingSystemVersionConstant message. Also converts values to other types if specified.
                         * @param m OperatingSystemVersionConstant
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.OperatingSystemVersionConstant, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OperatingSystemVersionConstant to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IPaidOrganicSearchTermView);

                        /** PaidOrganicSearchTermView resource_name. */
                        public resource_name: string;

                        /** PaidOrganicSearchTermView search_term. */
                        public search_term?: (string|null);

                        /** PaidOrganicSearchTermView _search_term. */
                        public _search_term?: "search_term";

                        /**
                         * Creates a new PaidOrganicSearchTermView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PaidOrganicSearchTermView instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IPaidOrganicSearchTermView): google.ads.googleads.v8.resources.PaidOrganicSearchTermView;

                        /**
                         * Encodes the specified PaidOrganicSearchTermView message. Does not implicitly {@link google.ads.googleads.v8.resources.PaidOrganicSearchTermView.verify|verify} messages.
                         * @param m PaidOrganicSearchTermView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IPaidOrganicSearchTermView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PaidOrganicSearchTermView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IPaidOrganicSearchTermView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PaidOrganicSearchTermView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.PaidOrganicSearchTermView;

                        /**
                         * Verifies a PaidOrganicSearchTermView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PaidOrganicSearchTermView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PaidOrganicSearchTermView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.PaidOrganicSearchTermView;

                        /**
                         * Creates a plain object from a PaidOrganicSearchTermView message. Also converts values to other types if specified.
                         * @param m PaidOrganicSearchTermView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.PaidOrganicSearchTermView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PaidOrganicSearchTermView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.resources.IParentalStatusView): google.ads.googleads.v8.resources.ParentalStatusView;

                        /**
                         * Encodes the specified ParentalStatusView message. Does not implicitly {@link google.ads.googleads.v8.resources.ParentalStatusView.verify|verify} messages.
                         * @param m ParentalStatusView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IParentalStatusView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ParentalStatusView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IParentalStatusView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ParentalStatusView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.ParentalStatusView;

                        /**
                         * Verifies a ParentalStatusView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ParentalStatusView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ParentalStatusView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ParentalStatusView;

                        /**
                         * Creates a plain object from a ParentalStatusView message. Also converts values to other types if specified.
                         * @param m ParentalStatusView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.ParentalStatusView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ParentalStatusView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** PaymentsAccount _payments_account_id. */
                        public _payments_account_id?: "payments_account_id";

                        /** PaymentsAccount _name. */
                        public _name?: "name";

                        /** PaymentsAccount _currency_code. */
                        public _currency_code?: "currency_code";

                        /** PaymentsAccount _payments_profile_id. */
                        public _payments_profile_id?: "payments_profile_id";

                        /** PaymentsAccount _secondary_payments_profile_id. */
                        public _secondary_payments_profile_id?: "secondary_payments_profile_id";

                        /** PaymentsAccount _paying_manager_customer. */
                        public _paying_manager_customer?: "paying_manager_customer";

                        /**
                         * Creates a new PaymentsAccount instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PaymentsAccount instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IPaymentsAccount): google.ads.googleads.v8.resources.PaymentsAccount;

                        /**
                         * Encodes the specified PaymentsAccount message. Does not implicitly {@link google.ads.googleads.v8.resources.PaymentsAccount.verify|verify} messages.
                         * @param m PaymentsAccount message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IPaymentsAccount, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PaymentsAccount message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IPaymentsAccount, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PaymentsAccount message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.PaymentsAccount;

                        /**
                         * Verifies a PaymentsAccount message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PaymentsAccount message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PaymentsAccount
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.PaymentsAccount;

                        /**
                         * Creates a plain object from a PaymentsAccount message. Also converts values to other types if specified.
                         * @param m PaymentsAccount
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.PaymentsAccount, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PaymentsAccount to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ProductBiddingCategoryConstant. */
                    interface IProductBiddingCategoryConstant {

                        /** ProductBiddingCategoryConstant resource_name */
                        resource_name?: (string|null);

                        /** ProductBiddingCategoryConstant id */
                        id?: (number|null);

                        /** ProductBiddingCategoryConstant country_code */
                        country_code?: (string|null);

                        /** ProductBiddingCategoryConstant product_bidding_category_constant_parent */
                        product_bidding_category_constant_parent?: (string|null);

                        /** ProductBiddingCategoryConstant level */
                        level?: (google.ads.googleads.v8.enums.ProductBiddingCategoryLevelEnum.ProductBiddingCategoryLevel|keyof typeof google.ads.googleads.v8.enums.ProductBiddingCategoryLevelEnum.ProductBiddingCategoryLevel|null);

                        /** ProductBiddingCategoryConstant status */
                        status?: (google.ads.googleads.v8.enums.ProductBiddingCategoryStatusEnum.ProductBiddingCategoryStatus|keyof typeof google.ads.googleads.v8.enums.ProductBiddingCategoryStatusEnum.ProductBiddingCategoryStatus|null);

                        /** ProductBiddingCategoryConstant language_code */
                        language_code?: (string|null);

                        /** ProductBiddingCategoryConstant localized_name */
                        localized_name?: (string|null);
                    }

                    /** Represents a ProductBiddingCategoryConstant. */
                    class ProductBiddingCategoryConstant implements IProductBiddingCategoryConstant {

                        /**
                         * Constructs a new ProductBiddingCategoryConstant.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IProductBiddingCategoryConstant);

                        /** ProductBiddingCategoryConstant resource_name. */
                        public resource_name: string;

                        /** ProductBiddingCategoryConstant id. */
                        public id?: (number|null);

                        /** ProductBiddingCategoryConstant country_code. */
                        public country_code?: (string|null);

                        /** ProductBiddingCategoryConstant product_bidding_category_constant_parent. */
                        public product_bidding_category_constant_parent?: (string|null);

                        /** ProductBiddingCategoryConstant level. */
                        public level: (google.ads.googleads.v8.enums.ProductBiddingCategoryLevelEnum.ProductBiddingCategoryLevel|keyof typeof google.ads.googleads.v8.enums.ProductBiddingCategoryLevelEnum.ProductBiddingCategoryLevel);

                        /** ProductBiddingCategoryConstant status. */
                        public status: (google.ads.googleads.v8.enums.ProductBiddingCategoryStatusEnum.ProductBiddingCategoryStatus|keyof typeof google.ads.googleads.v8.enums.ProductBiddingCategoryStatusEnum.ProductBiddingCategoryStatus);

                        /** ProductBiddingCategoryConstant language_code. */
                        public language_code?: (string|null);

                        /** ProductBiddingCategoryConstant localized_name. */
                        public localized_name?: (string|null);

                        /** ProductBiddingCategoryConstant _id. */
                        public _id?: "id";

                        /** ProductBiddingCategoryConstant _country_code. */
                        public _country_code?: "country_code";

                        /** ProductBiddingCategoryConstant _product_bidding_category_constant_parent. */
                        public _product_bidding_category_constant_parent?: "product_bidding_category_constant_parent";

                        /** ProductBiddingCategoryConstant _language_code. */
                        public _language_code?: "language_code";

                        /** ProductBiddingCategoryConstant _localized_name. */
                        public _localized_name?: "localized_name";

                        /**
                         * Creates a new ProductBiddingCategoryConstant instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductBiddingCategoryConstant instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IProductBiddingCategoryConstant): google.ads.googleads.v8.resources.ProductBiddingCategoryConstant;

                        /**
                         * Encodes the specified ProductBiddingCategoryConstant message. Does not implicitly {@link google.ads.googleads.v8.resources.ProductBiddingCategoryConstant.verify|verify} messages.
                         * @param m ProductBiddingCategoryConstant message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IProductBiddingCategoryConstant, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductBiddingCategoryConstant message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.ProductBiddingCategoryConstant.verify|verify} messages.
                         * @param message ProductBiddingCategoryConstant message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.resources.IProductBiddingCategoryConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductBiddingCategoryConstant message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns ProductBiddingCategoryConstant
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.ProductBiddingCategoryConstant;

                        /**
                         * Decodes a ProductBiddingCategoryConstant message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductBiddingCategoryConstant
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.ProductBiddingCategoryConstant;

                        /**
                         * Verifies a ProductBiddingCategoryConstant message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductBiddingCategoryConstant message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ProductBiddingCategoryConstant
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ProductBiddingCategoryConstant;

                        /**
                         * Creates a plain object from a ProductBiddingCategoryConstant message. Also converts values to other types if specified.
                         * @param m ProductBiddingCategoryConstant
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.ProductBiddingCategoryConstant, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductBiddingCategoryConstant to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.resources.IProductGroupView): google.ads.googleads.v8.resources.ProductGroupView;

                        /**
                         * Encodes the specified ProductGroupView message. Does not implicitly {@link google.ads.googleads.v8.resources.ProductGroupView.verify|verify} messages.
                         * @param m ProductGroupView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IProductGroupView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductGroupView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IProductGroupView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductGroupView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.ProductGroupView;

                        /**
                         * Verifies a ProductGroupView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductGroupView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ProductGroupView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ProductGroupView;

                        /**
                         * Creates a plain object from a ProductGroupView message. Also converts values to other types if specified.
                         * @param m ProductGroupView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.ProductGroupView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductGroupView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a Recommendation. */
                    interface IRecommendation {

                        /** Recommendation resource_name */
                        resource_name?: (string|null);

                        /** Recommendation type */
                        type?: (google.ads.googleads.v8.enums.RecommendationTypeEnum.RecommendationType|keyof typeof google.ads.googleads.v8.enums.RecommendationTypeEnum.RecommendationType|null);

                        /** Recommendation impact */
                        impact?: (google.ads.googleads.v8.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 campaign_budget_recommendation */
                        campaign_budget_recommendation?: (google.ads.googleads.v8.resources.Recommendation.ICampaignBudgetRecommendation|null);

                        /** Recommendation forecasting_campaign_budget_recommendation */
                        forecasting_campaign_budget_recommendation?: (google.ads.googleads.v8.resources.Recommendation.ICampaignBudgetRecommendation|null);

                        /** Recommendation keyword_recommendation */
                        keyword_recommendation?: (google.ads.googleads.v8.resources.Recommendation.IKeywordRecommendation|null);

                        /** Recommendation text_ad_recommendation */
                        text_ad_recommendation?: (google.ads.googleads.v8.resources.Recommendation.ITextAdRecommendation|null);

                        /** Recommendation target_cpa_opt_in_recommendation */
                        target_cpa_opt_in_recommendation?: (google.ads.googleads.v8.resources.Recommendation.ITargetCpaOptInRecommendation|null);

                        /** Recommendation maximize_conversions_opt_in_recommendation */
                        maximize_conversions_opt_in_recommendation?: (google.ads.googleads.v8.resources.Recommendation.IMaximizeConversionsOptInRecommendation|null);

                        /** Recommendation enhanced_cpc_opt_in_recommendation */
                        enhanced_cpc_opt_in_recommendation?: (google.ads.googleads.v8.resources.Recommendation.IEnhancedCpcOptInRecommendation|null);

                        /** Recommendation search_partners_opt_in_recommendation */
                        search_partners_opt_in_recommendation?: (google.ads.googleads.v8.resources.Recommendation.ISearchPartnersOptInRecommendation|null);

                        /** Recommendation maximize_clicks_opt_in_recommendation */
                        maximize_clicks_opt_in_recommendation?: (google.ads.googleads.v8.resources.Recommendation.IMaximizeClicksOptInRecommendation|null);

                        /** Recommendation optimize_ad_rotation_recommendation */
                        optimize_ad_rotation_recommendation?: (google.ads.googleads.v8.resources.Recommendation.IOptimizeAdRotationRecommendation|null);

                        /** Recommendation callout_extension_recommendation */
                        callout_extension_recommendation?: (google.ads.googleads.v8.resources.Recommendation.ICalloutExtensionRecommendation|null);

                        /** Recommendation sitelink_extension_recommendation */
                        sitelink_extension_recommendation?: (google.ads.googleads.v8.resources.Recommendation.ISitelinkExtensionRecommendation|null);

                        /** Recommendation call_extension_recommendation */
                        call_extension_recommendation?: (google.ads.googleads.v8.resources.Recommendation.ICallExtensionRecommendation|null);

                        /** Recommendation keyword_match_type_recommendation */
                        keyword_match_type_recommendation?: (google.ads.googleads.v8.resources.Recommendation.IKeywordMatchTypeRecommendation|null);

                        /** Recommendation move_unused_budget_recommendation */
                        move_unused_budget_recommendation?: (google.ads.googleads.v8.resources.Recommendation.IMoveUnusedBudgetRecommendation|null);

                        /** Recommendation target_roas_opt_in_recommendation */
                        target_roas_opt_in_recommendation?: (google.ads.googleads.v8.resources.Recommendation.ITargetRoasOptInRecommendation|null);

                        /** Recommendation responsive_search_ad_recommendation */
                        responsive_search_ad_recommendation?: (google.ads.googleads.v8.resources.Recommendation.IResponsiveSearchAdRecommendation|null);

                        /** Recommendation marginal_roi_campaign_budget_recommendation */
                        marginal_roi_campaign_budget_recommendation?: (google.ads.googleads.v8.resources.Recommendation.ICampaignBudgetRecommendation|null);
                    }

                    /** Represents a Recommendation. */
                    class Recommendation implements IRecommendation {

                        /**
                         * Constructs a new Recommendation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IRecommendation);

                        /** Recommendation resource_name. */
                        public resource_name: string;

                        /** Recommendation type. */
                        public type: (google.ads.googleads.v8.enums.RecommendationTypeEnum.RecommendationType|keyof typeof google.ads.googleads.v8.enums.RecommendationTypeEnum.RecommendationType);

                        /** Recommendation impact. */
                        public impact?: (google.ads.googleads.v8.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 campaign_budget_recommendation. */
                        public campaign_budget_recommendation?: (google.ads.googleads.v8.resources.Recommendation.ICampaignBudgetRecommendation|null);

                        /** Recommendation forecasting_campaign_budget_recommendation. */
                        public forecasting_campaign_budget_recommendation?: (google.ads.googleads.v8.resources.Recommendation.ICampaignBudgetRecommendation|null);

                        /** Recommendation keyword_recommendation. */
                        public keyword_recommendation?: (google.ads.googleads.v8.resources.Recommendation.IKeywordRecommendation|null);

                        /** Recommendation text_ad_recommendation. */
                        public text_ad_recommendation?: (google.ads.googleads.v8.resources.Recommendation.ITextAdRecommendation|null);

                        /** Recommendation target_cpa_opt_in_recommendation. */
                        public target_cpa_opt_in_recommendation?: (google.ads.googleads.v8.resources.Recommendation.ITargetCpaOptInRecommendation|null);

                        /** Recommendation maximize_conversions_opt_in_recommendation. */
                        public maximize_conversions_opt_in_recommendation?: (google.ads.googleads.v8.resources.Recommendation.IMaximizeConversionsOptInRecommendation|null);

                        /** Recommendation enhanced_cpc_opt_in_recommendation. */
                        public enhanced_cpc_opt_in_recommendation?: (google.ads.googleads.v8.resources.Recommendation.IEnhancedCpcOptInRecommendation|null);

                        /** Recommendation search_partners_opt_in_recommendation. */
                        public search_partners_opt_in_recommendation?: (google.ads.googleads.v8.resources.Recommendation.ISearchPartnersOptInRecommendation|null);

                        /** Recommendation maximize_clicks_opt_in_recommendation. */
                        public maximize_clicks_opt_in_recommendation?: (google.ads.googleads.v8.resources.Recommendation.IMaximizeClicksOptInRecommendation|null);

                        /** Recommendation optimize_ad_rotation_recommendation. */
                        public optimize_ad_rotation_recommendation?: (google.ads.googleads.v8.resources.Recommendation.IOptimizeAdRotationRecommendation|null);

                        /** Recommendation callout_extension_recommendation. */
                        public callout_extension_recommendation?: (google.ads.googleads.v8.resources.Recommendation.ICalloutExtensionRecommendation|null);

                        /** Recommendation sitelink_extension_recommendation. */
                        public sitelink_extension_recommendation?: (google.ads.googleads.v8.resources.Recommendation.ISitelinkExtensionRecommendation|null);

                        /** Recommendation call_extension_recommendation. */
                        public call_extension_recommendation?: (google.ads.googleads.v8.resources.Recommendation.ICallExtensionRecommendation|null);

                        /** Recommendation keyword_match_type_recommendation. */
                        public keyword_match_type_recommendation?: (google.ads.googleads.v8.resources.Recommendation.IKeywordMatchTypeRecommendation|null);

                        /** Recommendation move_unused_budget_recommendation. */
                        public move_unused_budget_recommendation?: (google.ads.googleads.v8.resources.Recommendation.IMoveUnusedBudgetRecommendation|null);

                        /** Recommendation target_roas_opt_in_recommendation. */
                        public target_roas_opt_in_recommendation?: (google.ads.googleads.v8.resources.Recommendation.ITargetRoasOptInRecommendation|null);

                        /** Recommendation responsive_search_ad_recommendation. */
                        public responsive_search_ad_recommendation?: (google.ads.googleads.v8.resources.Recommendation.IResponsiveSearchAdRecommendation|null);

                        /** Recommendation marginal_roi_campaign_budget_recommendation. */
                        public marginal_roi_campaign_budget_recommendation?: (google.ads.googleads.v8.resources.Recommendation.ICampaignBudgetRecommendation|null);

                        /** Recommendation _campaign_budget. */
                        public _campaign_budget?: "campaign_budget";

                        /** Recommendation _campaign. */
                        public _campaign?: "campaign";

                        /** Recommendation _ad_group. */
                        public _ad_group?: "ad_group";

                        /** Recommendation _dismissed. */
                        public _dismissed?: "dismissed";

                        /** 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"|"callout_extension_recommendation"|"sitelink_extension_recommendation"|"call_extension_recommendation"|"keyword_match_type_recommendation"|"move_unused_budget_recommendation"|"target_roas_opt_in_recommendation"|"responsive_search_ad_recommendation"|"marginal_roi_campaign_budget_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.v8.resources.IRecommendation): google.ads.googleads.v8.resources.Recommendation;

                        /**
                         * Encodes the specified Recommendation message. Does not implicitly {@link google.ads.googleads.v8.resources.Recommendation.verify|verify} messages.
                         * @param m Recommendation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IRecommendation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Recommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Recommendation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Recommendation;

                        /**
                         * Verifies a Recommendation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Recommendation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns Recommendation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Recommendation;

                        /**
                         * Creates a plain object from a Recommendation message. Also converts values to other types if specified.
                         * @param m Recommendation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.Recommendation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Recommendation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace Recommendation {

                        /** Properties of a RecommendationImpact. */
                        interface IRecommendationImpact {

                            /** RecommendationImpact base_metrics */
                            base_metrics?: (google.ads.googleads.v8.resources.Recommendation.IRecommendationMetrics|null);

                            /** RecommendationImpact potential_metrics */
                            potential_metrics?: (google.ads.googleads.v8.resources.Recommendation.IRecommendationMetrics|null);
                        }

                        /** Represents a RecommendationImpact. */
                        class RecommendationImpact implements IRecommendationImpact {

                            /**
                             * Constructs a new RecommendationImpact.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.Recommendation.IRecommendationImpact);

                            /** RecommendationImpact base_metrics. */
                            public base_metrics?: (google.ads.googleads.v8.resources.Recommendation.IRecommendationMetrics|null);

                            /** RecommendationImpact potential_metrics. */
                            public potential_metrics?: (google.ads.googleads.v8.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.v8.resources.Recommendation.IRecommendationImpact): google.ads.googleads.v8.resources.Recommendation.RecommendationImpact;

                            /**
                             * Encodes the specified RecommendationImpact message. Does not implicitly {@link google.ads.googleads.v8.resources.Recommendation.RecommendationImpact.verify|verify} messages.
                             * @param m RecommendationImpact message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Recommendation.IRecommendationImpact, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified RecommendationImpact message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Recommendation.IRecommendationImpact, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a RecommendationImpact message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Recommendation.RecommendationImpact;

                            /**
                             * Verifies a RecommendationImpact message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a RecommendationImpact message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns RecommendationImpact
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Recommendation.RecommendationImpact;

                            /**
                             * Creates a plain object from a RecommendationImpact message. Also converts values to other types if specified.
                             * @param m RecommendationImpact
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Recommendation.RecommendationImpact, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this RecommendationImpact to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** 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 video_views */
                            video_views?: (number|null);
                        }

                        /** Represents a RecommendationMetrics. */
                        class RecommendationMetrics implements IRecommendationMetrics {

                            /**
                             * Constructs a new RecommendationMetrics.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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 video_views. */
                            public video_views?: (number|null);

                            /** RecommendationMetrics _impressions. */
                            public _impressions?: "impressions";

                            /** RecommendationMetrics _clicks. */
                            public _clicks?: "clicks";

                            /** RecommendationMetrics _cost_micros. */
                            public _cost_micros?: "cost_micros";

                            /** RecommendationMetrics _conversions. */
                            public _conversions?: "conversions";

                            /** RecommendationMetrics _video_views. */
                            public _video_views?: "video_views";

                            /**
                             * Creates a new RecommendationMetrics instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns RecommendationMetrics instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.Recommendation.IRecommendationMetrics): google.ads.googleads.v8.resources.Recommendation.RecommendationMetrics;

                            /**
                             * Encodes the specified RecommendationMetrics message. Does not implicitly {@link google.ads.googleads.v8.resources.Recommendation.RecommendationMetrics.verify|verify} messages.
                             * @param m RecommendationMetrics message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Recommendation.IRecommendationMetrics, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified RecommendationMetrics message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Recommendation.IRecommendationMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a RecommendationMetrics message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Recommendation.RecommendationMetrics;

                            /**
                             * Verifies a RecommendationMetrics message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a RecommendationMetrics message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns RecommendationMetrics
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Recommendation.RecommendationMetrics;

                            /**
                             * Creates a plain object from a RecommendationMetrics message. Also converts values to other types if specified.
                             * @param m RecommendationMetrics
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Recommendation.RecommendationMetrics, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this RecommendationMetrics to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** 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.v8.resources.Recommendation.CampaignBudgetRecommendation.ICampaignBudgetRecommendationOption[]|null);
                        }

                        /** Represents a CampaignBudgetRecommendation. */
                        class CampaignBudgetRecommendation implements ICampaignBudgetRecommendation {

                            /**
                             * Constructs a new CampaignBudgetRecommendation.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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.v8.resources.Recommendation.CampaignBudgetRecommendation.ICampaignBudgetRecommendationOption[];

                            /** CampaignBudgetRecommendation _current_budget_amount_micros. */
                            public _current_budget_amount_micros?: "current_budget_amount_micros";

                            /** CampaignBudgetRecommendation _recommended_budget_amount_micros. */
                            public _recommended_budget_amount_micros?: "recommended_budget_amount_micros";

                            /**
                             * Creates a new CampaignBudgetRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns CampaignBudgetRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.Recommendation.ICampaignBudgetRecommendation): google.ads.googleads.v8.resources.Recommendation.CampaignBudgetRecommendation;

                            /**
                             * Encodes the specified CampaignBudgetRecommendation message. Does not implicitly {@link google.ads.googleads.v8.resources.Recommendation.CampaignBudgetRecommendation.verify|verify} messages.
                             * @param m CampaignBudgetRecommendation message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Recommendation.ICampaignBudgetRecommendation, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified CampaignBudgetRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Recommendation.ICampaignBudgetRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a CampaignBudgetRecommendation message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Recommendation.CampaignBudgetRecommendation;

                            /**
                             * Verifies a CampaignBudgetRecommendation message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a CampaignBudgetRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns CampaignBudgetRecommendation
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Recommendation.CampaignBudgetRecommendation;

                            /**
                             * Creates a plain object from a CampaignBudgetRecommendation message. Also converts values to other types if specified.
                             * @param m CampaignBudgetRecommendation
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Recommendation.CampaignBudgetRecommendation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this CampaignBudgetRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        namespace CampaignBudgetRecommendation {

                            /** Properties of a CampaignBudgetRecommendationOption. */
                            interface ICampaignBudgetRecommendationOption {

                                /** CampaignBudgetRecommendationOption budget_amount_micros */
                                budget_amount_micros?: (number|null);

                                /** CampaignBudgetRecommendationOption impact */
                                impact?: (google.ads.googleads.v8.resources.Recommendation.IRecommendationImpact|null);
                            }

                            /** Represents a CampaignBudgetRecommendationOption. */
                            class CampaignBudgetRecommendationOption implements ICampaignBudgetRecommendationOption {

                                /**
                                 * Constructs a new CampaignBudgetRecommendationOption.
                                 * @param [p] Properties to set
                                 */
                                constructor(p?: google.ads.googleads.v8.resources.Recommendation.CampaignBudgetRecommendation.ICampaignBudgetRecommendationOption);

                                /** CampaignBudgetRecommendationOption budget_amount_micros. */
                                public budget_amount_micros?: (number|null);

                                /** CampaignBudgetRecommendationOption impact. */
                                public impact?: (google.ads.googleads.v8.resources.Recommendation.IRecommendationImpact|null);

                                /** CampaignBudgetRecommendationOption _budget_amount_micros. */
                                public _budget_amount_micros?: "budget_amount_micros";

                                /**
                                 * Creates a new CampaignBudgetRecommendationOption instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns CampaignBudgetRecommendationOption instance
                                 */
                                public static create(properties?: google.ads.googleads.v8.resources.Recommendation.CampaignBudgetRecommendation.ICampaignBudgetRecommendationOption): google.ads.googleads.v8.resources.Recommendation.CampaignBudgetRecommendation.CampaignBudgetRecommendationOption;

                                /**
                                 * Encodes the specified CampaignBudgetRecommendationOption message. Does not implicitly {@link google.ads.googleads.v8.resources.Recommendation.CampaignBudgetRecommendation.CampaignBudgetRecommendationOption.verify|verify} messages.
                                 * @param m CampaignBudgetRecommendationOption message or plain object to encode
                                 * @param [w] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(m: google.ads.googleads.v8.resources.Recommendation.CampaignBudgetRecommendation.ICampaignBudgetRecommendationOption, w?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified CampaignBudgetRecommendationOption message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Recommendation.CampaignBudgetRecommendation.ICampaignBudgetRecommendationOption, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a CampaignBudgetRecommendationOption message from the specified reader or buffer.
                                 * @param r Reader or buffer to decode from
                                 * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Recommendation.CampaignBudgetRecommendation.CampaignBudgetRecommendationOption;

                                /**
                                 * Verifies a CampaignBudgetRecommendationOption message.
                                 * @param m Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(m: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a CampaignBudgetRecommendationOption message from a plain object. Also converts values to their respective internal types.
                                 * @param d Plain object
                                 * @returns CampaignBudgetRecommendationOption
                                 */
                                public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Recommendation.CampaignBudgetRecommendation.CampaignBudgetRecommendationOption;

                                /**
                                 * Creates a plain object from a CampaignBudgetRecommendationOption message. Also converts values to other types if specified.
                                 * @param m CampaignBudgetRecommendationOption
                                 * @param [o] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(m: google.ads.googleads.v8.resources.Recommendation.CampaignBudgetRecommendation.CampaignBudgetRecommendationOption, o?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this CampaignBudgetRecommendationOption to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };
                            }
                        }

                        /** Properties of a KeywordRecommendation. */
                        interface IKeywordRecommendation {

                            /** KeywordRecommendation keyword */
                            keyword?: (google.ads.googleads.v8.common.IKeywordInfo|null);

                            /** KeywordRecommendation recommended_cpc_bid_micros */
                            recommended_cpc_bid_micros?: (number|null);
                        }

                        /** Represents a KeywordRecommendation. */
                        class KeywordRecommendation implements IKeywordRecommendation {

                            /**
                             * Constructs a new KeywordRecommendation.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.Recommendation.IKeywordRecommendation);

                            /** KeywordRecommendation keyword. */
                            public keyword?: (google.ads.googleads.v8.common.IKeywordInfo|null);

                            /** KeywordRecommendation recommended_cpc_bid_micros. */
                            public recommended_cpc_bid_micros?: (number|null);

                            /** KeywordRecommendation _recommended_cpc_bid_micros. */
                            public _recommended_cpc_bid_micros?: "recommended_cpc_bid_micros";

                            /**
                             * Creates a new KeywordRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns KeywordRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.Recommendation.IKeywordRecommendation): google.ads.googleads.v8.resources.Recommendation.KeywordRecommendation;

                            /**
                             * Encodes the specified KeywordRecommendation message. Does not implicitly {@link google.ads.googleads.v8.resources.Recommendation.KeywordRecommendation.verify|verify} messages.
                             * @param m KeywordRecommendation message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Recommendation.IKeywordRecommendation, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified KeywordRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Recommendation.IKeywordRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a KeywordRecommendation message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Recommendation.KeywordRecommendation;

                            /**
                             * Verifies a KeywordRecommendation message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a KeywordRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns KeywordRecommendation
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Recommendation.KeywordRecommendation;

                            /**
                             * Creates a plain object from a KeywordRecommendation message. Also converts values to other types if specified.
                             * @param m KeywordRecommendation
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Recommendation.KeywordRecommendation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this KeywordRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a KeywordMatchTypeRecommendation. */
                        interface IKeywordMatchTypeRecommendation {

                            /** KeywordMatchTypeRecommendation keyword */
                            keyword?: (google.ads.googleads.v8.common.IKeywordInfo|null);

                            /** KeywordMatchTypeRecommendation recommended_match_type */
                            recommended_match_type?: (google.ads.googleads.v8.enums.KeywordMatchTypeEnum.KeywordMatchType|keyof typeof google.ads.googleads.v8.enums.KeywordMatchTypeEnum.KeywordMatchType|null);
                        }

                        /** Represents a KeywordMatchTypeRecommendation. */
                        class KeywordMatchTypeRecommendation implements IKeywordMatchTypeRecommendation {

                            /**
                             * Constructs a new KeywordMatchTypeRecommendation.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.Recommendation.IKeywordMatchTypeRecommendation);

                            /** KeywordMatchTypeRecommendation keyword. */
                            public keyword?: (google.ads.googleads.v8.common.IKeywordInfo|null);

                            /** KeywordMatchTypeRecommendation recommended_match_type. */
                            public recommended_match_type: (google.ads.googleads.v8.enums.KeywordMatchTypeEnum.KeywordMatchType|keyof typeof google.ads.googleads.v8.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.v8.resources.Recommendation.IKeywordMatchTypeRecommendation): google.ads.googleads.v8.resources.Recommendation.KeywordMatchTypeRecommendation;

                            /**
                             * Encodes the specified KeywordMatchTypeRecommendation message. Does not implicitly {@link google.ads.googleads.v8.resources.Recommendation.KeywordMatchTypeRecommendation.verify|verify} messages.
                             * @param m KeywordMatchTypeRecommendation message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Recommendation.IKeywordMatchTypeRecommendation, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified KeywordMatchTypeRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Recommendation.IKeywordMatchTypeRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a KeywordMatchTypeRecommendation message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Recommendation.KeywordMatchTypeRecommendation;

                            /**
                             * Verifies a KeywordMatchTypeRecommendation message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a KeywordMatchTypeRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns KeywordMatchTypeRecommendation
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Recommendation.KeywordMatchTypeRecommendation;

                            /**
                             * Creates a plain object from a KeywordMatchTypeRecommendation message. Also converts values to other types if specified.
                             * @param m KeywordMatchTypeRecommendation
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Recommendation.KeywordMatchTypeRecommendation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this KeywordMatchTypeRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a TextAdRecommendation. */
                        interface ITextAdRecommendation {

                            /** TextAdRecommendation ad */
                            ad?: (google.ads.googleads.v8.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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.Recommendation.ITextAdRecommendation);

                            /** TextAdRecommendation ad. */
                            public ad?: (google.ads.googleads.v8.resources.IAd|null);

                            /** TextAdRecommendation creation_date. */
                            public creation_date?: (string|null);

                            /** TextAdRecommendation auto_apply_date. */
                            public auto_apply_date?: (string|null);

                            /** TextAdRecommendation _creation_date. */
                            public _creation_date?: "creation_date";

                            /** TextAdRecommendation _auto_apply_date. */
                            public _auto_apply_date?: "auto_apply_date";

                            /**
                             * Creates a new TextAdRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TextAdRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.Recommendation.ITextAdRecommendation): google.ads.googleads.v8.resources.Recommendation.TextAdRecommendation;

                            /**
                             * Encodes the specified TextAdRecommendation message. Does not implicitly {@link google.ads.googleads.v8.resources.Recommendation.TextAdRecommendation.verify|verify} messages.
                             * @param m TextAdRecommendation message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Recommendation.ITextAdRecommendation, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TextAdRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Recommendation.ITextAdRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TextAdRecommendation message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Recommendation.TextAdRecommendation;

                            /**
                             * Verifies a TextAdRecommendation message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TextAdRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns TextAdRecommendation
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Recommendation.TextAdRecommendation;

                            /**
                             * Creates a plain object from a TextAdRecommendation message. Also converts values to other types if specified.
                             * @param m TextAdRecommendation
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Recommendation.TextAdRecommendation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TextAdRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a MoveUnusedBudgetRecommendation. */
                        interface IMoveUnusedBudgetRecommendation {

                            /** MoveUnusedBudgetRecommendation excess_campaign_budget */
                            excess_campaign_budget?: (string|null);

                            /** MoveUnusedBudgetRecommendation budget_recommendation */
                            budget_recommendation?: (google.ads.googleads.v8.resources.Recommendation.ICampaignBudgetRecommendation|null);
                        }

                        /** Represents a MoveUnusedBudgetRecommendation. */
                        class MoveUnusedBudgetRecommendation implements IMoveUnusedBudgetRecommendation {

                            /**
                             * Constructs a new MoveUnusedBudgetRecommendation.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.Recommendation.IMoveUnusedBudgetRecommendation);

                            /** MoveUnusedBudgetRecommendation excess_campaign_budget. */
                            public excess_campaign_budget?: (string|null);

                            /** MoveUnusedBudgetRecommendation budget_recommendation. */
                            public budget_recommendation?: (google.ads.googleads.v8.resources.Recommendation.ICampaignBudgetRecommendation|null);

                            /** MoveUnusedBudgetRecommendation _excess_campaign_budget. */
                            public _excess_campaign_budget?: "excess_campaign_budget";

                            /**
                             * Creates a new MoveUnusedBudgetRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns MoveUnusedBudgetRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.Recommendation.IMoveUnusedBudgetRecommendation): google.ads.googleads.v8.resources.Recommendation.MoveUnusedBudgetRecommendation;

                            /**
                             * Encodes the specified MoveUnusedBudgetRecommendation message. Does not implicitly {@link google.ads.googleads.v8.resources.Recommendation.MoveUnusedBudgetRecommendation.verify|verify} messages.
                             * @param m MoveUnusedBudgetRecommendation message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Recommendation.IMoveUnusedBudgetRecommendation, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified MoveUnusedBudgetRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Recommendation.IMoveUnusedBudgetRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a MoveUnusedBudgetRecommendation message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Recommendation.MoveUnusedBudgetRecommendation;

                            /**
                             * Verifies a MoveUnusedBudgetRecommendation message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a MoveUnusedBudgetRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns MoveUnusedBudgetRecommendation
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Recommendation.MoveUnusedBudgetRecommendation;

                            /**
                             * Creates a plain object from a MoveUnusedBudgetRecommendation message. Also converts values to other types if specified.
                             * @param m MoveUnusedBudgetRecommendation
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Recommendation.MoveUnusedBudgetRecommendation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this MoveUnusedBudgetRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a TargetCpaOptInRecommendation. */
                        interface ITargetCpaOptInRecommendation {

                            /** TargetCpaOptInRecommendation options */
                            options?: (google.ads.googleads.v8.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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.Recommendation.ITargetCpaOptInRecommendation);

                            /** TargetCpaOptInRecommendation options. */
                            public options: google.ads.googleads.v8.resources.Recommendation.TargetCpaOptInRecommendation.ITargetCpaOptInRecommendationOption[];

                            /** TargetCpaOptInRecommendation recommended_target_cpa_micros. */
                            public recommended_target_cpa_micros?: (number|null);

                            /** TargetCpaOptInRecommendation _recommended_target_cpa_micros. */
                            public _recommended_target_cpa_micros?: "recommended_target_cpa_micros";

                            /**
                             * Creates a new TargetCpaOptInRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TargetCpaOptInRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.Recommendation.ITargetCpaOptInRecommendation): google.ads.googleads.v8.resources.Recommendation.TargetCpaOptInRecommendation;

                            /**
                             * Encodes the specified TargetCpaOptInRecommendation message. Does not implicitly {@link google.ads.googleads.v8.resources.Recommendation.TargetCpaOptInRecommendation.verify|verify} messages.
                             * @param m TargetCpaOptInRecommendation message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Recommendation.ITargetCpaOptInRecommendation, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TargetCpaOptInRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Recommendation.ITargetCpaOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TargetCpaOptInRecommendation message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Recommendation.TargetCpaOptInRecommendation;

                            /**
                             * Verifies a TargetCpaOptInRecommendation message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TargetCpaOptInRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns TargetCpaOptInRecommendation
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Recommendation.TargetCpaOptInRecommendation;

                            /**
                             * Creates a plain object from a TargetCpaOptInRecommendation message. Also converts values to other types if specified.
                             * @param m TargetCpaOptInRecommendation
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Recommendation.TargetCpaOptInRecommendation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TargetCpaOptInRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        namespace TargetCpaOptInRecommendation {

                            /** Properties of a TargetCpaOptInRecommendationOption. */
                            interface ITargetCpaOptInRecommendationOption {

                                /** TargetCpaOptInRecommendationOption goal */
                                goal?: (google.ads.googleads.v8.enums.TargetCpaOptInRecommendationGoalEnum.TargetCpaOptInRecommendationGoal|keyof typeof google.ads.googleads.v8.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.v8.resources.Recommendation.IRecommendationImpact|null);
                            }

                            /** Represents a TargetCpaOptInRecommendationOption. */
                            class TargetCpaOptInRecommendationOption implements ITargetCpaOptInRecommendationOption {

                                /**
                                 * Constructs a new TargetCpaOptInRecommendationOption.
                                 * @param [p] Properties to set
                                 */
                                constructor(p?: google.ads.googleads.v8.resources.Recommendation.TargetCpaOptInRecommendation.ITargetCpaOptInRecommendationOption);

                                /** TargetCpaOptInRecommendationOption goal. */
                                public goal: (google.ads.googleads.v8.enums.TargetCpaOptInRecommendationGoalEnum.TargetCpaOptInRecommendationGoal|keyof typeof google.ads.googleads.v8.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.v8.resources.Recommendation.IRecommendationImpact|null);

                                /** TargetCpaOptInRecommendationOption _target_cpa_micros. */
                                public _target_cpa_micros?: "target_cpa_micros";

                                /** TargetCpaOptInRecommendationOption _required_campaign_budget_amount_micros. */
                                public _required_campaign_budget_amount_micros?: "required_campaign_budget_amount_micros";

                                /**
                                 * Creates a new TargetCpaOptInRecommendationOption instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns TargetCpaOptInRecommendationOption instance
                                 */
                                public static create(properties?: google.ads.googleads.v8.resources.Recommendation.TargetCpaOptInRecommendation.ITargetCpaOptInRecommendationOption): google.ads.googleads.v8.resources.Recommendation.TargetCpaOptInRecommendation.TargetCpaOptInRecommendationOption;

                                /**
                                 * Encodes the specified TargetCpaOptInRecommendationOption message. Does not implicitly {@link google.ads.googleads.v8.resources.Recommendation.TargetCpaOptInRecommendation.TargetCpaOptInRecommendationOption.verify|verify} messages.
                                 * @param m TargetCpaOptInRecommendationOption message or plain object to encode
                                 * @param [w] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(m: google.ads.googleads.v8.resources.Recommendation.TargetCpaOptInRecommendation.ITargetCpaOptInRecommendationOption, w?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified TargetCpaOptInRecommendationOption message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Recommendation.TargetCpaOptInRecommendation.ITargetCpaOptInRecommendationOption, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a TargetCpaOptInRecommendationOption message from the specified reader or buffer.
                                 * @param r Reader or buffer to decode from
                                 * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Recommendation.TargetCpaOptInRecommendation.TargetCpaOptInRecommendationOption;

                                /**
                                 * Verifies a TargetCpaOptInRecommendationOption message.
                                 * @param m Plain object to verify
                                 * @returns `null` if valid, otherwise the reason why it is not
                                 */
                                public static verify(m: { [k: string]: any }): (string|null);

                                /**
                                 * Creates a TargetCpaOptInRecommendationOption message from a plain object. Also converts values to their respective internal types.
                                 * @param d Plain object
                                 * @returns TargetCpaOptInRecommendationOption
                                 */
                                public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Recommendation.TargetCpaOptInRecommendation.TargetCpaOptInRecommendationOption;

                                /**
                                 * Creates a plain object from a TargetCpaOptInRecommendationOption message. Also converts values to other types if specified.
                                 * @param m TargetCpaOptInRecommendationOption
                                 * @param [o] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(m: google.ads.googleads.v8.resources.Recommendation.TargetCpaOptInRecommendation.TargetCpaOptInRecommendationOption, o?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this TargetCpaOptInRecommendationOption to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };
                            }
                        }

                        /** Properties of a ResponsiveSearchAdRecommendation. */
                        interface IResponsiveSearchAdRecommendation {

                            /** ResponsiveSearchAdRecommendation ad */
                            ad?: (google.ads.googleads.v8.resources.IAd|null);
                        }

                        /** Represents a ResponsiveSearchAdRecommendation. */
                        class ResponsiveSearchAdRecommendation implements IResponsiveSearchAdRecommendation {

                            /**
                             * Constructs a new ResponsiveSearchAdRecommendation.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.Recommendation.IResponsiveSearchAdRecommendation);

                            /** ResponsiveSearchAdRecommendation ad. */
                            public ad?: (google.ads.googleads.v8.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.v8.resources.Recommendation.IResponsiveSearchAdRecommendation): google.ads.googleads.v8.resources.Recommendation.ResponsiveSearchAdRecommendation;

                            /**
                             * Encodes the specified ResponsiveSearchAdRecommendation message. Does not implicitly {@link google.ads.googleads.v8.resources.Recommendation.ResponsiveSearchAdRecommendation.verify|verify} messages.
                             * @param m ResponsiveSearchAdRecommendation message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Recommendation.IResponsiveSearchAdRecommendation, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ResponsiveSearchAdRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Recommendation.IResponsiveSearchAdRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ResponsiveSearchAdRecommendation message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Recommendation.ResponsiveSearchAdRecommendation;

                            /**
                             * Verifies a ResponsiveSearchAdRecommendation message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ResponsiveSearchAdRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns ResponsiveSearchAdRecommendation
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Recommendation.ResponsiveSearchAdRecommendation;

                            /**
                             * Creates a plain object from a ResponsiveSearchAdRecommendation message. Also converts values to other types if specified.
                             * @param m ResponsiveSearchAdRecommendation
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Recommendation.ResponsiveSearchAdRecommendation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ResponsiveSearchAdRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** 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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.Recommendation.IMaximizeConversionsOptInRecommendation);

                            /** MaximizeConversionsOptInRecommendation recommended_budget_amount_micros. */
                            public recommended_budget_amount_micros?: (number|null);

                            /** MaximizeConversionsOptInRecommendation _recommended_budget_amount_micros. */
                            public _recommended_budget_amount_micros?: "recommended_budget_amount_micros";

                            /**
                             * Creates a new MaximizeConversionsOptInRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns MaximizeConversionsOptInRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.Recommendation.IMaximizeConversionsOptInRecommendation): google.ads.googleads.v8.resources.Recommendation.MaximizeConversionsOptInRecommendation;

                            /**
                             * Encodes the specified MaximizeConversionsOptInRecommendation message. Does not implicitly {@link google.ads.googleads.v8.resources.Recommendation.MaximizeConversionsOptInRecommendation.verify|verify} messages.
                             * @param m MaximizeConversionsOptInRecommendation message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Recommendation.IMaximizeConversionsOptInRecommendation, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified MaximizeConversionsOptInRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Recommendation.IMaximizeConversionsOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a MaximizeConversionsOptInRecommendation message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Recommendation.MaximizeConversionsOptInRecommendation;

                            /**
                             * Verifies a MaximizeConversionsOptInRecommendation message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a MaximizeConversionsOptInRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns MaximizeConversionsOptInRecommendation
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Recommendation.MaximizeConversionsOptInRecommendation;

                            /**
                             * Creates a plain object from a MaximizeConversionsOptInRecommendation message. Also converts values to other types if specified.
                             * @param m MaximizeConversionsOptInRecommendation
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Recommendation.MaximizeConversionsOptInRecommendation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this MaximizeConversionsOptInRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a CalloutExtensionRecommendation. */
                        interface ICalloutExtensionRecommendation {

                            /** CalloutExtensionRecommendation recommended_extensions */
                            recommended_extensions?: (google.ads.googleads.v8.common.ICalloutFeedItem[]|null);
                        }

                        /** Represents a CalloutExtensionRecommendation. */
                        class CalloutExtensionRecommendation implements ICalloutExtensionRecommendation {

                            /**
                             * Constructs a new CalloutExtensionRecommendation.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.Recommendation.ICalloutExtensionRecommendation);

                            /** CalloutExtensionRecommendation recommended_extensions. */
                            public recommended_extensions: google.ads.googleads.v8.common.ICalloutFeedItem[];

                            /**
                             * Creates a new CalloutExtensionRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns CalloutExtensionRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.Recommendation.ICalloutExtensionRecommendation): google.ads.googleads.v8.resources.Recommendation.CalloutExtensionRecommendation;

                            /**
                             * Encodes the specified CalloutExtensionRecommendation message. Does not implicitly {@link google.ads.googleads.v8.resources.Recommendation.CalloutExtensionRecommendation.verify|verify} messages.
                             * @param m CalloutExtensionRecommendation message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Recommendation.ICalloutExtensionRecommendation, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified CalloutExtensionRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.Recommendation.CalloutExtensionRecommendation.verify|verify} messages.
                             * @param message CalloutExtensionRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v8.resources.Recommendation.ICalloutExtensionRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a CalloutExtensionRecommendation message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] Message length if known beforehand
                             * @returns CalloutExtensionRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.Recommendation.CalloutExtensionRecommendation;

                            /**
                             * Decodes a CalloutExtensionRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns CalloutExtensionRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.Recommendation.CalloutExtensionRecommendation;

                            /**
                             * Verifies a CalloutExtensionRecommendation message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a CalloutExtensionRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns CalloutExtensionRecommendation
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Recommendation.CalloutExtensionRecommendation;

                            /**
                             * Creates a plain object from a CalloutExtensionRecommendation message. Also converts values to other types if specified.
                             * @param m CalloutExtensionRecommendation
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Recommendation.CalloutExtensionRecommendation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this CalloutExtensionRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of an EnhancedCpcOptInRecommendation. */
                        interface IEnhancedCpcOptInRecommendation {
                        }

                        /** Represents an EnhancedCpcOptInRecommendation. */
                        class EnhancedCpcOptInRecommendation implements IEnhancedCpcOptInRecommendation {

                            /**
                             * Constructs a new EnhancedCpcOptInRecommendation.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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.v8.resources.Recommendation.IEnhancedCpcOptInRecommendation): google.ads.googleads.v8.resources.Recommendation.EnhancedCpcOptInRecommendation;

                            /**
                             * Encodes the specified EnhancedCpcOptInRecommendation message. Does not implicitly {@link google.ads.googleads.v8.resources.Recommendation.EnhancedCpcOptInRecommendation.verify|verify} messages.
                             * @param m EnhancedCpcOptInRecommendation message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Recommendation.IEnhancedCpcOptInRecommendation, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified EnhancedCpcOptInRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Recommendation.IEnhancedCpcOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an EnhancedCpcOptInRecommendation message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Recommendation.EnhancedCpcOptInRecommendation;

                            /**
                             * Verifies an EnhancedCpcOptInRecommendation message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates an EnhancedCpcOptInRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns EnhancedCpcOptInRecommendation
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Recommendation.EnhancedCpcOptInRecommendation;

                            /**
                             * Creates a plain object from an EnhancedCpcOptInRecommendation message. Also converts values to other types if specified.
                             * @param m EnhancedCpcOptInRecommendation
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Recommendation.EnhancedCpcOptInRecommendation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this EnhancedCpcOptInRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a SearchPartnersOptInRecommendation. */
                        interface ISearchPartnersOptInRecommendation {
                        }

                        /** Represents a SearchPartnersOptInRecommendation. */
                        class SearchPartnersOptInRecommendation implements ISearchPartnersOptInRecommendation {

                            /**
                             * Constructs a new SearchPartnersOptInRecommendation.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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.v8.resources.Recommendation.ISearchPartnersOptInRecommendation): google.ads.googleads.v8.resources.Recommendation.SearchPartnersOptInRecommendation;

                            /**
                             * Encodes the specified SearchPartnersOptInRecommendation message. Does not implicitly {@link google.ads.googleads.v8.resources.Recommendation.SearchPartnersOptInRecommendation.verify|verify} messages.
                             * @param m SearchPartnersOptInRecommendation message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Recommendation.ISearchPartnersOptInRecommendation, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified SearchPartnersOptInRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Recommendation.ISearchPartnersOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a SearchPartnersOptInRecommendation message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Recommendation.SearchPartnersOptInRecommendation;

                            /**
                             * Verifies a SearchPartnersOptInRecommendation message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a SearchPartnersOptInRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns SearchPartnersOptInRecommendation
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Recommendation.SearchPartnersOptInRecommendation;

                            /**
                             * Creates a plain object from a SearchPartnersOptInRecommendation message. Also converts values to other types if specified.
                             * @param m SearchPartnersOptInRecommendation
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Recommendation.SearchPartnersOptInRecommendation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this SearchPartnersOptInRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of an OptimizeAdRotationRecommendation. */
                        interface IOptimizeAdRotationRecommendation {
                        }

                        /** Represents an OptimizeAdRotationRecommendation. */
                        class OptimizeAdRotationRecommendation implements IOptimizeAdRotationRecommendation {

                            /**
                             * Constructs a new OptimizeAdRotationRecommendation.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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.v8.resources.Recommendation.IOptimizeAdRotationRecommendation): google.ads.googleads.v8.resources.Recommendation.OptimizeAdRotationRecommendation;

                            /**
                             * Encodes the specified OptimizeAdRotationRecommendation message. Does not implicitly {@link google.ads.googleads.v8.resources.Recommendation.OptimizeAdRotationRecommendation.verify|verify} messages.
                             * @param m OptimizeAdRotationRecommendation message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Recommendation.IOptimizeAdRotationRecommendation, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified OptimizeAdRotationRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Recommendation.IOptimizeAdRotationRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an OptimizeAdRotationRecommendation message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Recommendation.OptimizeAdRotationRecommendation;

                            /**
                             * Verifies an OptimizeAdRotationRecommendation message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates an OptimizeAdRotationRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns OptimizeAdRotationRecommendation
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Recommendation.OptimizeAdRotationRecommendation;

                            /**
                             * Creates a plain object from an OptimizeAdRotationRecommendation message. Also converts values to other types if specified.
                             * @param m OptimizeAdRotationRecommendation
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Recommendation.OptimizeAdRotationRecommendation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this OptimizeAdRotationRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** 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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.Recommendation.IMaximizeClicksOptInRecommendation);

                            /** MaximizeClicksOptInRecommendation recommended_budget_amount_micros. */
                            public recommended_budget_amount_micros?: (number|null);

                            /** MaximizeClicksOptInRecommendation _recommended_budget_amount_micros. */
                            public _recommended_budget_amount_micros?: "recommended_budget_amount_micros";

                            /**
                             * Creates a new MaximizeClicksOptInRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns MaximizeClicksOptInRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.Recommendation.IMaximizeClicksOptInRecommendation): google.ads.googleads.v8.resources.Recommendation.MaximizeClicksOptInRecommendation;

                            /**
                             * Encodes the specified MaximizeClicksOptInRecommendation message. Does not implicitly {@link google.ads.googleads.v8.resources.Recommendation.MaximizeClicksOptInRecommendation.verify|verify} messages.
                             * @param m MaximizeClicksOptInRecommendation message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Recommendation.IMaximizeClicksOptInRecommendation, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified MaximizeClicksOptInRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Recommendation.IMaximizeClicksOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a MaximizeClicksOptInRecommendation message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Recommendation.MaximizeClicksOptInRecommendation;

                            /**
                             * Verifies a MaximizeClicksOptInRecommendation message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a MaximizeClicksOptInRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns MaximizeClicksOptInRecommendation
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Recommendation.MaximizeClicksOptInRecommendation;

                            /**
                             * Creates a plain object from a MaximizeClicksOptInRecommendation message. Also converts values to other types if specified.
                             * @param m MaximizeClicksOptInRecommendation
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Recommendation.MaximizeClicksOptInRecommendation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this MaximizeClicksOptInRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a SitelinkExtensionRecommendation. */
                        interface ISitelinkExtensionRecommendation {

                            /** SitelinkExtensionRecommendation recommended_extensions */
                            recommended_extensions?: (google.ads.googleads.v8.common.ISitelinkFeedItem[]|null);
                        }

                        /** Represents a SitelinkExtensionRecommendation. */
                        class SitelinkExtensionRecommendation implements ISitelinkExtensionRecommendation {

                            /**
                             * Constructs a new SitelinkExtensionRecommendation.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.Recommendation.ISitelinkExtensionRecommendation);

                            /** SitelinkExtensionRecommendation recommended_extensions. */
                            public recommended_extensions: google.ads.googleads.v8.common.ISitelinkFeedItem[];

                            /**
                             * Creates a new SitelinkExtensionRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns SitelinkExtensionRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.Recommendation.ISitelinkExtensionRecommendation): google.ads.googleads.v8.resources.Recommendation.SitelinkExtensionRecommendation;

                            /**
                             * Encodes the specified SitelinkExtensionRecommendation message. Does not implicitly {@link google.ads.googleads.v8.resources.Recommendation.SitelinkExtensionRecommendation.verify|verify} messages.
                             * @param m SitelinkExtensionRecommendation message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Recommendation.ISitelinkExtensionRecommendation, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified SitelinkExtensionRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.Recommendation.SitelinkExtensionRecommendation.verify|verify} messages.
                             * @param message SitelinkExtensionRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v8.resources.Recommendation.ISitelinkExtensionRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a SitelinkExtensionRecommendation message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] Message length if known beforehand
                             * @returns SitelinkExtensionRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.Recommendation.SitelinkExtensionRecommendation;

                            /**
                             * Decodes a SitelinkExtensionRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns SitelinkExtensionRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.Recommendation.SitelinkExtensionRecommendation;

                            /**
                             * Verifies a SitelinkExtensionRecommendation message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a SitelinkExtensionRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns SitelinkExtensionRecommendation
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Recommendation.SitelinkExtensionRecommendation;

                            /**
                             * Creates a plain object from a SitelinkExtensionRecommendation message. Also converts values to other types if specified.
                             * @param m SitelinkExtensionRecommendation
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Recommendation.SitelinkExtensionRecommendation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this SitelinkExtensionRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** 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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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);

                            /** TargetRoasOptInRecommendation _recommended_target_roas. */
                            public _recommended_target_roas?: "recommended_target_roas";

                            /** TargetRoasOptInRecommendation _required_campaign_budget_amount_micros. */
                            public _required_campaign_budget_amount_micros?: "required_campaign_budget_amount_micros";

                            /**
                             * Creates a new TargetRoasOptInRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TargetRoasOptInRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.Recommendation.ITargetRoasOptInRecommendation): google.ads.googleads.v8.resources.Recommendation.TargetRoasOptInRecommendation;

                            /**
                             * Encodes the specified TargetRoasOptInRecommendation message. Does not implicitly {@link google.ads.googleads.v8.resources.Recommendation.TargetRoasOptInRecommendation.verify|verify} messages.
                             * @param m TargetRoasOptInRecommendation message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Recommendation.ITargetRoasOptInRecommendation, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TargetRoasOptInRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.Recommendation.ITargetRoasOptInRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TargetRoasOptInRecommendation message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Recommendation.TargetRoasOptInRecommendation;

                            /**
                             * Verifies a TargetRoasOptInRecommendation message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TargetRoasOptInRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns TargetRoasOptInRecommendation
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Recommendation.TargetRoasOptInRecommendation;

                            /**
                             * Creates a plain object from a TargetRoasOptInRecommendation message. Also converts values to other types if specified.
                             * @param m TargetRoasOptInRecommendation
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Recommendation.TargetRoasOptInRecommendation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TargetRoasOptInRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a CallExtensionRecommendation. */
                        interface ICallExtensionRecommendation {

                            /** CallExtensionRecommendation recommended_extensions */
                            recommended_extensions?: (google.ads.googleads.v8.common.ICallFeedItem[]|null);
                        }

                        /** Represents a CallExtensionRecommendation. */
                        class CallExtensionRecommendation implements ICallExtensionRecommendation {

                            /**
                             * Constructs a new CallExtensionRecommendation.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.Recommendation.ICallExtensionRecommendation);

                            /** CallExtensionRecommendation recommended_extensions. */
                            public recommended_extensions: google.ads.googleads.v8.common.ICallFeedItem[];

                            /**
                             * Creates a new CallExtensionRecommendation instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns CallExtensionRecommendation instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.Recommendation.ICallExtensionRecommendation): google.ads.googleads.v8.resources.Recommendation.CallExtensionRecommendation;

                            /**
                             * Encodes the specified CallExtensionRecommendation message. Does not implicitly {@link google.ads.googleads.v8.resources.Recommendation.CallExtensionRecommendation.verify|verify} messages.
                             * @param m CallExtensionRecommendation message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.Recommendation.ICallExtensionRecommendation, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified CallExtensionRecommendation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.resources.Recommendation.CallExtensionRecommendation.verify|verify} messages.
                             * @param message CallExtensionRecommendation message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.ads.googleads.v8.resources.Recommendation.ICallExtensionRecommendation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a CallExtensionRecommendation message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] Message length if known beforehand
                             * @returns CallExtensionRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.resources.Recommendation.CallExtensionRecommendation;

                            /**
                             * Decodes a CallExtensionRecommendation message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns CallExtensionRecommendation
                             * @throws {Error} If the payload is not a reader or valid buffer
                             * @throws {$protobuf.util.ProtocolError} If required fields are missing
                             */
                            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.resources.Recommendation.CallExtensionRecommendation;

                            /**
                             * Verifies a CallExtensionRecommendation message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a CallExtensionRecommendation message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns CallExtensionRecommendation
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Recommendation.CallExtensionRecommendation;

                            /**
                             * Creates a plain object from a CallExtensionRecommendation message. Also converts values to other types if specified.
                             * @param m CallExtensionRecommendation
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.Recommendation.CallExtensionRecommendation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this CallExtensionRecommendation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }
                    }

                    /** 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.v8.common.ITagSnippet[]|null);
                    }

                    /** Represents a RemarketingAction. */
                    class RemarketingAction implements IRemarketingAction {

                        /**
                         * Constructs a new RemarketingAction.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.ITagSnippet[];

                        /** RemarketingAction _id. */
                        public _id?: "id";

                        /** RemarketingAction _name. */
                        public _name?: "name";

                        /**
                         * Creates a new RemarketingAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RemarketingAction instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IRemarketingAction): google.ads.googleads.v8.resources.RemarketingAction;

                        /**
                         * Encodes the specified RemarketingAction message. Does not implicitly {@link google.ads.googleads.v8.resources.RemarketingAction.verify|verify} messages.
                         * @param m RemarketingAction message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IRemarketingAction, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RemarketingAction message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IRemarketingAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RemarketingAction message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.RemarketingAction;

                        /**
                         * Verifies a RemarketingAction message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RemarketingAction message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns RemarketingAction
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.RemarketingAction;

                        /**
                         * Creates a plain object from a RemarketingAction message. Also converts values to other types if specified.
                         * @param m RemarketingAction
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.RemarketingAction, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RemarketingAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.SearchTermTargetingStatusEnum.SearchTermTargetingStatus|keyof typeof google.ads.googleads.v8.enums.SearchTermTargetingStatusEnum.SearchTermTargetingStatus|null);
                    }

                    /** Represents a SearchTermView. */
                    class SearchTermView implements ISearchTermView {

                        /**
                         * Constructs a new SearchTermView.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.SearchTermTargetingStatusEnum.SearchTermTargetingStatus|keyof typeof google.ads.googleads.v8.enums.SearchTermTargetingStatusEnum.SearchTermTargetingStatus);

                        /** SearchTermView _search_term. */
                        public _search_term?: "search_term";

                        /** SearchTermView _ad_group. */
                        public _ad_group?: "ad_group";

                        /**
                         * Creates a new SearchTermView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchTermView instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ISearchTermView): google.ads.googleads.v8.resources.SearchTermView;

                        /**
                         * Encodes the specified SearchTermView message. Does not implicitly {@link google.ads.googleads.v8.resources.SearchTermView.verify|verify} messages.
                         * @param m SearchTermView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ISearchTermView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchTermView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ISearchTermView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchTermView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.SearchTermView;

                        /**
                         * Verifies a SearchTermView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchTermView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SearchTermView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.SearchTermView;

                        /**
                         * Creates a plain object from a SearchTermView message. Also converts values to other types if specified.
                         * @param m SearchTermView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.SearchTermView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchTermView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.CriterionTypeEnum.CriterionType|keyof typeof google.ads.googleads.v8.enums.CriterionTypeEnum.CriterionType|null);

                        /** SharedCriterion keyword */
                        keyword?: (google.ads.googleads.v8.common.IKeywordInfo|null);

                        /** SharedCriterion youtube_video */
                        youtube_video?: (google.ads.googleads.v8.common.IYouTubeVideoInfo|null);

                        /** SharedCriterion youtube_channel */
                        youtube_channel?: (google.ads.googleads.v8.common.IYouTubeChannelInfo|null);

                        /** SharedCriterion placement */
                        placement?: (google.ads.googleads.v8.common.IPlacementInfo|null);

                        /** SharedCriterion mobile_app_category */
                        mobile_app_category?: (google.ads.googleads.v8.common.IMobileAppCategoryInfo|null);

                        /** SharedCriterion mobile_application */
                        mobile_application?: (google.ads.googleads.v8.common.IMobileApplicationInfo|null);
                    }

                    /** Represents a SharedCriterion. */
                    class SharedCriterion implements ISharedCriterion {

                        /**
                         * Constructs a new SharedCriterion.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.CriterionTypeEnum.CriterionType|keyof typeof google.ads.googleads.v8.enums.CriterionTypeEnum.CriterionType);

                        /** SharedCriterion keyword. */
                        public keyword?: (google.ads.googleads.v8.common.IKeywordInfo|null);

                        /** SharedCriterion youtube_video. */
                        public youtube_video?: (google.ads.googleads.v8.common.IYouTubeVideoInfo|null);

                        /** SharedCriterion youtube_channel. */
                        public youtube_channel?: (google.ads.googleads.v8.common.IYouTubeChannelInfo|null);

                        /** SharedCriterion placement. */
                        public placement?: (google.ads.googleads.v8.common.IPlacementInfo|null);

                        /** SharedCriterion mobile_app_category. */
                        public mobile_app_category?: (google.ads.googleads.v8.common.IMobileAppCategoryInfo|null);

                        /** SharedCriterion mobile_application. */
                        public mobile_application?: (google.ads.googleads.v8.common.IMobileApplicationInfo|null);

                        /** SharedCriterion _shared_set. */
                        public _shared_set?: "shared_set";

                        /** SharedCriterion _criterion_id. */
                        public _criterion_id?: "criterion_id";

                        /** SharedCriterion criterion. */
                        public criterion?: ("keyword"|"youtube_video"|"youtube_channel"|"placement"|"mobile_app_category"|"mobile_application");

                        /**
                         * Creates a new SharedCriterion instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SharedCriterion instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ISharedCriterion): google.ads.googleads.v8.resources.SharedCriterion;

                        /**
                         * Encodes the specified SharedCriterion message. Does not implicitly {@link google.ads.googleads.v8.resources.SharedCriterion.verify|verify} messages.
                         * @param m SharedCriterion message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ISharedCriterion, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SharedCriterion message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ISharedCriterion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SharedCriterion message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.SharedCriterion;

                        /**
                         * Verifies a SharedCriterion message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SharedCriterion message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SharedCriterion
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.SharedCriterion;

                        /**
                         * Creates a plain object from a SharedCriterion message. Also converts values to other types if specified.
                         * @param m SharedCriterion
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.SharedCriterion, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SharedCriterion to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a SharedSet. */
                    interface ISharedSet {

                        /** SharedSet resource_name */
                        resource_name?: (string|null);

                        /** SharedSet id */
                        id?: (number|null);

                        /** SharedSet type */
                        type?: (google.ads.googleads.v8.enums.SharedSetTypeEnum.SharedSetType|keyof typeof google.ads.googleads.v8.enums.SharedSetTypeEnum.SharedSetType|null);

                        /** SharedSet name */
                        name?: (string|null);

                        /** SharedSet status */
                        status?: (google.ads.googleads.v8.enums.SharedSetStatusEnum.SharedSetStatus|keyof typeof google.ads.googleads.v8.enums.SharedSetStatusEnum.SharedSetStatus|null);

                        /** SharedSet member_count */
                        member_count?: (number|null);

                        /** SharedSet reference_count */
                        reference_count?: (number|null);
                    }

                    /** Represents a SharedSet. */
                    class SharedSet implements ISharedSet {

                        /**
                         * Constructs a new SharedSet.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.ISharedSet);

                        /** SharedSet resource_name. */
                        public resource_name: string;

                        /** SharedSet id. */
                        public id?: (number|null);

                        /** SharedSet type. */
                        public type: (google.ads.googleads.v8.enums.SharedSetTypeEnum.SharedSetType|keyof typeof google.ads.googleads.v8.enums.SharedSetTypeEnum.SharedSetType);

                        /** SharedSet name. */
                        public name?: (string|null);

                        /** SharedSet status. */
                        public status: (google.ads.googleads.v8.enums.SharedSetStatusEnum.SharedSetStatus|keyof typeof google.ads.googleads.v8.enums.SharedSetStatusEnum.SharedSetStatus);

                        /** SharedSet member_count. */
                        public member_count?: (number|null);

                        /** SharedSet reference_count. */
                        public reference_count?: (number|null);

                        /** SharedSet _id. */
                        public _id?: "id";

                        /** SharedSet _name. */
                        public _name?: "name";

                        /** SharedSet _member_count. */
                        public _member_count?: "member_count";

                        /** SharedSet _reference_count. */
                        public _reference_count?: "reference_count";

                        /**
                         * Creates a new SharedSet instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SharedSet instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ISharedSet): google.ads.googleads.v8.resources.SharedSet;

                        /**
                         * Encodes the specified SharedSet message. Does not implicitly {@link google.ads.googleads.v8.resources.SharedSet.verify|verify} messages.
                         * @param m SharedSet message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ISharedSet, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SharedSet message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ISharedSet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SharedSet message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.SharedSet;

                        /**
                         * Verifies a SharedSet message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SharedSet message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SharedSet
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.SharedSet;

                        /**
                         * Creates a plain object from a SharedSet message. Also converts values to other types if specified.
                         * @param m SharedSet
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.SharedSet, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SharedSet to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.resources.IShoppingPerformanceView): google.ads.googleads.v8.resources.ShoppingPerformanceView;

                        /**
                         * Encodes the specified ShoppingPerformanceView message. Does not implicitly {@link google.ads.googleads.v8.resources.ShoppingPerformanceView.verify|verify} messages.
                         * @param m ShoppingPerformanceView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IShoppingPerformanceView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ShoppingPerformanceView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IShoppingPerformanceView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ShoppingPerformanceView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.ShoppingPerformanceView;

                        /**
                         * Verifies a ShoppingPerformanceView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ShoppingPerformanceView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ShoppingPerformanceView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ShoppingPerformanceView;

                        /**
                         * Creates a plain object from a ShoppingPerformanceView message. Also converts values to other types if specified.
                         * @param m ShoppingPerformanceView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.ShoppingPerformanceView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ShoppingPerformanceView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.resources.ISmartCampaignSearchTermView): google.ads.googleads.v8.resources.SmartCampaignSearchTermView;

                        /**
                         * Encodes the specified SmartCampaignSearchTermView message. Does not implicitly {@link google.ads.googleads.v8.resources.SmartCampaignSearchTermView.verify|verify} messages.
                         * @param m SmartCampaignSearchTermView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ISmartCampaignSearchTermView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SmartCampaignSearchTermView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ISmartCampaignSearchTermView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SmartCampaignSearchTermView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.SmartCampaignSearchTermView;

                        /**
                         * Verifies a SmartCampaignSearchTermView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SmartCampaignSearchTermView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SmartCampaignSearchTermView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.SmartCampaignSearchTermView;

                        /**
                         * Creates a plain object from a SmartCampaignSearchTermView message. Also converts values to other types if specified.
                         * @param m SmartCampaignSearchTermView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.SmartCampaignSearchTermView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SmartCampaignSearchTermView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.resources.SmartCampaignSetting.IPhoneNumber|null);

                        /** SmartCampaignSetting final_url */
                        final_url?: (string|null);

                        /** SmartCampaignSetting advertising_language_code */
                        advertising_language_code?: (string|null);

                        /** SmartCampaignSetting business_name */
                        business_name?: (string|null);

                        /** SmartCampaignSetting business_location_id */
                        business_location_id?: (number|null);
                    }

                    /** Represents a SmartCampaignSetting. */
                    class SmartCampaignSetting implements ISmartCampaignSetting {

                        /**
                         * Constructs a new SmartCampaignSetting.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.ISmartCampaignSetting);

                        /** SmartCampaignSetting resource_name. */
                        public resource_name: string;

                        /** SmartCampaignSetting campaign. */
                        public campaign: string;

                        /** SmartCampaignSetting phone_number. */
                        public phone_number?: (google.ads.googleads.v8.resources.SmartCampaignSetting.IPhoneNumber|null);

                        /** SmartCampaignSetting final_url. */
                        public final_url: string;

                        /** SmartCampaignSetting advertising_language_code. */
                        public advertising_language_code: string;

                        /** SmartCampaignSetting business_name. */
                        public business_name?: (string|null);

                        /** SmartCampaignSetting business_location_id. */
                        public business_location_id?: (number|null);

                        /** SmartCampaignSetting business_setting. */
                        public business_setting?: ("business_name"|"business_location_id");

                        /**
                         * Creates a new SmartCampaignSetting instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SmartCampaignSetting instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ISmartCampaignSetting): google.ads.googleads.v8.resources.SmartCampaignSetting;

                        /**
                         * Encodes the specified SmartCampaignSetting message. Does not implicitly {@link google.ads.googleads.v8.resources.SmartCampaignSetting.verify|verify} messages.
                         * @param m SmartCampaignSetting message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ISmartCampaignSetting, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SmartCampaignSetting message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ISmartCampaignSetting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SmartCampaignSetting message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.SmartCampaignSetting;

                        /**
                         * Verifies a SmartCampaignSetting message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SmartCampaignSetting message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SmartCampaignSetting
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.SmartCampaignSetting;

                        /**
                         * Creates a plain object from a SmartCampaignSetting message. Also converts values to other types if specified.
                         * @param m SmartCampaignSetting
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.SmartCampaignSetting, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SmartCampaignSetting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.resources.SmartCampaignSetting.IPhoneNumber);

                            /** PhoneNumber phone_number. */
                            public phone_number?: (string|null);

                            /** PhoneNumber country_code. */
                            public country_code?: (string|null);

                            /** PhoneNumber _phone_number. */
                            public _phone_number?: "phone_number";

                            /** PhoneNumber _country_code. */
                            public _country_code?: "country_code";

                            /**
                             * Creates a new PhoneNumber instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns PhoneNumber instance
                             */
                            public static create(properties?: google.ads.googleads.v8.resources.SmartCampaignSetting.IPhoneNumber): google.ads.googleads.v8.resources.SmartCampaignSetting.PhoneNumber;

                            /**
                             * Encodes the specified PhoneNumber message. Does not implicitly {@link google.ads.googleads.v8.resources.SmartCampaignSetting.PhoneNumber.verify|verify} messages.
                             * @param m PhoneNumber message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.resources.SmartCampaignSetting.IPhoneNumber, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified PhoneNumber message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.SmartCampaignSetting.IPhoneNumber, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a PhoneNumber message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.SmartCampaignSetting.PhoneNumber;

                            /**
                             * Verifies a PhoneNumber message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a PhoneNumber message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns PhoneNumber
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.SmartCampaignSetting.PhoneNumber;

                            /**
                             * Creates a plain object from a PhoneNumber message. Also converts values to other types if specified.
                             * @param m PhoneNumber
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.resources.SmartCampaignSetting.PhoneNumber, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this PhoneNumber to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IThirdPartyAppAnalyticsLink);

                        /** ThirdPartyAppAnalyticsLink resource_name. */
                        public resource_name: string;

                        /** ThirdPartyAppAnalyticsLink shareable_link_id. */
                        public shareable_link_id?: (string|null);

                        /** ThirdPartyAppAnalyticsLink _shareable_link_id. */
                        public _shareable_link_id?: "shareable_link_id";

                        /**
                         * Creates a new ThirdPartyAppAnalyticsLink instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ThirdPartyAppAnalyticsLink instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IThirdPartyAppAnalyticsLink): google.ads.googleads.v8.resources.ThirdPartyAppAnalyticsLink;

                        /**
                         * Encodes the specified ThirdPartyAppAnalyticsLink message. Does not implicitly {@link google.ads.googleads.v8.resources.ThirdPartyAppAnalyticsLink.verify|verify} messages.
                         * @param m ThirdPartyAppAnalyticsLink message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IThirdPartyAppAnalyticsLink, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ThirdPartyAppAnalyticsLink message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IThirdPartyAppAnalyticsLink, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ThirdPartyAppAnalyticsLink message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.ThirdPartyAppAnalyticsLink;

                        /**
                         * Verifies a ThirdPartyAppAnalyticsLink message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ThirdPartyAppAnalyticsLink message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ThirdPartyAppAnalyticsLink
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.ThirdPartyAppAnalyticsLink;

                        /**
                         * Creates a plain object from a ThirdPartyAppAnalyticsLink message. Also converts values to other types if specified.
                         * @param m ThirdPartyAppAnalyticsLink
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.ThirdPartyAppAnalyticsLink, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ThirdPartyAppAnalyticsLink to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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[];

                        /** TopicConstant _id. */
                        public _id?: "id";

                        /** TopicConstant _topic_constant_parent. */
                        public _topic_constant_parent?: "topic_constant_parent";

                        /**
                         * Creates a new TopicConstant instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TopicConstant instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.ITopicConstant): google.ads.googleads.v8.resources.TopicConstant;

                        /**
                         * Encodes the specified TopicConstant message. Does not implicitly {@link google.ads.googleads.v8.resources.TopicConstant.verify|verify} messages.
                         * @param m TopicConstant message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ITopicConstant, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TopicConstant message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ITopicConstant, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TopicConstant message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.TopicConstant;

                        /**
                         * Verifies a TopicConstant message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TopicConstant message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TopicConstant
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.TopicConstant;

                        /**
                         * Creates a plain object from a TopicConstant message. Also converts values to other types if specified.
                         * @param m TopicConstant
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.TopicConstant, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TopicConstant to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.resources.ITopicView): google.ads.googleads.v8.resources.TopicView;

                        /**
                         * Encodes the specified TopicView message. Does not implicitly {@link google.ads.googleads.v8.resources.TopicView.verify|verify} messages.
                         * @param m TopicView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.ITopicView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TopicView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.ITopicView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TopicView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.TopicView;

                        /**
                         * Verifies a TopicView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a TopicView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns TopicView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.TopicView;

                        /**
                         * Creates a plain object from a TopicView message. Also converts values to other types if specified.
                         * @param m TopicView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.TopicView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TopicView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a UserInterest. */
                    interface IUserInterest {

                        /** UserInterest resource_name */
                        resource_name?: (string|null);

                        /** UserInterest taxonomy_type */
                        taxonomy_type?: (google.ads.googleads.v8.enums.UserInterestTaxonomyTypeEnum.UserInterestTaxonomyType|keyof typeof google.ads.googleads.v8.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.v8.common.ICriterionCategoryAvailability[]|null);
                    }

                    /** Represents a UserInterest. */
                    class UserInterest implements IUserInterest {

                        /**
                         * Constructs a new UserInterest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.resources.IUserInterest);

                        /** UserInterest resource_name. */
                        public resource_name: string;

                        /** UserInterest taxonomy_type. */
                        public taxonomy_type: (google.ads.googleads.v8.enums.UserInterestTaxonomyTypeEnum.UserInterestTaxonomyType|keyof typeof google.ads.googleads.v8.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.v8.common.ICriterionCategoryAvailability[];

                        /** UserInterest _user_interest_id. */
                        public _user_interest_id?: "user_interest_id";

                        /** UserInterest _name. */
                        public _name?: "name";

                        /** UserInterest _user_interest_parent. */
                        public _user_interest_parent?: "user_interest_parent";

                        /** UserInterest _launched_to_all. */
                        public _launched_to_all?: "launched_to_all";

                        /**
                         * Creates a new UserInterest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserInterest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IUserInterest): google.ads.googleads.v8.resources.UserInterest;

                        /**
                         * Encodes the specified UserInterest message. Does not implicitly {@link google.ads.googleads.v8.resources.UserInterest.verify|verify} messages.
                         * @param m UserInterest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IUserInterest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserInterest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IUserInterest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserInterest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.UserInterest;

                        /**
                         * Verifies a UserInterest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserInterest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserInterest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.UserInterest;

                        /**
                         * Creates a plain object from a UserInterest message. Also converts values to other types if specified.
                         * @param m UserInterest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.UserInterest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserInterest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.UserListMembershipStatusEnum.UserListMembershipStatus|keyof typeof google.ads.googleads.v8.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.v8.enums.UserListSizeRangeEnum.UserListSizeRange|keyof typeof google.ads.googleads.v8.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.v8.enums.UserListSizeRangeEnum.UserListSizeRange|keyof typeof google.ads.googleads.v8.enums.UserListSizeRangeEnum.UserListSizeRange|null);

                        /** UserList type */
                        type?: (google.ads.googleads.v8.enums.UserListTypeEnum.UserListType|keyof typeof google.ads.googleads.v8.enums.UserListTypeEnum.UserListType|null);

                        /** UserList closing_reason */
                        closing_reason?: (google.ads.googleads.v8.enums.UserListClosingReasonEnum.UserListClosingReason|keyof typeof google.ads.googleads.v8.enums.UserListClosingReasonEnum.UserListClosingReason|null);

                        /** UserList access_reason */
                        access_reason?: (google.ads.googleads.v8.enums.AccessReasonEnum.AccessReason|keyof typeof google.ads.googleads.v8.enums.AccessReasonEnum.AccessReason|null);

                        /** UserList account_user_list_status */
                        account_user_list_status?: (google.ads.googleads.v8.enums.UserListAccessStatusEnum.UserListAccessStatus|keyof typeof google.ads.googleads.v8.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.v8.common.ICrmBasedUserListInfo|null);

                        /** UserList similar_user_list */
                        similar_user_list?: (google.ads.googleads.v8.common.ISimilarUserListInfo|null);

                        /** UserList rule_based_user_list */
                        rule_based_user_list?: (google.ads.googleads.v8.common.IRuleBasedUserListInfo|null);

                        /** UserList logical_user_list */
                        logical_user_list?: (google.ads.googleads.v8.common.ILogicalUserListInfo|null);

                        /** UserList basic_user_list */
                        basic_user_list?: (google.ads.googleads.v8.common.IBasicUserListInfo|null);
                    }

                    /** Represents a UserList. */
                    class UserList implements IUserList {

                        /**
                         * Constructs a new UserList.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.UserListMembershipStatusEnum.UserListMembershipStatus|keyof typeof google.ads.googleads.v8.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.v8.enums.UserListSizeRangeEnum.UserListSizeRange|keyof typeof google.ads.googleads.v8.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.v8.enums.UserListSizeRangeEnum.UserListSizeRange|keyof typeof google.ads.googleads.v8.enums.UserListSizeRangeEnum.UserListSizeRange);

                        /** UserList type. */
                        public type: (google.ads.googleads.v8.enums.UserListTypeEnum.UserListType|keyof typeof google.ads.googleads.v8.enums.UserListTypeEnum.UserListType);

                        /** UserList closing_reason. */
                        public closing_reason: (google.ads.googleads.v8.enums.UserListClosingReasonEnum.UserListClosingReason|keyof typeof google.ads.googleads.v8.enums.UserListClosingReasonEnum.UserListClosingReason);

                        /** UserList access_reason. */
                        public access_reason: (google.ads.googleads.v8.enums.AccessReasonEnum.AccessReason|keyof typeof google.ads.googleads.v8.enums.AccessReasonEnum.AccessReason);

                        /** UserList account_user_list_status. */
                        public account_user_list_status: (google.ads.googleads.v8.enums.UserListAccessStatusEnum.UserListAccessStatus|keyof typeof google.ads.googleads.v8.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.v8.common.ICrmBasedUserListInfo|null);

                        /** UserList similar_user_list. */
                        public similar_user_list?: (google.ads.googleads.v8.common.ISimilarUserListInfo|null);

                        /** UserList rule_based_user_list. */
                        public rule_based_user_list?: (google.ads.googleads.v8.common.IRuleBasedUserListInfo|null);

                        /** UserList logical_user_list. */
                        public logical_user_list?: (google.ads.googleads.v8.common.ILogicalUserListInfo|null);

                        /** UserList basic_user_list. */
                        public basic_user_list?: (google.ads.googleads.v8.common.IBasicUserListInfo|null);

                        /** UserList _id. */
                        public _id?: "id";

                        /** UserList _read_only. */
                        public _read_only?: "read_only";

                        /** UserList _name. */
                        public _name?: "name";

                        /** UserList _description. */
                        public _description?: "description";

                        /** UserList _integration_code. */
                        public _integration_code?: "integration_code";

                        /** UserList _membership_life_span. */
                        public _membership_life_span?: "membership_life_span";

                        /** UserList _size_for_display. */
                        public _size_for_display?: "size_for_display";

                        /** UserList _size_for_search. */
                        public _size_for_search?: "size_for_search";

                        /** UserList _eligible_for_search. */
                        public _eligible_for_search?: "eligible_for_search";

                        /** UserList _eligible_for_display. */
                        public _eligible_for_display?: "eligible_for_display";

                        /** UserList _match_rate_percentage. */
                        public _match_rate_percentage?: "match_rate_percentage";

                        /** UserList user_list. */
                        public user_list?: ("crm_based_user_list"|"similar_user_list"|"rule_based_user_list"|"logical_user_list"|"basic_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.v8.resources.IUserList): google.ads.googleads.v8.resources.UserList;

                        /**
                         * Encodes the specified UserList message. Does not implicitly {@link google.ads.googleads.v8.resources.UserList.verify|verify} messages.
                         * @param m UserList message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IUserList, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserList message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IUserList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserList message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.UserList;

                        /**
                         * Verifies a UserList message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserList message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserList
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.UserList;

                        /**
                         * Creates a plain object from a UserList message. Also converts values to other types if specified.
                         * @param m UserList
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.UserList, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserList to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** UserLocationView _country_criterion_id. */
                        public _country_criterion_id?: "country_criterion_id";

                        /** UserLocationView _targeting_location. */
                        public _targeting_location?: "targeting_location";

                        /**
                         * Creates a new UserLocationView instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserLocationView instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IUserLocationView): google.ads.googleads.v8.resources.UserLocationView;

                        /**
                         * Encodes the specified UserLocationView message. Does not implicitly {@link google.ads.googleads.v8.resources.UserLocationView.verify|verify} messages.
                         * @param m UserLocationView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IUserLocationView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserLocationView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IUserLocationView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserLocationView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.UserLocationView;

                        /**
                         * Verifies a UserLocationView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserLocationView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserLocationView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.UserLocationView;

                        /**
                         * Creates a plain object from a UserLocationView message. Also converts values to other types if specified.
                         * @param m UserLocationView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.UserLocationView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserLocationView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** Video _id. */
                        public _id?: "id";

                        /** Video _channel_id. */
                        public _channel_id?: "channel_id";

                        /** Video _duration_millis. */
                        public _duration_millis?: "duration_millis";

                        /** Video _title. */
                        public _title?: "title";

                        /**
                         * Creates a new Video instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Video instance
                         */
                        public static create(properties?: google.ads.googleads.v8.resources.IVideo): google.ads.googleads.v8.resources.Video;

                        /**
                         * Encodes the specified Video message. Does not implicitly {@link google.ads.googleads.v8.resources.Video.verify|verify} messages.
                         * @param m Video message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IVideo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Video message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IVideo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Video message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.Video;

                        /**
                         * Verifies a Video message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Video message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns Video
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.Video;

                        /**
                         * Creates a plain object from a Video message. Also converts values to other types if specified.
                         * @param m Video
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.Video, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Video to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.resources.IWebpageView): google.ads.googleads.v8.resources.WebpageView;

                        /**
                         * Encodes the specified WebpageView message. Does not implicitly {@link google.ads.googleads.v8.resources.WebpageView.verify|verify} messages.
                         * @param m WebpageView message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.resources.IWebpageView, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified WebpageView message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.resources.IWebpageView, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a WebpageView message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.resources.WebpageView;

                        /**
                         * Verifies a WebpageView message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a WebpageView message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns WebpageView
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.resources.WebpageView;

                        /**
                         * Creates a plain object from a WebpageView message. Also converts values to other types if specified.
                         * @param m WebpageView
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.resources.WebpageView, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this WebpageView to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }
                }

                /** Namespace services. */
                namespace services {

                    /** Represents an AccessibleBiddingStrategyService */
                    class AccessibleBiddingStrategyService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AccessibleBiddingStrategyService 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 AccessibleBiddingStrategyService 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): AccessibleBiddingStrategyService;

                        /**
                         * Calls GetAccessibleBiddingStrategy.
                         * @param request GetAccessibleBiddingStrategyRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AccessibleBiddingStrategy
                         */
                        public getAccessibleBiddingStrategy(request: google.ads.googleads.v8.services.IGetAccessibleBiddingStrategyRequest, callback: google.ads.googleads.v8.services.AccessibleBiddingStrategyService.GetAccessibleBiddingStrategyCallback): void;

                        /**
                         * Calls GetAccessibleBiddingStrategy.
                         * @param request GetAccessibleBiddingStrategyRequest message or plain object
                         * @returns Promise
                         */
                        public getAccessibleBiddingStrategy(request: google.ads.googleads.v8.services.IGetAccessibleBiddingStrategyRequest): Promise<google.ads.googleads.v8.resources.AccessibleBiddingStrategy>;
                    }

                    namespace AccessibleBiddingStrategyService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AccessibleBiddingStrategyService#getAccessibleBiddingStrategy}.
                         * @param error Error, if any
                         * @param [response] AccessibleBiddingStrategy
                         */
                        type GetAccessibleBiddingStrategyCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.AccessibleBiddingStrategy) => void;
                    }

                    /** Properties of a GetAccessibleBiddingStrategyRequest. */
                    interface IGetAccessibleBiddingStrategyRequest {

                        /** GetAccessibleBiddingStrategyRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetAccessibleBiddingStrategyRequest. */
                    class GetAccessibleBiddingStrategyRequest implements IGetAccessibleBiddingStrategyRequest {

                        /**
                         * Constructs a new GetAccessibleBiddingStrategyRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetAccessibleBiddingStrategyRequest);

                        /** GetAccessibleBiddingStrategyRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetAccessibleBiddingStrategyRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAccessibleBiddingStrategyRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetAccessibleBiddingStrategyRequest): google.ads.googleads.v8.services.GetAccessibleBiddingStrategyRequest;

                        /**
                         * Encodes the specified GetAccessibleBiddingStrategyRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetAccessibleBiddingStrategyRequest.verify|verify} messages.
                         * @param m GetAccessibleBiddingStrategyRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetAccessibleBiddingStrategyRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAccessibleBiddingStrategyRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetAccessibleBiddingStrategyRequest.verify|verify} messages.
                         * @param message GetAccessibleBiddingStrategyRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetAccessibleBiddingStrategyRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAccessibleBiddingStrategyRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetAccessibleBiddingStrategyRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetAccessibleBiddingStrategyRequest;

                        /**
                         * Decodes a GetAccessibleBiddingStrategyRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAccessibleBiddingStrategyRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetAccessibleBiddingStrategyRequest;

                        /**
                         * Verifies a GetAccessibleBiddingStrategyRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetAccessibleBiddingStrategyRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetAccessibleBiddingStrategyRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetAccessibleBiddingStrategyRequest;

                        /**
                         * Creates a plain object from a GetAccessibleBiddingStrategyRequest message. Also converts values to other types if specified.
                         * @param m GetAccessibleBiddingStrategyRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetAccessibleBiddingStrategyRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAccessibleBiddingStrategyRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetAccountBudgetProposal.
                         * @param request GetAccountBudgetProposalRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AccountBudgetProposal
                         */
                        public getAccountBudgetProposal(request: google.ads.googleads.v8.services.IGetAccountBudgetProposalRequest, callback: google.ads.googleads.v8.services.AccountBudgetProposalService.GetAccountBudgetProposalCallback): void;

                        /**
                         * Calls GetAccountBudgetProposal.
                         * @param request GetAccountBudgetProposalRequest message or plain object
                         * @returns Promise
                         */
                        public getAccountBudgetProposal(request: google.ads.googleads.v8.services.IGetAccountBudgetProposalRequest): Promise<google.ads.googleads.v8.resources.AccountBudgetProposal>;

                        /**
                         * 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.v8.services.IMutateAccountBudgetProposalRequest, callback: google.ads.googleads.v8.services.AccountBudgetProposalService.MutateAccountBudgetProposalCallback): void;

                        /**
                         * Calls MutateAccountBudgetProposal.
                         * @param request MutateAccountBudgetProposalRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAccountBudgetProposal(request: google.ads.googleads.v8.services.IMutateAccountBudgetProposalRequest): Promise<google.ads.googleads.v8.services.MutateAccountBudgetProposalResponse>;
                    }

                    namespace AccountBudgetProposalService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AccountBudgetProposalService#getAccountBudgetProposal}.
                         * @param error Error, if any
                         * @param [response] AccountBudgetProposal
                         */
                        type GetAccountBudgetProposalCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.AccountBudgetProposal) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AccountBudgetProposalService#mutateAccountBudgetProposal}.
                         * @param error Error, if any
                         * @param [response] MutateAccountBudgetProposalResponse
                         */
                        type MutateAccountBudgetProposalCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateAccountBudgetProposalResponse) => void;
                    }

                    /** Properties of a GetAccountBudgetProposalRequest. */
                    interface IGetAccountBudgetProposalRequest {

                        /** GetAccountBudgetProposalRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetAccountBudgetProposalRequest. */
                    class GetAccountBudgetProposalRequest implements IGetAccountBudgetProposalRequest {

                        /**
                         * Constructs a new GetAccountBudgetProposalRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetAccountBudgetProposalRequest);

                        /** GetAccountBudgetProposalRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetAccountBudgetProposalRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAccountBudgetProposalRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetAccountBudgetProposalRequest): google.ads.googleads.v8.services.GetAccountBudgetProposalRequest;

                        /**
                         * Encodes the specified GetAccountBudgetProposalRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetAccountBudgetProposalRequest.verify|verify} messages.
                         * @param m GetAccountBudgetProposalRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetAccountBudgetProposalRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAccountBudgetProposalRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetAccountBudgetProposalRequest.verify|verify} messages.
                         * @param message GetAccountBudgetProposalRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetAccountBudgetProposalRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAccountBudgetProposalRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetAccountBudgetProposalRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetAccountBudgetProposalRequest;

                        /**
                         * Decodes a GetAccountBudgetProposalRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAccountBudgetProposalRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetAccountBudgetProposalRequest;

                        /**
                         * Verifies a GetAccountBudgetProposalRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetAccountBudgetProposalRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetAccountBudgetProposalRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetAccountBudgetProposalRequest;

                        /**
                         * Creates a plain object from a GetAccountBudgetProposalRequest message. Also converts values to other types if specified.
                         * @param m GetAccountBudgetProposalRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetAccountBudgetProposalRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAccountBudgetProposalRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAccountBudgetProposalRequest. */
                    interface IMutateAccountBudgetProposalRequest {

                        /** MutateAccountBudgetProposalRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAccountBudgetProposalRequest operation */
                        operation?: (google.ads.googleads.v8.services.IAccountBudgetProposalOperation|null);

                        /** MutateAccountBudgetProposalRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateAccountBudgetProposalRequest. */
                    class MutateAccountBudgetProposalRequest implements IMutateAccountBudgetProposalRequest {

                        /**
                         * Constructs a new MutateAccountBudgetProposalRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAccountBudgetProposalRequest);

                        /** MutateAccountBudgetProposalRequest customer_id. */
                        public customer_id: string;

                        /** MutateAccountBudgetProposalRequest operation. */
                        public operation?: (google.ads.googleads.v8.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.v8.services.IMutateAccountBudgetProposalRequest): google.ads.googleads.v8.services.MutateAccountBudgetProposalRequest;

                        /**
                         * Encodes the specified MutateAccountBudgetProposalRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAccountBudgetProposalRequest.verify|verify} messages.
                         * @param m MutateAccountBudgetProposalRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAccountBudgetProposalRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAccountBudgetProposalRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAccountBudgetProposalRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAccountBudgetProposalRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAccountBudgetProposalRequest;

                        /**
                         * Verifies a MutateAccountBudgetProposalRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAccountBudgetProposalRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAccountBudgetProposalRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAccountBudgetProposalRequest;

                        /**
                         * Creates a plain object from a MutateAccountBudgetProposalRequest message. Also converts values to other types if specified.
                         * @param m MutateAccountBudgetProposalRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAccountBudgetProposalRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAccountBudgetProposalRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an AccountBudgetProposalOperation. */
                    interface IAccountBudgetProposalOperation {

                        /** AccountBudgetProposalOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** AccountBudgetProposalOperation create */
                        create?: (google.ads.googleads.v8.resources.IAccountBudgetProposal|null);

                        /** AccountBudgetProposalOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AccountBudgetProposalOperation. */
                    class AccountBudgetProposalOperation implements IAccountBudgetProposalOperation {

                        /**
                         * Constructs a new AccountBudgetProposalOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IAccountBudgetProposalOperation);

                        /** AccountBudgetProposalOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AccountBudgetProposalOperation create. */
                        public create?: (google.ads.googleads.v8.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.v8.services.IAccountBudgetProposalOperation): google.ads.googleads.v8.services.AccountBudgetProposalOperation;

                        /**
                         * Encodes the specified AccountBudgetProposalOperation message. Does not implicitly {@link google.ads.googleads.v8.services.AccountBudgetProposalOperation.verify|verify} messages.
                         * @param m AccountBudgetProposalOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IAccountBudgetProposalOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccountBudgetProposalOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IAccountBudgetProposalOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccountBudgetProposalOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.AccountBudgetProposalOperation;

                        /**
                         * Verifies an AccountBudgetProposalOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AccountBudgetProposalOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AccountBudgetProposalOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.AccountBudgetProposalOperation;

                        /**
                         * Creates a plain object from an AccountBudgetProposalOperation message. Also converts values to other types if specified.
                         * @param m AccountBudgetProposalOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.AccountBudgetProposalOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccountBudgetProposalOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAccountBudgetProposalResponse. */
                    interface IMutateAccountBudgetProposalResponse {

                        /** MutateAccountBudgetProposalResponse result */
                        result?: (google.ads.googleads.v8.services.IMutateAccountBudgetProposalResult|null);
                    }

                    /** Represents a MutateAccountBudgetProposalResponse. */
                    class MutateAccountBudgetProposalResponse implements IMutateAccountBudgetProposalResponse {

                        /**
                         * Constructs a new MutateAccountBudgetProposalResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAccountBudgetProposalResponse);

                        /** MutateAccountBudgetProposalResponse result. */
                        public result?: (google.ads.googleads.v8.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.v8.services.IMutateAccountBudgetProposalResponse): google.ads.googleads.v8.services.MutateAccountBudgetProposalResponse;

                        /**
                         * Encodes the specified MutateAccountBudgetProposalResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAccountBudgetProposalResponse.verify|verify} messages.
                         * @param m MutateAccountBudgetProposalResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAccountBudgetProposalResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAccountBudgetProposalResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAccountBudgetProposalResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAccountBudgetProposalResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAccountBudgetProposalResponse;

                        /**
                         * Verifies a MutateAccountBudgetProposalResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAccountBudgetProposalResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAccountBudgetProposalResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAccountBudgetProposalResponse;

                        /**
                         * Creates a plain object from a MutateAccountBudgetProposalResponse message. Also converts values to other types if specified.
                         * @param m MutateAccountBudgetProposalResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAccountBudgetProposalResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAccountBudgetProposalResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IMutateAccountBudgetProposalResult): google.ads.googleads.v8.services.MutateAccountBudgetProposalResult;

                        /**
                         * Encodes the specified MutateAccountBudgetProposalResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAccountBudgetProposalResult.verify|verify} messages.
                         * @param m MutateAccountBudgetProposalResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAccountBudgetProposalResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAccountBudgetProposalResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAccountBudgetProposalResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAccountBudgetProposalResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAccountBudgetProposalResult;

                        /**
                         * Verifies a MutateAccountBudgetProposalResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAccountBudgetProposalResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAccountBudgetProposalResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAccountBudgetProposalResult;

                        /**
                         * Creates a plain object from a MutateAccountBudgetProposalResult message. Also converts values to other types if specified.
                         * @param m MutateAccountBudgetProposalResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAccountBudgetProposalResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAccountBudgetProposalResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents an AccountBudgetService */
                    class AccountBudgetService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AccountBudgetService 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 AccountBudgetService 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): AccountBudgetService;

                        /**
                         * Calls GetAccountBudget.
                         * @param request GetAccountBudgetRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AccountBudget
                         */
                        public getAccountBudget(request: google.ads.googleads.v8.services.IGetAccountBudgetRequest, callback: google.ads.googleads.v8.services.AccountBudgetService.GetAccountBudgetCallback): void;

                        /**
                         * Calls GetAccountBudget.
                         * @param request GetAccountBudgetRequest message or plain object
                         * @returns Promise
                         */
                        public getAccountBudget(request: google.ads.googleads.v8.services.IGetAccountBudgetRequest): Promise<google.ads.googleads.v8.resources.AccountBudget>;
                    }

                    namespace AccountBudgetService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AccountBudgetService#getAccountBudget}.
                         * @param error Error, if any
                         * @param [response] AccountBudget
                         */
                        type GetAccountBudgetCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.AccountBudget) => void;
                    }

                    /** Properties of a GetAccountBudgetRequest. */
                    interface IGetAccountBudgetRequest {

                        /** GetAccountBudgetRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetAccountBudgetRequest. */
                    class GetAccountBudgetRequest implements IGetAccountBudgetRequest {

                        /**
                         * Constructs a new GetAccountBudgetRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetAccountBudgetRequest);

                        /** GetAccountBudgetRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetAccountBudgetRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAccountBudgetRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetAccountBudgetRequest): google.ads.googleads.v8.services.GetAccountBudgetRequest;

                        /**
                         * Encodes the specified GetAccountBudgetRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetAccountBudgetRequest.verify|verify} messages.
                         * @param m GetAccountBudgetRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetAccountBudgetRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAccountBudgetRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetAccountBudgetRequest.verify|verify} messages.
                         * @param message GetAccountBudgetRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetAccountBudgetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAccountBudgetRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetAccountBudgetRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetAccountBudgetRequest;

                        /**
                         * Decodes a GetAccountBudgetRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAccountBudgetRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetAccountBudgetRequest;

                        /**
                         * Verifies a GetAccountBudgetRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetAccountBudgetRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetAccountBudgetRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetAccountBudgetRequest;

                        /**
                         * Creates a plain object from a GetAccountBudgetRequest message. Also converts values to other types if specified.
                         * @param m GetAccountBudgetRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetAccountBudgetRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAccountBudgetRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetAccountLink.
                         * @param request GetAccountLinkRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AccountLink
                         */
                        public getAccountLink(request: google.ads.googleads.v8.services.IGetAccountLinkRequest, callback: google.ads.googleads.v8.services.AccountLinkService.GetAccountLinkCallback): void;

                        /**
                         * Calls GetAccountLink.
                         * @param request GetAccountLinkRequest message or plain object
                         * @returns Promise
                         */
                        public getAccountLink(request: google.ads.googleads.v8.services.IGetAccountLinkRequest): Promise<google.ads.googleads.v8.resources.AccountLink>;

                        /**
                         * 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.v8.services.ICreateAccountLinkRequest, callback: google.ads.googleads.v8.services.AccountLinkService.CreateAccountLinkCallback): void;

                        /**
                         * Calls CreateAccountLink.
                         * @param request CreateAccountLinkRequest message or plain object
                         * @returns Promise
                         */
                        public createAccountLink(request: google.ads.googleads.v8.services.ICreateAccountLinkRequest): Promise<google.ads.googleads.v8.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.v8.services.IMutateAccountLinkRequest, callback: google.ads.googleads.v8.services.AccountLinkService.MutateAccountLinkCallback): void;

                        /**
                         * Calls MutateAccountLink.
                         * @param request MutateAccountLinkRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAccountLink(request: google.ads.googleads.v8.services.IMutateAccountLinkRequest): Promise<google.ads.googleads.v8.services.MutateAccountLinkResponse>;
                    }

                    namespace AccountLinkService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AccountLinkService#getAccountLink}.
                         * @param error Error, if any
                         * @param [response] AccountLink
                         */
                        type GetAccountLinkCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.AccountLink) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AccountLinkService#createAccountLink}.
                         * @param error Error, if any
                         * @param [response] CreateAccountLinkResponse
                         */
                        type CreateAccountLinkCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.CreateAccountLinkResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AccountLinkService#mutateAccountLink}.
                         * @param error Error, if any
                         * @param [response] MutateAccountLinkResponse
                         */
                        type MutateAccountLinkCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateAccountLinkResponse) => void;
                    }

                    /** Properties of a GetAccountLinkRequest. */
                    interface IGetAccountLinkRequest {

                        /** GetAccountLinkRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetAccountLinkRequest. */
                    class GetAccountLinkRequest implements IGetAccountLinkRequest {

                        /**
                         * Constructs a new GetAccountLinkRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetAccountLinkRequest);

                        /** GetAccountLinkRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetAccountLinkRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAccountLinkRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetAccountLinkRequest): google.ads.googleads.v8.services.GetAccountLinkRequest;

                        /**
                         * Encodes the specified GetAccountLinkRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetAccountLinkRequest.verify|verify} messages.
                         * @param m GetAccountLinkRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetAccountLinkRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAccountLinkRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetAccountLinkRequest.verify|verify} messages.
                         * @param message GetAccountLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetAccountLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAccountLinkRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetAccountLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetAccountLinkRequest;

                        /**
                         * Decodes a GetAccountLinkRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAccountLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetAccountLinkRequest;

                        /**
                         * Verifies a GetAccountLinkRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetAccountLinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetAccountLinkRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetAccountLinkRequest;

                        /**
                         * Creates a plain object from a GetAccountLinkRequest message. Also converts values to other types if specified.
                         * @param m GetAccountLinkRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetAccountLinkRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAccountLinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CreateAccountLinkRequest. */
                    interface ICreateAccountLinkRequest {

                        /** CreateAccountLinkRequest customer_id */
                        customer_id?: (string|null);

                        /** CreateAccountLinkRequest account_link */
                        account_link?: (google.ads.googleads.v8.resources.IAccountLink|null);
                    }

                    /** Represents a CreateAccountLinkRequest. */
                    class CreateAccountLinkRequest implements ICreateAccountLinkRequest {

                        /**
                         * Constructs a new CreateAccountLinkRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICreateAccountLinkRequest);

                        /** CreateAccountLinkRequest customer_id. */
                        public customer_id: string;

                        /** CreateAccountLinkRequest account_link. */
                        public account_link?: (google.ads.googleads.v8.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.v8.services.ICreateAccountLinkRequest): google.ads.googleads.v8.services.CreateAccountLinkRequest;

                        /**
                         * Encodes the specified CreateAccountLinkRequest message. Does not implicitly {@link google.ads.googleads.v8.services.CreateAccountLinkRequest.verify|verify} messages.
                         * @param m CreateAccountLinkRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICreateAccountLinkRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateAccountLinkRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICreateAccountLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateAccountLinkRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CreateAccountLinkRequest;

                        /**
                         * Verifies a CreateAccountLinkRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CreateAccountLinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CreateAccountLinkRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CreateAccountLinkRequest;

                        /**
                         * Creates a plain object from a CreateAccountLinkRequest message. Also converts values to other types if specified.
                         * @param m CreateAccountLinkRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CreateAccountLinkRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateAccountLinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.ICreateAccountLinkResponse): google.ads.googleads.v8.services.CreateAccountLinkResponse;

                        /**
                         * Encodes the specified CreateAccountLinkResponse message. Does not implicitly {@link google.ads.googleads.v8.services.CreateAccountLinkResponse.verify|verify} messages.
                         * @param m CreateAccountLinkResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICreateAccountLinkResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateAccountLinkResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICreateAccountLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateAccountLinkResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CreateAccountLinkResponse;

                        /**
                         * Verifies a CreateAccountLinkResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CreateAccountLinkResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CreateAccountLinkResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CreateAccountLinkResponse;

                        /**
                         * Creates a plain object from a CreateAccountLinkResponse message. Also converts values to other types if specified.
                         * @param m CreateAccountLinkResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CreateAccountLinkResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateAccountLinkResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAccountLinkRequest. */
                    interface IMutateAccountLinkRequest {

                        /** MutateAccountLinkRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAccountLinkRequest operation */
                        operation?: (google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAccountLinkRequest);

                        /** MutateAccountLinkRequest customer_id. */
                        public customer_id: string;

                        /** MutateAccountLinkRequest operation. */
                        public operation?: (google.ads.googleads.v8.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.v8.services.IMutateAccountLinkRequest): google.ads.googleads.v8.services.MutateAccountLinkRequest;

                        /**
                         * Encodes the specified MutateAccountLinkRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAccountLinkRequest.verify|verify} messages.
                         * @param m MutateAccountLinkRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAccountLinkRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAccountLinkRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAccountLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAccountLinkRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAccountLinkRequest;

                        /**
                         * Verifies a MutateAccountLinkRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAccountLinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAccountLinkRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAccountLinkRequest;

                        /**
                         * Creates a plain object from a MutateAccountLinkRequest message. Also converts values to other types if specified.
                         * @param m MutateAccountLinkRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAccountLinkRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAccountLinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an AccountLinkOperation. */
                    interface IAccountLinkOperation {

                        /** AccountLinkOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** AccountLinkOperation update */
                        update?: (google.ads.googleads.v8.resources.IAccountLink|null);

                        /** AccountLinkOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AccountLinkOperation. */
                    class AccountLinkOperation implements IAccountLinkOperation {

                        /**
                         * Constructs a new AccountLinkOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IAccountLinkOperation);

                        /** AccountLinkOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AccountLinkOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.IAccountLinkOperation): google.ads.googleads.v8.services.AccountLinkOperation;

                        /**
                         * Encodes the specified AccountLinkOperation message. Does not implicitly {@link google.ads.googleads.v8.services.AccountLinkOperation.verify|verify} messages.
                         * @param m AccountLinkOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IAccountLinkOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AccountLinkOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IAccountLinkOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AccountLinkOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.AccountLinkOperation;

                        /**
                         * Verifies an AccountLinkOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AccountLinkOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AccountLinkOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.AccountLinkOperation;

                        /**
                         * Creates a plain object from an AccountLinkOperation message. Also converts values to other types if specified.
                         * @param m AccountLinkOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.AccountLinkOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AccountLinkOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAccountLinkResponse. */
                    interface IMutateAccountLinkResponse {

                        /** MutateAccountLinkResponse result */
                        result?: (google.ads.googleads.v8.services.IMutateAccountLinkResult|null);
                    }

                    /** Represents a MutateAccountLinkResponse. */
                    class MutateAccountLinkResponse implements IMutateAccountLinkResponse {

                        /**
                         * Constructs a new MutateAccountLinkResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAccountLinkResponse);

                        /** MutateAccountLinkResponse result. */
                        public result?: (google.ads.googleads.v8.services.IMutateAccountLinkResult|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.v8.services.IMutateAccountLinkResponse): google.ads.googleads.v8.services.MutateAccountLinkResponse;

                        /**
                         * Encodes the specified MutateAccountLinkResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAccountLinkResponse.verify|verify} messages.
                         * @param m MutateAccountLinkResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAccountLinkResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAccountLinkResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAccountLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAccountLinkResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAccountLinkResponse;

                        /**
                         * Verifies a MutateAccountLinkResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAccountLinkResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAccountLinkResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAccountLinkResponse;

                        /**
                         * Creates a plain object from a MutateAccountLinkResponse message. Also converts values to other types if specified.
                         * @param m MutateAccountLinkResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAccountLinkResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAccountLinkResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IMutateAccountLinkResult): google.ads.googleads.v8.services.MutateAccountLinkResult;

                        /**
                         * Encodes the specified MutateAccountLinkResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAccountLinkResult.verify|verify} messages.
                         * @param m MutateAccountLinkResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAccountLinkResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAccountLinkResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAccountLinkResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAccountLinkResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAccountLinkResult;

                        /**
                         * Verifies a MutateAccountLinkResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAccountLinkResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAccountLinkResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAccountLinkResult;

                        /**
                         * Creates a plain object from a MutateAccountLinkResult message. Also converts values to other types if specified.
                         * @param m MutateAccountLinkResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAccountLinkResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAccountLinkResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents an AdGroupAdAssetViewService */
                    class AdGroupAdAssetViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AdGroupAdAssetViewService 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 AdGroupAdAssetViewService 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): AdGroupAdAssetViewService;

                        /**
                         * Calls GetAdGroupAdAssetView.
                         * @param request GetAdGroupAdAssetViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AdGroupAdAssetView
                         */
                        public getAdGroupAdAssetView(request: google.ads.googleads.v8.services.IGetAdGroupAdAssetViewRequest, callback: google.ads.googleads.v8.services.AdGroupAdAssetViewService.GetAdGroupAdAssetViewCallback): void;

                        /**
                         * Calls GetAdGroupAdAssetView.
                         * @param request GetAdGroupAdAssetViewRequest message or plain object
                         * @returns Promise
                         */
                        public getAdGroupAdAssetView(request: google.ads.googleads.v8.services.IGetAdGroupAdAssetViewRequest): Promise<google.ads.googleads.v8.resources.AdGroupAdAssetView>;
                    }

                    namespace AdGroupAdAssetViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdGroupAdAssetViewService#getAdGroupAdAssetView}.
                         * @param error Error, if any
                         * @param [response] AdGroupAdAssetView
                         */
                        type GetAdGroupAdAssetViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.AdGroupAdAssetView) => void;
                    }

                    /** Properties of a GetAdGroupAdAssetViewRequest. */
                    interface IGetAdGroupAdAssetViewRequest {

                        /** GetAdGroupAdAssetViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetAdGroupAdAssetViewRequest. */
                    class GetAdGroupAdAssetViewRequest implements IGetAdGroupAdAssetViewRequest {

                        /**
                         * Constructs a new GetAdGroupAdAssetViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetAdGroupAdAssetViewRequest);

                        /** GetAdGroupAdAssetViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetAdGroupAdAssetViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAdGroupAdAssetViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetAdGroupAdAssetViewRequest): google.ads.googleads.v8.services.GetAdGroupAdAssetViewRequest;

                        /**
                         * Encodes the specified GetAdGroupAdAssetViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupAdAssetViewRequest.verify|verify} messages.
                         * @param m GetAdGroupAdAssetViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetAdGroupAdAssetViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAdGroupAdAssetViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupAdAssetViewRequest.verify|verify} messages.
                         * @param message GetAdGroupAdAssetViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetAdGroupAdAssetViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAdGroupAdAssetViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetAdGroupAdAssetViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetAdGroupAdAssetViewRequest;

                        /**
                         * Decodes a GetAdGroupAdAssetViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAdGroupAdAssetViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetAdGroupAdAssetViewRequest;

                        /**
                         * Verifies a GetAdGroupAdAssetViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetAdGroupAdAssetViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetAdGroupAdAssetViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetAdGroupAdAssetViewRequest;

                        /**
                         * Creates a plain object from a GetAdGroupAdAssetViewRequest message. Also converts values to other types if specified.
                         * @param m GetAdGroupAdAssetViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetAdGroupAdAssetViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAdGroupAdAssetViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetAdGroupAdLabel.
                         * @param request GetAdGroupAdLabelRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AdGroupAdLabel
                         */
                        public getAdGroupAdLabel(request: google.ads.googleads.v8.services.IGetAdGroupAdLabelRequest, callback: google.ads.googleads.v8.services.AdGroupAdLabelService.GetAdGroupAdLabelCallback): void;

                        /**
                         * Calls GetAdGroupAdLabel.
                         * @param request GetAdGroupAdLabelRequest message or plain object
                         * @returns Promise
                         */
                        public getAdGroupAdLabel(request: google.ads.googleads.v8.services.IGetAdGroupAdLabelRequest): Promise<google.ads.googleads.v8.resources.AdGroupAdLabel>;

                        /**
                         * 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.v8.services.IMutateAdGroupAdLabelsRequest, callback: google.ads.googleads.v8.services.AdGroupAdLabelService.MutateAdGroupAdLabelsCallback): void;

                        /**
                         * Calls MutateAdGroupAdLabels.
                         * @param request MutateAdGroupAdLabelsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAdGroupAdLabels(request: google.ads.googleads.v8.services.IMutateAdGroupAdLabelsRequest): Promise<google.ads.googleads.v8.services.MutateAdGroupAdLabelsResponse>;
                    }

                    namespace AdGroupAdLabelService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdGroupAdLabelService#getAdGroupAdLabel}.
                         * @param error Error, if any
                         * @param [response] AdGroupAdLabel
                         */
                        type GetAdGroupAdLabelCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.AdGroupAdLabel) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdGroupAdLabelService#mutateAdGroupAdLabels}.
                         * @param error Error, if any
                         * @param [response] MutateAdGroupAdLabelsResponse
                         */
                        type MutateAdGroupAdLabelsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateAdGroupAdLabelsResponse) => void;
                    }

                    /** Properties of a GetAdGroupAdLabelRequest. */
                    interface IGetAdGroupAdLabelRequest {

                        /** GetAdGroupAdLabelRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetAdGroupAdLabelRequest. */
                    class GetAdGroupAdLabelRequest implements IGetAdGroupAdLabelRequest {

                        /**
                         * Constructs a new GetAdGroupAdLabelRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetAdGroupAdLabelRequest);

                        /** GetAdGroupAdLabelRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetAdGroupAdLabelRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAdGroupAdLabelRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetAdGroupAdLabelRequest): google.ads.googleads.v8.services.GetAdGroupAdLabelRequest;

                        /**
                         * Encodes the specified GetAdGroupAdLabelRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupAdLabelRequest.verify|verify} messages.
                         * @param m GetAdGroupAdLabelRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetAdGroupAdLabelRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAdGroupAdLabelRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupAdLabelRequest.verify|verify} messages.
                         * @param message GetAdGroupAdLabelRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetAdGroupAdLabelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAdGroupAdLabelRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetAdGroupAdLabelRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetAdGroupAdLabelRequest;

                        /**
                         * Decodes a GetAdGroupAdLabelRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAdGroupAdLabelRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetAdGroupAdLabelRequest;

                        /**
                         * Verifies a GetAdGroupAdLabelRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetAdGroupAdLabelRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetAdGroupAdLabelRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetAdGroupAdLabelRequest;

                        /**
                         * Creates a plain object from a GetAdGroupAdLabelRequest message. Also converts values to other types if specified.
                         * @param m GetAdGroupAdLabelRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetAdGroupAdLabelRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAdGroupAdLabelRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupAdLabelsRequest. */
                    interface IMutateAdGroupAdLabelsRequest {

                        /** MutateAdGroupAdLabelsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAdGroupAdLabelsRequest operations */
                        operations?: (google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupAdLabelsRequest);

                        /** MutateAdGroupAdLabelsRequest customer_id. */
                        public customer_id: string;

                        /** MutateAdGroupAdLabelsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.services.IMutateAdGroupAdLabelsRequest): google.ads.googleads.v8.services.MutateAdGroupAdLabelsRequest;

                        /**
                         * Encodes the specified MutateAdGroupAdLabelsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupAdLabelsRequest.verify|verify} messages.
                         * @param m MutateAdGroupAdLabelsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupAdLabelsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupAdLabelsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdGroupAdLabelsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupAdLabelsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdGroupAdLabelsRequest;

                        /**
                         * Verifies a MutateAdGroupAdLabelsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupAdLabelsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupAdLabelsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupAdLabelsRequest;

                        /**
                         * Creates a plain object from a MutateAdGroupAdLabelsRequest message. Also converts values to other types if specified.
                         * @param m MutateAdGroupAdLabelsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupAdLabelsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupAdLabelsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an AdGroupAdLabelOperation. */
                    interface IAdGroupAdLabelOperation {

                        /** AdGroupAdLabelOperation create */
                        create?: (google.ads.googleads.v8.resources.IAdGroupAdLabel|null);

                        /** AdGroupAdLabelOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AdGroupAdLabelOperation. */
                    class AdGroupAdLabelOperation implements IAdGroupAdLabelOperation {

                        /**
                         * Constructs a new AdGroupAdLabelOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IAdGroupAdLabelOperation);

                        /** AdGroupAdLabelOperation create. */
                        public create?: (google.ads.googleads.v8.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.v8.services.IAdGroupAdLabelOperation): google.ads.googleads.v8.services.AdGroupAdLabelOperation;

                        /**
                         * Encodes the specified AdGroupAdLabelOperation message. Does not implicitly {@link google.ads.googleads.v8.services.AdGroupAdLabelOperation.verify|verify} messages.
                         * @param m AdGroupAdLabelOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IAdGroupAdLabelOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAdLabelOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IAdGroupAdLabelOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAdLabelOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.AdGroupAdLabelOperation;

                        /**
                         * Verifies an AdGroupAdLabelOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupAdLabelOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupAdLabelOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.AdGroupAdLabelOperation;

                        /**
                         * Creates a plain object from an AdGroupAdLabelOperation message. Also converts values to other types if specified.
                         * @param m AdGroupAdLabelOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.AdGroupAdLabelOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAdLabelOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupAdLabelsResponse. */
                    interface IMutateAdGroupAdLabelsResponse {

                        /** MutateAdGroupAdLabelsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupAdLabelsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateAdGroupAdLabelResult[]|null);
                    }

                    /** Represents a MutateAdGroupAdLabelsResponse. */
                    class MutateAdGroupAdLabelsResponse implements IMutateAdGroupAdLabelsResponse {

                        /**
                         * Constructs a new MutateAdGroupAdLabelsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupAdLabelsResponse);

                        /** MutateAdGroupAdLabelsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupAdLabelsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateAdGroupAdLabelsResponse): google.ads.googleads.v8.services.MutateAdGroupAdLabelsResponse;

                        /**
                         * Encodes the specified MutateAdGroupAdLabelsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupAdLabelsResponse.verify|verify} messages.
                         * @param m MutateAdGroupAdLabelsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupAdLabelsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupAdLabelsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdGroupAdLabelsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupAdLabelsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdGroupAdLabelsResponse;

                        /**
                         * Verifies a MutateAdGroupAdLabelsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupAdLabelsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupAdLabelsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupAdLabelsResponse;

                        /**
                         * Creates a plain object from a MutateAdGroupAdLabelsResponse message. Also converts values to other types if specified.
                         * @param m MutateAdGroupAdLabelsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupAdLabelsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupAdLabelsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IMutateAdGroupAdLabelResult): google.ads.googleads.v8.services.MutateAdGroupAdLabelResult;

                        /**
                         * Encodes the specified MutateAdGroupAdLabelResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupAdLabelResult.verify|verify} messages.
                         * @param m MutateAdGroupAdLabelResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupAdLabelResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupAdLabelResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdGroupAdLabelResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupAdLabelResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdGroupAdLabelResult;

                        /**
                         * Verifies a MutateAdGroupAdLabelResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupAdLabelResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupAdLabelResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupAdLabelResult;

                        /**
                         * Creates a plain object from a MutateAdGroupAdLabelResult message. Also converts values to other types if specified.
                         * @param m MutateAdGroupAdLabelResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupAdLabelResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupAdLabelResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetAdGroupAd.
                         * @param request GetAdGroupAdRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AdGroupAd
                         */
                        public getAdGroupAd(request: google.ads.googleads.v8.services.IGetAdGroupAdRequest, callback: google.ads.googleads.v8.services.AdGroupAdService.GetAdGroupAdCallback): void;

                        /**
                         * Calls GetAdGroupAd.
                         * @param request GetAdGroupAdRequest message or plain object
                         * @returns Promise
                         */
                        public getAdGroupAd(request: google.ads.googleads.v8.services.IGetAdGroupAdRequest): Promise<google.ads.googleads.v8.resources.AdGroupAd>;

                        /**
                         * 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.v8.services.IMutateAdGroupAdsRequest, callback: google.ads.googleads.v8.services.AdGroupAdService.MutateAdGroupAdsCallback): void;

                        /**
                         * Calls MutateAdGroupAds.
                         * @param request MutateAdGroupAdsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAdGroupAds(request: google.ads.googleads.v8.services.IMutateAdGroupAdsRequest): Promise<google.ads.googleads.v8.services.MutateAdGroupAdsResponse>;
                    }

                    namespace AdGroupAdService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdGroupAdService#getAdGroupAd}.
                         * @param error Error, if any
                         * @param [response] AdGroupAd
                         */
                        type GetAdGroupAdCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.AdGroupAd) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdGroupAdService#mutateAdGroupAds}.
                         * @param error Error, if any
                         * @param [response] MutateAdGroupAdsResponse
                         */
                        type MutateAdGroupAdsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateAdGroupAdsResponse) => void;
                    }

                    /** Properties of a GetAdGroupAdRequest. */
                    interface IGetAdGroupAdRequest {

                        /** GetAdGroupAdRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetAdGroupAdRequest. */
                    class GetAdGroupAdRequest implements IGetAdGroupAdRequest {

                        /**
                         * Constructs a new GetAdGroupAdRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetAdGroupAdRequest);

                        /** GetAdGroupAdRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetAdGroupAdRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAdGroupAdRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetAdGroupAdRequest): google.ads.googleads.v8.services.GetAdGroupAdRequest;

                        /**
                         * Encodes the specified GetAdGroupAdRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupAdRequest.verify|verify} messages.
                         * @param m GetAdGroupAdRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetAdGroupAdRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAdGroupAdRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupAdRequest.verify|verify} messages.
                         * @param message GetAdGroupAdRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetAdGroupAdRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAdGroupAdRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetAdGroupAdRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetAdGroupAdRequest;

                        /**
                         * Decodes a GetAdGroupAdRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAdGroupAdRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetAdGroupAdRequest;

                        /**
                         * Verifies a GetAdGroupAdRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetAdGroupAdRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetAdGroupAdRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetAdGroupAdRequest;

                        /**
                         * Creates a plain object from a GetAdGroupAdRequest message. Also converts values to other types if specified.
                         * @param m GetAdGroupAdRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetAdGroupAdRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAdGroupAdRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupAdsRequest. */
                    interface IMutateAdGroupAdsRequest {

                        /** MutateAdGroupAdsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAdGroupAdsRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateAdGroupAdsRequest. */
                    class MutateAdGroupAdsRequest implements IMutateAdGroupAdsRequest {

                        /**
                         * Constructs a new MutateAdGroupAdsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupAdsRequest);

                        /** MutateAdGroupAdsRequest customer_id. */
                        public customer_id: string;

                        /** MutateAdGroupAdsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateAdGroupAdsRequest): google.ads.googleads.v8.services.MutateAdGroupAdsRequest;

                        /**
                         * Encodes the specified MutateAdGroupAdsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupAdsRequest.verify|verify} messages.
                         * @param m MutateAdGroupAdsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupAdsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupAdsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdGroupAdsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupAdsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdGroupAdsRequest;

                        /**
                         * Verifies a MutateAdGroupAdsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupAdsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupAdsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupAdsRequest;

                        /**
                         * Creates a plain object from a MutateAdGroupAdsRequest message. Also converts values to other types if specified.
                         * @param m MutateAdGroupAdsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupAdsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupAdsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.common.IPolicyValidationParameter|null);

                        /** AdGroupAdOperation create */
                        create?: (google.ads.googleads.v8.resources.IAdGroupAd|null);

                        /** AdGroupAdOperation update */
                        update?: (google.ads.googleads.v8.resources.IAdGroupAd|null);

                        /** AdGroupAdOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AdGroupAdOperation. */
                    class AdGroupAdOperation implements IAdGroupAdOperation {

                        /**
                         * Constructs a new AdGroupAdOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IAdGroupAdOperation);

                        /** AdGroupAdOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdGroupAdOperation policy_validation_parameter. */
                        public policy_validation_parameter?: (google.ads.googleads.v8.common.IPolicyValidationParameter|null);

                        /** AdGroupAdOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IAdGroupAd|null);

                        /** AdGroupAdOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.IAdGroupAdOperation): google.ads.googleads.v8.services.AdGroupAdOperation;

                        /**
                         * Encodes the specified AdGroupAdOperation message. Does not implicitly {@link google.ads.googleads.v8.services.AdGroupAdOperation.verify|verify} messages.
                         * @param m AdGroupAdOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IAdGroupAdOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAdOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IAdGroupAdOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAdOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.AdGroupAdOperation;

                        /**
                         * Verifies an AdGroupAdOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupAdOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupAdOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.AdGroupAdOperation;

                        /**
                         * Creates a plain object from an AdGroupAdOperation message. Also converts values to other types if specified.
                         * @param m AdGroupAdOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.AdGroupAdOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAdOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupAdsResponse. */
                    interface IMutateAdGroupAdsResponse {

                        /** MutateAdGroupAdsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupAdsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateAdGroupAdResult[]|null);
                    }

                    /** Represents a MutateAdGroupAdsResponse. */
                    class MutateAdGroupAdsResponse implements IMutateAdGroupAdsResponse {

                        /**
                         * Constructs a new MutateAdGroupAdsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupAdsResponse);

                        /** MutateAdGroupAdsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupAdsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateAdGroupAdsResponse): google.ads.googleads.v8.services.MutateAdGroupAdsResponse;

                        /**
                         * Encodes the specified MutateAdGroupAdsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupAdsResponse.verify|verify} messages.
                         * @param m MutateAdGroupAdsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupAdsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupAdsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdGroupAdsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupAdsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdGroupAdsResponse;

                        /**
                         * Verifies a MutateAdGroupAdsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupAdsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupAdsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupAdsResponse;

                        /**
                         * Creates a plain object from a MutateAdGroupAdsResponse message. Also converts values to other types if specified.
                         * @param m MutateAdGroupAdsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupAdsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupAdsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupAdResult. */
                    interface IMutateAdGroupAdResult {

                        /** MutateAdGroupAdResult resource_name */
                        resource_name?: (string|null);

                        /** MutateAdGroupAdResult ad_group_ad */
                        ad_group_ad?: (google.ads.googleads.v8.resources.IAdGroupAd|null);
                    }

                    /** Represents a MutateAdGroupAdResult. */
                    class MutateAdGroupAdResult implements IMutateAdGroupAdResult {

                        /**
                         * Constructs a new MutateAdGroupAdResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupAdResult);

                        /** MutateAdGroupAdResult resource_name. */
                        public resource_name: string;

                        /** MutateAdGroupAdResult ad_group_ad. */
                        public ad_group_ad?: (google.ads.googleads.v8.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.v8.services.IMutateAdGroupAdResult): google.ads.googleads.v8.services.MutateAdGroupAdResult;

                        /**
                         * Encodes the specified MutateAdGroupAdResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupAdResult.verify|verify} messages.
                         * @param m MutateAdGroupAdResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupAdResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupAdResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdGroupAdResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupAdResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdGroupAdResult;

                        /**
                         * Verifies a MutateAdGroupAdResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupAdResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupAdResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupAdResult;

                        /**
                         * Creates a plain object from a MutateAdGroupAdResult message. Also converts values to other types if specified.
                         * @param m MutateAdGroupAdResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupAdResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupAdResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetAdGroupAsset.
                         * @param request GetAdGroupAssetRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AdGroupAsset
                         */
                        public getAdGroupAsset(request: google.ads.googleads.v8.services.IGetAdGroupAssetRequest, callback: google.ads.googleads.v8.services.AdGroupAssetService.GetAdGroupAssetCallback): void;

                        /**
                         * Calls GetAdGroupAsset.
                         * @param request GetAdGroupAssetRequest message or plain object
                         * @returns Promise
                         */
                        public getAdGroupAsset(request: google.ads.googleads.v8.services.IGetAdGroupAssetRequest): Promise<google.ads.googleads.v8.resources.AdGroupAsset>;

                        /**
                         * 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.v8.services.IMutateAdGroupAssetsRequest, callback: google.ads.googleads.v8.services.AdGroupAssetService.MutateAdGroupAssetsCallback): void;

                        /**
                         * Calls MutateAdGroupAssets.
                         * @param request MutateAdGroupAssetsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAdGroupAssets(request: google.ads.googleads.v8.services.IMutateAdGroupAssetsRequest): Promise<google.ads.googleads.v8.services.MutateAdGroupAssetsResponse>;
                    }

                    namespace AdGroupAssetService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdGroupAssetService#getAdGroupAsset}.
                         * @param error Error, if any
                         * @param [response] AdGroupAsset
                         */
                        type GetAdGroupAssetCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.AdGroupAsset) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdGroupAssetService#mutateAdGroupAssets}.
                         * @param error Error, if any
                         * @param [response] MutateAdGroupAssetsResponse
                         */
                        type MutateAdGroupAssetsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateAdGroupAssetsResponse) => void;
                    }

                    /** Properties of a GetAdGroupAssetRequest. */
                    interface IGetAdGroupAssetRequest {

                        /** GetAdGroupAssetRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetAdGroupAssetRequest. */
                    class GetAdGroupAssetRequest implements IGetAdGroupAssetRequest {

                        /**
                         * Constructs a new GetAdGroupAssetRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetAdGroupAssetRequest);

                        /** GetAdGroupAssetRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetAdGroupAssetRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAdGroupAssetRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetAdGroupAssetRequest): google.ads.googleads.v8.services.GetAdGroupAssetRequest;

                        /**
                         * Encodes the specified GetAdGroupAssetRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupAssetRequest.verify|verify} messages.
                         * @param m GetAdGroupAssetRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetAdGroupAssetRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAdGroupAssetRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupAssetRequest.verify|verify} messages.
                         * @param message GetAdGroupAssetRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetAdGroupAssetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAdGroupAssetRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetAdGroupAssetRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetAdGroupAssetRequest;

                        /**
                         * Decodes a GetAdGroupAssetRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAdGroupAssetRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetAdGroupAssetRequest;

                        /**
                         * Verifies a GetAdGroupAssetRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetAdGroupAssetRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetAdGroupAssetRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetAdGroupAssetRequest;

                        /**
                         * Creates a plain object from a GetAdGroupAssetRequest message. Also converts values to other types if specified.
                         * @param m GetAdGroupAssetRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetAdGroupAssetRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAdGroupAssetRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupAssetsRequest. */
                    interface IMutateAdGroupAssetsRequest {

                        /** MutateAdGroupAssetsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAdGroupAssetsRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateAdGroupAssetsRequest. */
                    class MutateAdGroupAssetsRequest implements IMutateAdGroupAssetsRequest {

                        /**
                         * Constructs a new MutateAdGroupAssetsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupAssetsRequest);

                        /** MutateAdGroupAssetsRequest customer_id. */
                        public customer_id: string;

                        /** MutateAdGroupAssetsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateAdGroupAssetsRequest): google.ads.googleads.v8.services.MutateAdGroupAssetsRequest;

                        /**
                         * Encodes the specified MutateAdGroupAssetsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupAssetsRequest.verify|verify} messages.
                         * @param m MutateAdGroupAssetsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupAssetsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupAssetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdGroupAssetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupAssetsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdGroupAssetsRequest;

                        /**
                         * Verifies a MutateAdGroupAssetsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupAssetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupAssetsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupAssetsRequest;

                        /**
                         * Creates a plain object from a MutateAdGroupAssetsRequest message. Also converts values to other types if specified.
                         * @param m MutateAdGroupAssetsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupAssetsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupAssetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an AdGroupAssetOperation. */
                    interface IAdGroupAssetOperation {

                        /** AdGroupAssetOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdGroupAssetOperation create */
                        create?: (google.ads.googleads.v8.resources.IAdGroupAsset|null);

                        /** AdGroupAssetOperation update */
                        update?: (google.ads.googleads.v8.resources.IAdGroupAsset|null);

                        /** AdGroupAssetOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AdGroupAssetOperation. */
                    class AdGroupAssetOperation implements IAdGroupAssetOperation {

                        /**
                         * Constructs a new AdGroupAssetOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IAdGroupAssetOperation);

                        /** AdGroupAssetOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdGroupAssetOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IAdGroupAsset|null);

                        /** AdGroupAssetOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.IAdGroupAssetOperation): google.ads.googleads.v8.services.AdGroupAssetOperation;

                        /**
                         * Encodes the specified AdGroupAssetOperation message. Does not implicitly {@link google.ads.googleads.v8.services.AdGroupAssetOperation.verify|verify} messages.
                         * @param m AdGroupAssetOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IAdGroupAssetOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupAssetOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IAdGroupAssetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupAssetOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.AdGroupAssetOperation;

                        /**
                         * Verifies an AdGroupAssetOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupAssetOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupAssetOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.AdGroupAssetOperation;

                        /**
                         * Creates a plain object from an AdGroupAssetOperation message. Also converts values to other types if specified.
                         * @param m AdGroupAssetOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.AdGroupAssetOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupAssetOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupAssetsResponse. */
                    interface IMutateAdGroupAssetsResponse {

                        /** MutateAdGroupAssetsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupAssetsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateAdGroupAssetResult[]|null);
                    }

                    /** Represents a MutateAdGroupAssetsResponse. */
                    class MutateAdGroupAssetsResponse implements IMutateAdGroupAssetsResponse {

                        /**
                         * Constructs a new MutateAdGroupAssetsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupAssetsResponse);

                        /** MutateAdGroupAssetsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupAssetsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateAdGroupAssetsResponse): google.ads.googleads.v8.services.MutateAdGroupAssetsResponse;

                        /**
                         * Encodes the specified MutateAdGroupAssetsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupAssetsResponse.verify|verify} messages.
                         * @param m MutateAdGroupAssetsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupAssetsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupAssetsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdGroupAssetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupAssetsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdGroupAssetsResponse;

                        /**
                         * Verifies a MutateAdGroupAssetsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupAssetsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupAssetsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupAssetsResponse;

                        /**
                         * Creates a plain object from a MutateAdGroupAssetsResponse message. Also converts values to other types if specified.
                         * @param m MutateAdGroupAssetsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupAssetsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupAssetsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupAssetResult. */
                    interface IMutateAdGroupAssetResult {

                        /** MutateAdGroupAssetResult resource_name */
                        resource_name?: (string|null);

                        /** MutateAdGroupAssetResult ad_group_asset */
                        ad_group_asset?: (google.ads.googleads.v8.resources.IAdGroupAsset|null);
                    }

                    /** Represents a MutateAdGroupAssetResult. */
                    class MutateAdGroupAssetResult implements IMutateAdGroupAssetResult {

                        /**
                         * Constructs a new MutateAdGroupAssetResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupAssetResult);

                        /** MutateAdGroupAssetResult resource_name. */
                        public resource_name: string;

                        /** MutateAdGroupAssetResult ad_group_asset. */
                        public ad_group_asset?: (google.ads.googleads.v8.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.v8.services.IMutateAdGroupAssetResult): google.ads.googleads.v8.services.MutateAdGroupAssetResult;

                        /**
                         * Encodes the specified MutateAdGroupAssetResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupAssetResult.verify|verify} messages.
                         * @param m MutateAdGroupAssetResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupAssetResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupAssetResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdGroupAssetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupAssetResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdGroupAssetResult;

                        /**
                         * Verifies a MutateAdGroupAssetResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupAssetResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupAssetResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupAssetResult;

                        /**
                         * Creates a plain object from a MutateAdGroupAssetResult message. Also converts values to other types if specified.
                         * @param m MutateAdGroupAssetResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupAssetResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupAssetResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents an AdGroupAudienceViewService */
                    class AdGroupAudienceViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AdGroupAudienceViewService 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 AdGroupAudienceViewService 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): AdGroupAudienceViewService;

                        /**
                         * Calls GetAdGroupAudienceView.
                         * @param request GetAdGroupAudienceViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AdGroupAudienceView
                         */
                        public getAdGroupAudienceView(request: google.ads.googleads.v8.services.IGetAdGroupAudienceViewRequest, callback: google.ads.googleads.v8.services.AdGroupAudienceViewService.GetAdGroupAudienceViewCallback): void;

                        /**
                         * Calls GetAdGroupAudienceView.
                         * @param request GetAdGroupAudienceViewRequest message or plain object
                         * @returns Promise
                         */
                        public getAdGroupAudienceView(request: google.ads.googleads.v8.services.IGetAdGroupAudienceViewRequest): Promise<google.ads.googleads.v8.resources.AdGroupAudienceView>;
                    }

                    namespace AdGroupAudienceViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdGroupAudienceViewService#getAdGroupAudienceView}.
                         * @param error Error, if any
                         * @param [response] AdGroupAudienceView
                         */
                        type GetAdGroupAudienceViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.AdGroupAudienceView) => void;
                    }

                    /** Properties of a GetAdGroupAudienceViewRequest. */
                    interface IGetAdGroupAudienceViewRequest {

                        /** GetAdGroupAudienceViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetAdGroupAudienceViewRequest. */
                    class GetAdGroupAudienceViewRequest implements IGetAdGroupAudienceViewRequest {

                        /**
                         * Constructs a new GetAdGroupAudienceViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetAdGroupAudienceViewRequest);

                        /** GetAdGroupAudienceViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetAdGroupAudienceViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAdGroupAudienceViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetAdGroupAudienceViewRequest): google.ads.googleads.v8.services.GetAdGroupAudienceViewRequest;

                        /**
                         * Encodes the specified GetAdGroupAudienceViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupAudienceViewRequest.verify|verify} messages.
                         * @param m GetAdGroupAudienceViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetAdGroupAudienceViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAdGroupAudienceViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupAudienceViewRequest.verify|verify} messages.
                         * @param message GetAdGroupAudienceViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetAdGroupAudienceViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAdGroupAudienceViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetAdGroupAudienceViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetAdGroupAudienceViewRequest;

                        /**
                         * Decodes a GetAdGroupAudienceViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAdGroupAudienceViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetAdGroupAudienceViewRequest;

                        /**
                         * Verifies a GetAdGroupAudienceViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetAdGroupAudienceViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetAdGroupAudienceViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetAdGroupAudienceViewRequest;

                        /**
                         * Creates a plain object from a GetAdGroupAudienceViewRequest message. Also converts values to other types if specified.
                         * @param m GetAdGroupAudienceViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetAdGroupAudienceViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAdGroupAudienceViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetAdGroupBidModifier.
                         * @param request GetAdGroupBidModifierRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AdGroupBidModifier
                         */
                        public getAdGroupBidModifier(request: google.ads.googleads.v8.services.IGetAdGroupBidModifierRequest, callback: google.ads.googleads.v8.services.AdGroupBidModifierService.GetAdGroupBidModifierCallback): void;

                        /**
                         * Calls GetAdGroupBidModifier.
                         * @param request GetAdGroupBidModifierRequest message or plain object
                         * @returns Promise
                         */
                        public getAdGroupBidModifier(request: google.ads.googleads.v8.services.IGetAdGroupBidModifierRequest): Promise<google.ads.googleads.v8.resources.AdGroupBidModifier>;

                        /**
                         * 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.v8.services.IMutateAdGroupBidModifiersRequest, callback: google.ads.googleads.v8.services.AdGroupBidModifierService.MutateAdGroupBidModifiersCallback): void;

                        /**
                         * Calls MutateAdGroupBidModifiers.
                         * @param request MutateAdGroupBidModifiersRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAdGroupBidModifiers(request: google.ads.googleads.v8.services.IMutateAdGroupBidModifiersRequest): Promise<google.ads.googleads.v8.services.MutateAdGroupBidModifiersResponse>;
                    }

                    namespace AdGroupBidModifierService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdGroupBidModifierService#getAdGroupBidModifier}.
                         * @param error Error, if any
                         * @param [response] AdGroupBidModifier
                         */
                        type GetAdGroupBidModifierCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.AdGroupBidModifier) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdGroupBidModifierService#mutateAdGroupBidModifiers}.
                         * @param error Error, if any
                         * @param [response] MutateAdGroupBidModifiersResponse
                         */
                        type MutateAdGroupBidModifiersCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateAdGroupBidModifiersResponse) => void;
                    }

                    /** Properties of a GetAdGroupBidModifierRequest. */
                    interface IGetAdGroupBidModifierRequest {

                        /** GetAdGroupBidModifierRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetAdGroupBidModifierRequest. */
                    class GetAdGroupBidModifierRequest implements IGetAdGroupBidModifierRequest {

                        /**
                         * Constructs a new GetAdGroupBidModifierRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetAdGroupBidModifierRequest);

                        /** GetAdGroupBidModifierRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetAdGroupBidModifierRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAdGroupBidModifierRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetAdGroupBidModifierRequest): google.ads.googleads.v8.services.GetAdGroupBidModifierRequest;

                        /**
                         * Encodes the specified GetAdGroupBidModifierRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupBidModifierRequest.verify|verify} messages.
                         * @param m GetAdGroupBidModifierRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetAdGroupBidModifierRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAdGroupBidModifierRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupBidModifierRequest.verify|verify} messages.
                         * @param message GetAdGroupBidModifierRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetAdGroupBidModifierRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAdGroupBidModifierRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetAdGroupBidModifierRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetAdGroupBidModifierRequest;

                        /**
                         * Decodes a GetAdGroupBidModifierRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAdGroupBidModifierRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetAdGroupBidModifierRequest;

                        /**
                         * Verifies a GetAdGroupBidModifierRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetAdGroupBidModifierRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetAdGroupBidModifierRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetAdGroupBidModifierRequest;

                        /**
                         * Creates a plain object from a GetAdGroupBidModifierRequest message. Also converts values to other types if specified.
                         * @param m GetAdGroupBidModifierRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetAdGroupBidModifierRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAdGroupBidModifierRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupBidModifiersRequest. */
                    interface IMutateAdGroupBidModifiersRequest {

                        /** MutateAdGroupBidModifiersRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAdGroupBidModifiersRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateAdGroupBidModifiersRequest. */
                    class MutateAdGroupBidModifiersRequest implements IMutateAdGroupBidModifiersRequest {

                        /**
                         * Constructs a new MutateAdGroupBidModifiersRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupBidModifiersRequest);

                        /** MutateAdGroupBidModifiersRequest customer_id. */
                        public customer_id: string;

                        /** MutateAdGroupBidModifiersRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateAdGroupBidModifiersRequest): google.ads.googleads.v8.services.MutateAdGroupBidModifiersRequest;

                        /**
                         * Encodes the specified MutateAdGroupBidModifiersRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupBidModifiersRequest.verify|verify} messages.
                         * @param m MutateAdGroupBidModifiersRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupBidModifiersRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupBidModifiersRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdGroupBidModifiersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupBidModifiersRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdGroupBidModifiersRequest;

                        /**
                         * Verifies a MutateAdGroupBidModifiersRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupBidModifiersRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupBidModifiersRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupBidModifiersRequest;

                        /**
                         * Creates a plain object from a MutateAdGroupBidModifiersRequest message. Also converts values to other types if specified.
                         * @param m MutateAdGroupBidModifiersRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupBidModifiersRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupBidModifiersRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an AdGroupBidModifierOperation. */
                    interface IAdGroupBidModifierOperation {

                        /** AdGroupBidModifierOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdGroupBidModifierOperation create */
                        create?: (google.ads.googleads.v8.resources.IAdGroupBidModifier|null);

                        /** AdGroupBidModifierOperation update */
                        update?: (google.ads.googleads.v8.resources.IAdGroupBidModifier|null);

                        /** AdGroupBidModifierOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AdGroupBidModifierOperation. */
                    class AdGroupBidModifierOperation implements IAdGroupBidModifierOperation {

                        /**
                         * Constructs a new AdGroupBidModifierOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IAdGroupBidModifierOperation);

                        /** AdGroupBidModifierOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdGroupBidModifierOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IAdGroupBidModifier|null);

                        /** AdGroupBidModifierOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.IAdGroupBidModifierOperation): google.ads.googleads.v8.services.AdGroupBidModifierOperation;

                        /**
                         * Encodes the specified AdGroupBidModifierOperation message. Does not implicitly {@link google.ads.googleads.v8.services.AdGroupBidModifierOperation.verify|verify} messages.
                         * @param m AdGroupBidModifierOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IAdGroupBidModifierOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupBidModifierOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IAdGroupBidModifierOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupBidModifierOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.AdGroupBidModifierOperation;

                        /**
                         * Verifies an AdGroupBidModifierOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupBidModifierOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupBidModifierOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.AdGroupBidModifierOperation;

                        /**
                         * Creates a plain object from an AdGroupBidModifierOperation message. Also converts values to other types if specified.
                         * @param m AdGroupBidModifierOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.AdGroupBidModifierOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupBidModifierOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupBidModifiersResponse. */
                    interface IMutateAdGroupBidModifiersResponse {

                        /** MutateAdGroupBidModifiersResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupBidModifiersResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateAdGroupBidModifierResult[]|null);
                    }

                    /** Represents a MutateAdGroupBidModifiersResponse. */
                    class MutateAdGroupBidModifiersResponse implements IMutateAdGroupBidModifiersResponse {

                        /**
                         * Constructs a new MutateAdGroupBidModifiersResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupBidModifiersResponse);

                        /** MutateAdGroupBidModifiersResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupBidModifiersResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateAdGroupBidModifiersResponse): google.ads.googleads.v8.services.MutateAdGroupBidModifiersResponse;

                        /**
                         * Encodes the specified MutateAdGroupBidModifiersResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupBidModifiersResponse.verify|verify} messages.
                         * @param m MutateAdGroupBidModifiersResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupBidModifiersResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupBidModifiersResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdGroupBidModifiersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupBidModifiersResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdGroupBidModifiersResponse;

                        /**
                         * Verifies a MutateAdGroupBidModifiersResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupBidModifiersResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupBidModifiersResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupBidModifiersResponse;

                        /**
                         * Creates a plain object from a MutateAdGroupBidModifiersResponse message. Also converts values to other types if specified.
                         * @param m MutateAdGroupBidModifiersResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupBidModifiersResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupBidModifiersResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.resources.IAdGroupBidModifier|null);
                    }

                    /** Represents a MutateAdGroupBidModifierResult. */
                    class MutateAdGroupBidModifierResult implements IMutateAdGroupBidModifierResult {

                        /**
                         * Constructs a new MutateAdGroupBidModifierResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupBidModifierResult);

                        /** MutateAdGroupBidModifierResult resource_name. */
                        public resource_name: string;

                        /** MutateAdGroupBidModifierResult ad_group_bid_modifier. */
                        public ad_group_bid_modifier?: (google.ads.googleads.v8.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.v8.services.IMutateAdGroupBidModifierResult): google.ads.googleads.v8.services.MutateAdGroupBidModifierResult;

                        /**
                         * Encodes the specified MutateAdGroupBidModifierResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupBidModifierResult.verify|verify} messages.
                         * @param m MutateAdGroupBidModifierResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupBidModifierResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupBidModifierResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdGroupBidModifierResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupBidModifierResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdGroupBidModifierResult;

                        /**
                         * Verifies a MutateAdGroupBidModifierResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupBidModifierResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupBidModifierResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupBidModifierResult;

                        /**
                         * Creates a plain object from a MutateAdGroupBidModifierResult message. Also converts values to other types if specified.
                         * @param m MutateAdGroupBidModifierResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupBidModifierResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupBidModifierResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetAdGroupCriterionLabel.
                         * @param request GetAdGroupCriterionLabelRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AdGroupCriterionLabel
                         */
                        public getAdGroupCriterionLabel(request: google.ads.googleads.v8.services.IGetAdGroupCriterionLabelRequest, callback: google.ads.googleads.v8.services.AdGroupCriterionLabelService.GetAdGroupCriterionLabelCallback): void;

                        /**
                         * Calls GetAdGroupCriterionLabel.
                         * @param request GetAdGroupCriterionLabelRequest message or plain object
                         * @returns Promise
                         */
                        public getAdGroupCriterionLabel(request: google.ads.googleads.v8.services.IGetAdGroupCriterionLabelRequest): Promise<google.ads.googleads.v8.resources.AdGroupCriterionLabel>;

                        /**
                         * 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.v8.services.IMutateAdGroupCriterionLabelsRequest, callback: google.ads.googleads.v8.services.AdGroupCriterionLabelService.MutateAdGroupCriterionLabelsCallback): void;

                        /**
                         * Calls MutateAdGroupCriterionLabels.
                         * @param request MutateAdGroupCriterionLabelsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAdGroupCriterionLabels(request: google.ads.googleads.v8.services.IMutateAdGroupCriterionLabelsRequest): Promise<google.ads.googleads.v8.services.MutateAdGroupCriterionLabelsResponse>;
                    }

                    namespace AdGroupCriterionLabelService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdGroupCriterionLabelService#getAdGroupCriterionLabel}.
                         * @param error Error, if any
                         * @param [response] AdGroupCriterionLabel
                         */
                        type GetAdGroupCriterionLabelCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.AdGroupCriterionLabel) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdGroupCriterionLabelService#mutateAdGroupCriterionLabels}.
                         * @param error Error, if any
                         * @param [response] MutateAdGroupCriterionLabelsResponse
                         */
                        type MutateAdGroupCriterionLabelsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateAdGroupCriterionLabelsResponse) => void;
                    }

                    /** Properties of a GetAdGroupCriterionLabelRequest. */
                    interface IGetAdGroupCriterionLabelRequest {

                        /** GetAdGroupCriterionLabelRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetAdGroupCriterionLabelRequest. */
                    class GetAdGroupCriterionLabelRequest implements IGetAdGroupCriterionLabelRequest {

                        /**
                         * Constructs a new GetAdGroupCriterionLabelRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetAdGroupCriterionLabelRequest);

                        /** GetAdGroupCriterionLabelRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetAdGroupCriterionLabelRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAdGroupCriterionLabelRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetAdGroupCriterionLabelRequest): google.ads.googleads.v8.services.GetAdGroupCriterionLabelRequest;

                        /**
                         * Encodes the specified GetAdGroupCriterionLabelRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupCriterionLabelRequest.verify|verify} messages.
                         * @param m GetAdGroupCriterionLabelRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetAdGroupCriterionLabelRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAdGroupCriterionLabelRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupCriterionLabelRequest.verify|verify} messages.
                         * @param message GetAdGroupCriterionLabelRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetAdGroupCriterionLabelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAdGroupCriterionLabelRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetAdGroupCriterionLabelRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetAdGroupCriterionLabelRequest;

                        /**
                         * Decodes a GetAdGroupCriterionLabelRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAdGroupCriterionLabelRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetAdGroupCriterionLabelRequest;

                        /**
                         * Verifies a GetAdGroupCriterionLabelRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetAdGroupCriterionLabelRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetAdGroupCriterionLabelRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetAdGroupCriterionLabelRequest;

                        /**
                         * Creates a plain object from a GetAdGroupCriterionLabelRequest message. Also converts values to other types if specified.
                         * @param m GetAdGroupCriterionLabelRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetAdGroupCriterionLabelRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAdGroupCriterionLabelRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupCriterionLabelsRequest. */
                    interface IMutateAdGroupCriterionLabelsRequest {

                        /** MutateAdGroupCriterionLabelsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAdGroupCriterionLabelsRequest operations */
                        operations?: (google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupCriterionLabelsRequest);

                        /** MutateAdGroupCriterionLabelsRequest customer_id. */
                        public customer_id: string;

                        /** MutateAdGroupCriterionLabelsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.services.IMutateAdGroupCriterionLabelsRequest): google.ads.googleads.v8.services.MutateAdGroupCriterionLabelsRequest;

                        /**
                         * Encodes the specified MutateAdGroupCriterionLabelsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupCriterionLabelsRequest.verify|verify} messages.
                         * @param m MutateAdGroupCriterionLabelsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupCriterionLabelsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupCriterionLabelsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdGroupCriterionLabelsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupCriterionLabelsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdGroupCriterionLabelsRequest;

                        /**
                         * Verifies a MutateAdGroupCriterionLabelsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupCriterionLabelsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupCriterionLabelsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupCriterionLabelsRequest;

                        /**
                         * Creates a plain object from a MutateAdGroupCriterionLabelsRequest message. Also converts values to other types if specified.
                         * @param m MutateAdGroupCriterionLabelsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupCriterionLabelsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupCriterionLabelsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an AdGroupCriterionLabelOperation. */
                    interface IAdGroupCriterionLabelOperation {

                        /** AdGroupCriterionLabelOperation create */
                        create?: (google.ads.googleads.v8.resources.IAdGroupCriterionLabel|null);

                        /** AdGroupCriterionLabelOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AdGroupCriterionLabelOperation. */
                    class AdGroupCriterionLabelOperation implements IAdGroupCriterionLabelOperation {

                        /**
                         * Constructs a new AdGroupCriterionLabelOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IAdGroupCriterionLabelOperation);

                        /** AdGroupCriterionLabelOperation create. */
                        public create?: (google.ads.googleads.v8.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.v8.services.IAdGroupCriterionLabelOperation): google.ads.googleads.v8.services.AdGroupCriterionLabelOperation;

                        /**
                         * Encodes the specified AdGroupCriterionLabelOperation message. Does not implicitly {@link google.ads.googleads.v8.services.AdGroupCriterionLabelOperation.verify|verify} messages.
                         * @param m AdGroupCriterionLabelOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IAdGroupCriterionLabelOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupCriterionLabelOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IAdGroupCriterionLabelOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupCriterionLabelOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.AdGroupCriterionLabelOperation;

                        /**
                         * Verifies an AdGroupCriterionLabelOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupCriterionLabelOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupCriterionLabelOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.AdGroupCriterionLabelOperation;

                        /**
                         * Creates a plain object from an AdGroupCriterionLabelOperation message. Also converts values to other types if specified.
                         * @param m AdGroupCriterionLabelOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.AdGroupCriterionLabelOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupCriterionLabelOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupCriterionLabelsResponse. */
                    interface IMutateAdGroupCriterionLabelsResponse {

                        /** MutateAdGroupCriterionLabelsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupCriterionLabelsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateAdGroupCriterionLabelResult[]|null);
                    }

                    /** Represents a MutateAdGroupCriterionLabelsResponse. */
                    class MutateAdGroupCriterionLabelsResponse implements IMutateAdGroupCriterionLabelsResponse {

                        /**
                         * Constructs a new MutateAdGroupCriterionLabelsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupCriterionLabelsResponse);

                        /** MutateAdGroupCriterionLabelsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupCriterionLabelsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateAdGroupCriterionLabelsResponse): google.ads.googleads.v8.services.MutateAdGroupCriterionLabelsResponse;

                        /**
                         * Encodes the specified MutateAdGroupCriterionLabelsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupCriterionLabelsResponse.verify|verify} messages.
                         * @param m MutateAdGroupCriterionLabelsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupCriterionLabelsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupCriterionLabelsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdGroupCriterionLabelsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupCriterionLabelsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdGroupCriterionLabelsResponse;

                        /**
                         * Verifies a MutateAdGroupCriterionLabelsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupCriterionLabelsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupCriterionLabelsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupCriterionLabelsResponse;

                        /**
                         * Creates a plain object from a MutateAdGroupCriterionLabelsResponse message. Also converts values to other types if specified.
                         * @param m MutateAdGroupCriterionLabelsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupCriterionLabelsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupCriterionLabelsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IMutateAdGroupCriterionLabelResult): google.ads.googleads.v8.services.MutateAdGroupCriterionLabelResult;

                        /**
                         * Encodes the specified MutateAdGroupCriterionLabelResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupCriterionLabelResult.verify|verify} messages.
                         * @param m MutateAdGroupCriterionLabelResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupCriterionLabelResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupCriterionLabelResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdGroupCriterionLabelResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupCriterionLabelResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdGroupCriterionLabelResult;

                        /**
                         * Verifies a MutateAdGroupCriterionLabelResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupCriterionLabelResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupCriterionLabelResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupCriterionLabelResult;

                        /**
                         * Creates a plain object from a MutateAdGroupCriterionLabelResult message. Also converts values to other types if specified.
                         * @param m MutateAdGroupCriterionLabelResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupCriterionLabelResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupCriterionLabelResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetAdGroupCriterion.
                         * @param request GetAdGroupCriterionRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AdGroupCriterion
                         */
                        public getAdGroupCriterion(request: google.ads.googleads.v8.services.IGetAdGroupCriterionRequest, callback: google.ads.googleads.v8.services.AdGroupCriterionService.GetAdGroupCriterionCallback): void;

                        /**
                         * Calls GetAdGroupCriterion.
                         * @param request GetAdGroupCriterionRequest message or plain object
                         * @returns Promise
                         */
                        public getAdGroupCriterion(request: google.ads.googleads.v8.services.IGetAdGroupCriterionRequest): Promise<google.ads.googleads.v8.resources.AdGroupCriterion>;

                        /**
                         * 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.v8.services.IMutateAdGroupCriteriaRequest, callback: google.ads.googleads.v8.services.AdGroupCriterionService.MutateAdGroupCriteriaCallback): void;

                        /**
                         * Calls MutateAdGroupCriteria.
                         * @param request MutateAdGroupCriteriaRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAdGroupCriteria(request: google.ads.googleads.v8.services.IMutateAdGroupCriteriaRequest): Promise<google.ads.googleads.v8.services.MutateAdGroupCriteriaResponse>;
                    }

                    namespace AdGroupCriterionService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdGroupCriterionService#getAdGroupCriterion}.
                         * @param error Error, if any
                         * @param [response] AdGroupCriterion
                         */
                        type GetAdGroupCriterionCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.AdGroupCriterion) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdGroupCriterionService#mutateAdGroupCriteria}.
                         * @param error Error, if any
                         * @param [response] MutateAdGroupCriteriaResponse
                         */
                        type MutateAdGroupCriteriaCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateAdGroupCriteriaResponse) => void;
                    }

                    /** Properties of a GetAdGroupCriterionRequest. */
                    interface IGetAdGroupCriterionRequest {

                        /** GetAdGroupCriterionRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetAdGroupCriterionRequest. */
                    class GetAdGroupCriterionRequest implements IGetAdGroupCriterionRequest {

                        /**
                         * Constructs a new GetAdGroupCriterionRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetAdGroupCriterionRequest);

                        /** GetAdGroupCriterionRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetAdGroupCriterionRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAdGroupCriterionRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetAdGroupCriterionRequest): google.ads.googleads.v8.services.GetAdGroupCriterionRequest;

                        /**
                         * Encodes the specified GetAdGroupCriterionRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupCriterionRequest.verify|verify} messages.
                         * @param m GetAdGroupCriterionRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetAdGroupCriterionRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAdGroupCriterionRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupCriterionRequest.verify|verify} messages.
                         * @param message GetAdGroupCriterionRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetAdGroupCriterionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAdGroupCriterionRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetAdGroupCriterionRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetAdGroupCriterionRequest;

                        /**
                         * Decodes a GetAdGroupCriterionRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAdGroupCriterionRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetAdGroupCriterionRequest;

                        /**
                         * Verifies a GetAdGroupCriterionRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetAdGroupCriterionRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetAdGroupCriterionRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetAdGroupCriterionRequest;

                        /**
                         * Creates a plain object from a GetAdGroupCriterionRequest message. Also converts values to other types if specified.
                         * @param m GetAdGroupCriterionRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetAdGroupCriterionRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAdGroupCriterionRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupCriteriaRequest. */
                    interface IMutateAdGroupCriteriaRequest {

                        /** MutateAdGroupCriteriaRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAdGroupCriteriaRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateAdGroupCriteriaRequest. */
                    class MutateAdGroupCriteriaRequest implements IMutateAdGroupCriteriaRequest {

                        /**
                         * Constructs a new MutateAdGroupCriteriaRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupCriteriaRequest);

                        /** MutateAdGroupCriteriaRequest customer_id. */
                        public customer_id: string;

                        /** MutateAdGroupCriteriaRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateAdGroupCriteriaRequest): google.ads.googleads.v8.services.MutateAdGroupCriteriaRequest;

                        /**
                         * Encodes the specified MutateAdGroupCriteriaRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupCriteriaRequest.verify|verify} messages.
                         * @param m MutateAdGroupCriteriaRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupCriteriaRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupCriteriaRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdGroupCriteriaRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupCriteriaRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdGroupCriteriaRequest;

                        /**
                         * Verifies a MutateAdGroupCriteriaRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupCriteriaRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupCriteriaRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupCriteriaRequest;

                        /**
                         * Creates a plain object from a MutateAdGroupCriteriaRequest message. Also converts values to other types if specified.
                         * @param m MutateAdGroupCriteriaRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupCriteriaRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupCriteriaRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.common.IPolicyViolationKey[]|null);

                        /** AdGroupCriterionOperation create */
                        create?: (google.ads.googleads.v8.resources.IAdGroupCriterion|null);

                        /** AdGroupCriterionOperation update */
                        update?: (google.ads.googleads.v8.resources.IAdGroupCriterion|null);

                        /** AdGroupCriterionOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AdGroupCriterionOperation. */
                    class AdGroupCriterionOperation implements IAdGroupCriterionOperation {

                        /**
                         * Constructs a new AdGroupCriterionOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.IPolicyViolationKey[];

                        /** AdGroupCriterionOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IAdGroupCriterion|null);

                        /** AdGroupCriterionOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.IAdGroupCriterionOperation): google.ads.googleads.v8.services.AdGroupCriterionOperation;

                        /**
                         * Encodes the specified AdGroupCriterionOperation message. Does not implicitly {@link google.ads.googleads.v8.services.AdGroupCriterionOperation.verify|verify} messages.
                         * @param m AdGroupCriterionOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IAdGroupCriterionOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupCriterionOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IAdGroupCriterionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupCriterionOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.AdGroupCriterionOperation;

                        /**
                         * Verifies an AdGroupCriterionOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupCriterionOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupCriterionOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.AdGroupCriterionOperation;

                        /**
                         * Creates a plain object from an AdGroupCriterionOperation message. Also converts values to other types if specified.
                         * @param m AdGroupCriterionOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.AdGroupCriterionOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupCriterionOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupCriteriaResponse. */
                    interface IMutateAdGroupCriteriaResponse {

                        /** MutateAdGroupCriteriaResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupCriteriaResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateAdGroupCriterionResult[]|null);
                    }

                    /** Represents a MutateAdGroupCriteriaResponse. */
                    class MutateAdGroupCriteriaResponse implements IMutateAdGroupCriteriaResponse {

                        /**
                         * Constructs a new MutateAdGroupCriteriaResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupCriteriaResponse);

                        /** MutateAdGroupCriteriaResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupCriteriaResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateAdGroupCriteriaResponse): google.ads.googleads.v8.services.MutateAdGroupCriteriaResponse;

                        /**
                         * Encodes the specified MutateAdGroupCriteriaResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupCriteriaResponse.verify|verify} messages.
                         * @param m MutateAdGroupCriteriaResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupCriteriaResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupCriteriaResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdGroupCriteriaResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupCriteriaResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdGroupCriteriaResponse;

                        /**
                         * Verifies a MutateAdGroupCriteriaResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupCriteriaResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupCriteriaResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupCriteriaResponse;

                        /**
                         * Creates a plain object from a MutateAdGroupCriteriaResponse message. Also converts values to other types if specified.
                         * @param m MutateAdGroupCriteriaResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupCriteriaResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupCriteriaResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupCriterionResult. */
                    interface IMutateAdGroupCriterionResult {

                        /** MutateAdGroupCriterionResult resource_name */
                        resource_name?: (string|null);

                        /** MutateAdGroupCriterionResult ad_group_criterion */
                        ad_group_criterion?: (google.ads.googleads.v8.resources.IAdGroupCriterion|null);
                    }

                    /** Represents a MutateAdGroupCriterionResult. */
                    class MutateAdGroupCriterionResult implements IMutateAdGroupCriterionResult {

                        /**
                         * Constructs a new MutateAdGroupCriterionResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupCriterionResult);

                        /** MutateAdGroupCriterionResult resource_name. */
                        public resource_name: string;

                        /** MutateAdGroupCriterionResult ad_group_criterion. */
                        public ad_group_criterion?: (google.ads.googleads.v8.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.v8.services.IMutateAdGroupCriterionResult): google.ads.googleads.v8.services.MutateAdGroupCriterionResult;

                        /**
                         * Encodes the specified MutateAdGroupCriterionResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupCriterionResult.verify|verify} messages.
                         * @param m MutateAdGroupCriterionResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupCriterionResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupCriterionResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdGroupCriterionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupCriterionResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdGroupCriterionResult;

                        /**
                         * Verifies a MutateAdGroupCriterionResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupCriterionResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupCriterionResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupCriterionResult;

                        /**
                         * Creates a plain object from a MutateAdGroupCriterionResult message. Also converts values to other types if specified.
                         * @param m MutateAdGroupCriterionResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupCriterionResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupCriterionResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents an AdGroupCriterionSimulationService */
                    class AdGroupCriterionSimulationService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AdGroupCriterionSimulationService 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 AdGroupCriterionSimulationService 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): AdGroupCriterionSimulationService;

                        /**
                         * Calls GetAdGroupCriterionSimulation.
                         * @param request GetAdGroupCriterionSimulationRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AdGroupCriterionSimulation
                         */
                        public getAdGroupCriterionSimulation(request: google.ads.googleads.v8.services.IGetAdGroupCriterionSimulationRequest, callback: google.ads.googleads.v8.services.AdGroupCriterionSimulationService.GetAdGroupCriterionSimulationCallback): void;

                        /**
                         * Calls GetAdGroupCriterionSimulation.
                         * @param request GetAdGroupCriterionSimulationRequest message or plain object
                         * @returns Promise
                         */
                        public getAdGroupCriterionSimulation(request: google.ads.googleads.v8.services.IGetAdGroupCriterionSimulationRequest): Promise<google.ads.googleads.v8.resources.AdGroupCriterionSimulation>;
                    }

                    namespace AdGroupCriterionSimulationService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdGroupCriterionSimulationService#getAdGroupCriterionSimulation}.
                         * @param error Error, if any
                         * @param [response] AdGroupCriterionSimulation
                         */
                        type GetAdGroupCriterionSimulationCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.AdGroupCriterionSimulation) => void;
                    }

                    /** Properties of a GetAdGroupCriterionSimulationRequest. */
                    interface IGetAdGroupCriterionSimulationRequest {

                        /** GetAdGroupCriterionSimulationRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetAdGroupCriterionSimulationRequest. */
                    class GetAdGroupCriterionSimulationRequest implements IGetAdGroupCriterionSimulationRequest {

                        /**
                         * Constructs a new GetAdGroupCriterionSimulationRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetAdGroupCriterionSimulationRequest);

                        /** GetAdGroupCriterionSimulationRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetAdGroupCriterionSimulationRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAdGroupCriterionSimulationRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetAdGroupCriterionSimulationRequest): google.ads.googleads.v8.services.GetAdGroupCriterionSimulationRequest;

                        /**
                         * Encodes the specified GetAdGroupCriterionSimulationRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupCriterionSimulationRequest.verify|verify} messages.
                         * @param m GetAdGroupCriterionSimulationRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetAdGroupCriterionSimulationRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAdGroupCriterionSimulationRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupCriterionSimulationRequest.verify|verify} messages.
                         * @param message GetAdGroupCriterionSimulationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetAdGroupCriterionSimulationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAdGroupCriterionSimulationRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetAdGroupCriterionSimulationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetAdGroupCriterionSimulationRequest;

                        /**
                         * Decodes a GetAdGroupCriterionSimulationRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAdGroupCriterionSimulationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetAdGroupCriterionSimulationRequest;

                        /**
                         * Verifies a GetAdGroupCriterionSimulationRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetAdGroupCriterionSimulationRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetAdGroupCriterionSimulationRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetAdGroupCriterionSimulationRequest;

                        /**
                         * Creates a plain object from a GetAdGroupCriterionSimulationRequest message. Also converts values to other types if specified.
                         * @param m GetAdGroupCriterionSimulationRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetAdGroupCriterionSimulationRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAdGroupCriterionSimulationRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents an AdGroupExtensionSettingService */
                    class AdGroupExtensionSettingService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AdGroupExtensionSettingService 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 AdGroupExtensionSettingService 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): AdGroupExtensionSettingService;

                        /**
                         * Calls GetAdGroupExtensionSetting.
                         * @param request GetAdGroupExtensionSettingRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AdGroupExtensionSetting
                         */
                        public getAdGroupExtensionSetting(request: google.ads.googleads.v8.services.IGetAdGroupExtensionSettingRequest, callback: google.ads.googleads.v8.services.AdGroupExtensionSettingService.GetAdGroupExtensionSettingCallback): void;

                        /**
                         * Calls GetAdGroupExtensionSetting.
                         * @param request GetAdGroupExtensionSettingRequest message or plain object
                         * @returns Promise
                         */
                        public getAdGroupExtensionSetting(request: google.ads.googleads.v8.services.IGetAdGroupExtensionSettingRequest): Promise<google.ads.googleads.v8.resources.AdGroupExtensionSetting>;

                        /**
                         * Calls MutateAdGroupExtensionSettings.
                         * @param request MutateAdGroupExtensionSettingsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateAdGroupExtensionSettingsResponse
                         */
                        public mutateAdGroupExtensionSettings(request: google.ads.googleads.v8.services.IMutateAdGroupExtensionSettingsRequest, callback: google.ads.googleads.v8.services.AdGroupExtensionSettingService.MutateAdGroupExtensionSettingsCallback): void;

                        /**
                         * Calls MutateAdGroupExtensionSettings.
                         * @param request MutateAdGroupExtensionSettingsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAdGroupExtensionSettings(request: google.ads.googleads.v8.services.IMutateAdGroupExtensionSettingsRequest): Promise<google.ads.googleads.v8.services.MutateAdGroupExtensionSettingsResponse>;
                    }

                    namespace AdGroupExtensionSettingService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdGroupExtensionSettingService#getAdGroupExtensionSetting}.
                         * @param error Error, if any
                         * @param [response] AdGroupExtensionSetting
                         */
                        type GetAdGroupExtensionSettingCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.AdGroupExtensionSetting) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdGroupExtensionSettingService#mutateAdGroupExtensionSettings}.
                         * @param error Error, if any
                         * @param [response] MutateAdGroupExtensionSettingsResponse
                         */
                        type MutateAdGroupExtensionSettingsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateAdGroupExtensionSettingsResponse) => void;
                    }

                    /** Properties of a GetAdGroupExtensionSettingRequest. */
                    interface IGetAdGroupExtensionSettingRequest {

                        /** GetAdGroupExtensionSettingRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetAdGroupExtensionSettingRequest. */
                    class GetAdGroupExtensionSettingRequest implements IGetAdGroupExtensionSettingRequest {

                        /**
                         * Constructs a new GetAdGroupExtensionSettingRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetAdGroupExtensionSettingRequest);

                        /** GetAdGroupExtensionSettingRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetAdGroupExtensionSettingRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAdGroupExtensionSettingRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetAdGroupExtensionSettingRequest): google.ads.googleads.v8.services.GetAdGroupExtensionSettingRequest;

                        /**
                         * Encodes the specified GetAdGroupExtensionSettingRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupExtensionSettingRequest.verify|verify} messages.
                         * @param m GetAdGroupExtensionSettingRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetAdGroupExtensionSettingRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAdGroupExtensionSettingRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupExtensionSettingRequest.verify|verify} messages.
                         * @param message GetAdGroupExtensionSettingRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetAdGroupExtensionSettingRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAdGroupExtensionSettingRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetAdGroupExtensionSettingRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetAdGroupExtensionSettingRequest;

                        /**
                         * Decodes a GetAdGroupExtensionSettingRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAdGroupExtensionSettingRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetAdGroupExtensionSettingRequest;

                        /**
                         * Verifies a GetAdGroupExtensionSettingRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetAdGroupExtensionSettingRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetAdGroupExtensionSettingRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetAdGroupExtensionSettingRequest;

                        /**
                         * Creates a plain object from a GetAdGroupExtensionSettingRequest message. Also converts values to other types if specified.
                         * @param m GetAdGroupExtensionSettingRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetAdGroupExtensionSettingRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAdGroupExtensionSettingRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupExtensionSettingsRequest. */
                    interface IMutateAdGroupExtensionSettingsRequest {

                        /** MutateAdGroupExtensionSettingsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAdGroupExtensionSettingsRequest operations */
                        operations?: (google.ads.googleads.v8.services.IAdGroupExtensionSettingOperation[]|null);

                        /** MutateAdGroupExtensionSettingsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateAdGroupExtensionSettingsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateAdGroupExtensionSettingsRequest. */
                    class MutateAdGroupExtensionSettingsRequest implements IMutateAdGroupExtensionSettingsRequest {

                        /**
                         * Constructs a new MutateAdGroupExtensionSettingsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupExtensionSettingsRequest);

                        /** MutateAdGroupExtensionSettingsRequest customer_id. */
                        public customer_id: string;

                        /** MutateAdGroupExtensionSettingsRequest operations. */
                        public operations: google.ads.googleads.v8.services.IAdGroupExtensionSettingOperation[];

                        /** MutateAdGroupExtensionSettingsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateAdGroupExtensionSettingsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateAdGroupExtensionSettingsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupExtensionSettingsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateAdGroupExtensionSettingsRequest): google.ads.googleads.v8.services.MutateAdGroupExtensionSettingsRequest;

                        /**
                         * Encodes the specified MutateAdGroupExtensionSettingsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupExtensionSettingsRequest.verify|verify} messages.
                         * @param m MutateAdGroupExtensionSettingsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupExtensionSettingsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupExtensionSettingsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupExtensionSettingsRequest.verify|verify} messages.
                         * @param message MutateAdGroupExtensionSettingsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateAdGroupExtensionSettingsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupExtensionSettingsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateAdGroupExtensionSettingsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateAdGroupExtensionSettingsRequest;

                        /**
                         * Decodes a MutateAdGroupExtensionSettingsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupExtensionSettingsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateAdGroupExtensionSettingsRequest;

                        /**
                         * Verifies a MutateAdGroupExtensionSettingsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupExtensionSettingsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupExtensionSettingsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupExtensionSettingsRequest;

                        /**
                         * Creates a plain object from a MutateAdGroupExtensionSettingsRequest message. Also converts values to other types if specified.
                         * @param m MutateAdGroupExtensionSettingsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupExtensionSettingsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupExtensionSettingsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an AdGroupExtensionSettingOperation. */
                    interface IAdGroupExtensionSettingOperation {

                        /** AdGroupExtensionSettingOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdGroupExtensionSettingOperation response_content_type */
                        response_content_type?: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);

                        /** AdGroupExtensionSettingOperation create */
                        create?: (google.ads.googleads.v8.resources.IAdGroupExtensionSetting|null);

                        /** AdGroupExtensionSettingOperation update */
                        update?: (google.ads.googleads.v8.resources.IAdGroupExtensionSetting|null);

                        /** AdGroupExtensionSettingOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AdGroupExtensionSettingOperation. */
                    class AdGroupExtensionSettingOperation implements IAdGroupExtensionSettingOperation {

                        /**
                         * Constructs a new AdGroupExtensionSettingOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IAdGroupExtensionSettingOperation);

                        /** AdGroupExtensionSettingOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdGroupExtensionSettingOperation response_content_type. */
                        public response_content_type: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType);

                        /** AdGroupExtensionSettingOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IAdGroupExtensionSetting|null);

                        /** AdGroupExtensionSettingOperation update. */
                        public update?: (google.ads.googleads.v8.resources.IAdGroupExtensionSetting|null);

                        /** AdGroupExtensionSettingOperation remove. */
                        public remove?: (string|null);

                        /** AdGroupExtensionSettingOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new AdGroupExtensionSettingOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupExtensionSettingOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IAdGroupExtensionSettingOperation): google.ads.googleads.v8.services.AdGroupExtensionSettingOperation;

                        /**
                         * Encodes the specified AdGroupExtensionSettingOperation message. Does not implicitly {@link google.ads.googleads.v8.services.AdGroupExtensionSettingOperation.verify|verify} messages.
                         * @param m AdGroupExtensionSettingOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IAdGroupExtensionSettingOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupExtensionSettingOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.AdGroupExtensionSettingOperation.verify|verify} messages.
                         * @param message AdGroupExtensionSettingOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IAdGroupExtensionSettingOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupExtensionSettingOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns AdGroupExtensionSettingOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.AdGroupExtensionSettingOperation;

                        /**
                         * Decodes an AdGroupExtensionSettingOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupExtensionSettingOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.AdGroupExtensionSettingOperation;

                        /**
                         * Verifies an AdGroupExtensionSettingOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupExtensionSettingOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupExtensionSettingOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.AdGroupExtensionSettingOperation;

                        /**
                         * Creates a plain object from an AdGroupExtensionSettingOperation message. Also converts values to other types if specified.
                         * @param m AdGroupExtensionSettingOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.AdGroupExtensionSettingOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupExtensionSettingOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupExtensionSettingsResponse. */
                    interface IMutateAdGroupExtensionSettingsResponse {

                        /** MutateAdGroupExtensionSettingsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupExtensionSettingsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateAdGroupExtensionSettingResult[]|null);
                    }

                    /** Represents a MutateAdGroupExtensionSettingsResponse. */
                    class MutateAdGroupExtensionSettingsResponse implements IMutateAdGroupExtensionSettingsResponse {

                        /**
                         * Constructs a new MutateAdGroupExtensionSettingsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupExtensionSettingsResponse);

                        /** MutateAdGroupExtensionSettingsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupExtensionSettingsResponse results. */
                        public results: google.ads.googleads.v8.services.IMutateAdGroupExtensionSettingResult[];

                        /**
                         * Creates a new MutateAdGroupExtensionSettingsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupExtensionSettingsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateAdGroupExtensionSettingsResponse): google.ads.googleads.v8.services.MutateAdGroupExtensionSettingsResponse;

                        /**
                         * Encodes the specified MutateAdGroupExtensionSettingsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupExtensionSettingsResponse.verify|verify} messages.
                         * @param m MutateAdGroupExtensionSettingsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupExtensionSettingsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupExtensionSettingsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupExtensionSettingsResponse.verify|verify} messages.
                         * @param message MutateAdGroupExtensionSettingsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateAdGroupExtensionSettingsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupExtensionSettingsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateAdGroupExtensionSettingsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateAdGroupExtensionSettingsResponse;

                        /**
                         * Decodes a MutateAdGroupExtensionSettingsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupExtensionSettingsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateAdGroupExtensionSettingsResponse;

                        /**
                         * Verifies a MutateAdGroupExtensionSettingsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupExtensionSettingsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupExtensionSettingsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupExtensionSettingsResponse;

                        /**
                         * Creates a plain object from a MutateAdGroupExtensionSettingsResponse message. Also converts values to other types if specified.
                         * @param m MutateAdGroupExtensionSettingsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupExtensionSettingsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupExtensionSettingsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupExtensionSettingResult. */
                    interface IMutateAdGroupExtensionSettingResult {

                        /** MutateAdGroupExtensionSettingResult resource_name */
                        resource_name?: (string|null);

                        /** MutateAdGroupExtensionSettingResult ad_group_extension_setting */
                        ad_group_extension_setting?: (google.ads.googleads.v8.resources.IAdGroupExtensionSetting|null);
                    }

                    /** Represents a MutateAdGroupExtensionSettingResult. */
                    class MutateAdGroupExtensionSettingResult implements IMutateAdGroupExtensionSettingResult {

                        /**
                         * Constructs a new MutateAdGroupExtensionSettingResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupExtensionSettingResult);

                        /** MutateAdGroupExtensionSettingResult resource_name. */
                        public resource_name: string;

                        /** MutateAdGroupExtensionSettingResult ad_group_extension_setting. */
                        public ad_group_extension_setting?: (google.ads.googleads.v8.resources.IAdGroupExtensionSetting|null);

                        /**
                         * Creates a new MutateAdGroupExtensionSettingResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupExtensionSettingResult instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateAdGroupExtensionSettingResult): google.ads.googleads.v8.services.MutateAdGroupExtensionSettingResult;

                        /**
                         * Encodes the specified MutateAdGroupExtensionSettingResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupExtensionSettingResult.verify|verify} messages.
                         * @param m MutateAdGroupExtensionSettingResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupExtensionSettingResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupExtensionSettingResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupExtensionSettingResult.verify|verify} messages.
                         * @param message MutateAdGroupExtensionSettingResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateAdGroupExtensionSettingResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupExtensionSettingResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateAdGroupExtensionSettingResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateAdGroupExtensionSettingResult;

                        /**
                         * Decodes a MutateAdGroupExtensionSettingResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupExtensionSettingResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateAdGroupExtensionSettingResult;

                        /**
                         * Verifies a MutateAdGroupExtensionSettingResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupExtensionSettingResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupExtensionSettingResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupExtensionSettingResult;

                        /**
                         * Creates a plain object from a MutateAdGroupExtensionSettingResult message. Also converts values to other types if specified.
                         * @param m MutateAdGroupExtensionSettingResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupExtensionSettingResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupExtensionSettingResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents an AdGroupFeedService */
                    class AdGroupFeedService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AdGroupFeedService 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 AdGroupFeedService 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): AdGroupFeedService;

                        /**
                         * Calls GetAdGroupFeed.
                         * @param request GetAdGroupFeedRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AdGroupFeed
                         */
                        public getAdGroupFeed(request: google.ads.googleads.v8.services.IGetAdGroupFeedRequest, callback: google.ads.googleads.v8.services.AdGroupFeedService.GetAdGroupFeedCallback): void;

                        /**
                         * Calls GetAdGroupFeed.
                         * @param request GetAdGroupFeedRequest message or plain object
                         * @returns Promise
                         */
                        public getAdGroupFeed(request: google.ads.googleads.v8.services.IGetAdGroupFeedRequest): Promise<google.ads.googleads.v8.resources.AdGroupFeed>;

                        /**
                         * Calls MutateAdGroupFeeds.
                         * @param request MutateAdGroupFeedsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateAdGroupFeedsResponse
                         */
                        public mutateAdGroupFeeds(request: google.ads.googleads.v8.services.IMutateAdGroupFeedsRequest, callback: google.ads.googleads.v8.services.AdGroupFeedService.MutateAdGroupFeedsCallback): void;

                        /**
                         * Calls MutateAdGroupFeeds.
                         * @param request MutateAdGroupFeedsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAdGroupFeeds(request: google.ads.googleads.v8.services.IMutateAdGroupFeedsRequest): Promise<google.ads.googleads.v8.services.MutateAdGroupFeedsResponse>;
                    }

                    namespace AdGroupFeedService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdGroupFeedService#getAdGroupFeed}.
                         * @param error Error, if any
                         * @param [response] AdGroupFeed
                         */
                        type GetAdGroupFeedCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.AdGroupFeed) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdGroupFeedService#mutateAdGroupFeeds}.
                         * @param error Error, if any
                         * @param [response] MutateAdGroupFeedsResponse
                         */
                        type MutateAdGroupFeedsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateAdGroupFeedsResponse) => void;
                    }

                    /** Properties of a GetAdGroupFeedRequest. */
                    interface IGetAdGroupFeedRequest {

                        /** GetAdGroupFeedRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetAdGroupFeedRequest. */
                    class GetAdGroupFeedRequest implements IGetAdGroupFeedRequest {

                        /**
                         * Constructs a new GetAdGroupFeedRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetAdGroupFeedRequest);

                        /** GetAdGroupFeedRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetAdGroupFeedRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAdGroupFeedRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetAdGroupFeedRequest): google.ads.googleads.v8.services.GetAdGroupFeedRequest;

                        /**
                         * Encodes the specified GetAdGroupFeedRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupFeedRequest.verify|verify} messages.
                         * @param m GetAdGroupFeedRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetAdGroupFeedRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAdGroupFeedRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupFeedRequest.verify|verify} messages.
                         * @param message GetAdGroupFeedRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetAdGroupFeedRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAdGroupFeedRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetAdGroupFeedRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetAdGroupFeedRequest;

                        /**
                         * Decodes a GetAdGroupFeedRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAdGroupFeedRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetAdGroupFeedRequest;

                        /**
                         * Verifies a GetAdGroupFeedRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetAdGroupFeedRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetAdGroupFeedRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetAdGroupFeedRequest;

                        /**
                         * Creates a plain object from a GetAdGroupFeedRequest message. Also converts values to other types if specified.
                         * @param m GetAdGroupFeedRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetAdGroupFeedRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAdGroupFeedRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupFeedsRequest. */
                    interface IMutateAdGroupFeedsRequest {

                        /** MutateAdGroupFeedsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAdGroupFeedsRequest operations */
                        operations?: (google.ads.googleads.v8.services.IAdGroupFeedOperation[]|null);

                        /** MutateAdGroupFeedsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateAdGroupFeedsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateAdGroupFeedsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateAdGroupFeedsRequest. */
                    class MutateAdGroupFeedsRequest implements IMutateAdGroupFeedsRequest {

                        /**
                         * Constructs a new MutateAdGroupFeedsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupFeedsRequest);

                        /** MutateAdGroupFeedsRequest customer_id. */
                        public customer_id: string;

                        /** MutateAdGroupFeedsRequest operations. */
                        public operations: google.ads.googleads.v8.services.IAdGroupFeedOperation[];

                        /** MutateAdGroupFeedsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateAdGroupFeedsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateAdGroupFeedsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateAdGroupFeedsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupFeedsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateAdGroupFeedsRequest): google.ads.googleads.v8.services.MutateAdGroupFeedsRequest;

                        /**
                         * Encodes the specified MutateAdGroupFeedsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupFeedsRequest.verify|verify} messages.
                         * @param m MutateAdGroupFeedsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupFeedsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupFeedsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupFeedsRequest.verify|verify} messages.
                         * @param message MutateAdGroupFeedsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateAdGroupFeedsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupFeedsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateAdGroupFeedsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateAdGroupFeedsRequest;

                        /**
                         * Decodes a MutateAdGroupFeedsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupFeedsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateAdGroupFeedsRequest;

                        /**
                         * Verifies a MutateAdGroupFeedsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupFeedsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupFeedsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupFeedsRequest;

                        /**
                         * Creates a plain object from a MutateAdGroupFeedsRequest message. Also converts values to other types if specified.
                         * @param m MutateAdGroupFeedsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupFeedsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupFeedsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an AdGroupFeedOperation. */
                    interface IAdGroupFeedOperation {

                        /** AdGroupFeedOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdGroupFeedOperation create */
                        create?: (google.ads.googleads.v8.resources.IAdGroupFeed|null);

                        /** AdGroupFeedOperation update */
                        update?: (google.ads.googleads.v8.resources.IAdGroupFeed|null);

                        /** AdGroupFeedOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AdGroupFeedOperation. */
                    class AdGroupFeedOperation implements IAdGroupFeedOperation {

                        /**
                         * Constructs a new AdGroupFeedOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IAdGroupFeedOperation);

                        /** AdGroupFeedOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdGroupFeedOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IAdGroupFeed|null);

                        /** AdGroupFeedOperation update. */
                        public update?: (google.ads.googleads.v8.resources.IAdGroupFeed|null);

                        /** AdGroupFeedOperation remove. */
                        public remove?: (string|null);

                        /** AdGroupFeedOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new AdGroupFeedOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AdGroupFeedOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IAdGroupFeedOperation): google.ads.googleads.v8.services.AdGroupFeedOperation;

                        /**
                         * Encodes the specified AdGroupFeedOperation message. Does not implicitly {@link google.ads.googleads.v8.services.AdGroupFeedOperation.verify|verify} messages.
                         * @param m AdGroupFeedOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IAdGroupFeedOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupFeedOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.AdGroupFeedOperation.verify|verify} messages.
                         * @param message AdGroupFeedOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IAdGroupFeedOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupFeedOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns AdGroupFeedOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.AdGroupFeedOperation;

                        /**
                         * Decodes an AdGroupFeedOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AdGroupFeedOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.AdGroupFeedOperation;

                        /**
                         * Verifies an AdGroupFeedOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupFeedOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupFeedOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.AdGroupFeedOperation;

                        /**
                         * Creates a plain object from an AdGroupFeedOperation message. Also converts values to other types if specified.
                         * @param m AdGroupFeedOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.AdGroupFeedOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupFeedOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupFeedsResponse. */
                    interface IMutateAdGroupFeedsResponse {

                        /** MutateAdGroupFeedsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupFeedsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateAdGroupFeedResult[]|null);
                    }

                    /** Represents a MutateAdGroupFeedsResponse. */
                    class MutateAdGroupFeedsResponse implements IMutateAdGroupFeedsResponse {

                        /**
                         * Constructs a new MutateAdGroupFeedsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupFeedsResponse);

                        /** MutateAdGroupFeedsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupFeedsResponse results. */
                        public results: google.ads.googleads.v8.services.IMutateAdGroupFeedResult[];

                        /**
                         * Creates a new MutateAdGroupFeedsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupFeedsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateAdGroupFeedsResponse): google.ads.googleads.v8.services.MutateAdGroupFeedsResponse;

                        /**
                         * Encodes the specified MutateAdGroupFeedsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupFeedsResponse.verify|verify} messages.
                         * @param m MutateAdGroupFeedsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupFeedsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupFeedsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupFeedsResponse.verify|verify} messages.
                         * @param message MutateAdGroupFeedsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateAdGroupFeedsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupFeedsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateAdGroupFeedsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateAdGroupFeedsResponse;

                        /**
                         * Decodes a MutateAdGroupFeedsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupFeedsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateAdGroupFeedsResponse;

                        /**
                         * Verifies a MutateAdGroupFeedsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupFeedsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupFeedsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupFeedsResponse;

                        /**
                         * Creates a plain object from a MutateAdGroupFeedsResponse message. Also converts values to other types if specified.
                         * @param m MutateAdGroupFeedsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupFeedsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupFeedsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupFeedResult. */
                    interface IMutateAdGroupFeedResult {

                        /** MutateAdGroupFeedResult resource_name */
                        resource_name?: (string|null);

                        /** MutateAdGroupFeedResult ad_group_feed */
                        ad_group_feed?: (google.ads.googleads.v8.resources.IAdGroupFeed|null);
                    }

                    /** Represents a MutateAdGroupFeedResult. */
                    class MutateAdGroupFeedResult implements IMutateAdGroupFeedResult {

                        /**
                         * Constructs a new MutateAdGroupFeedResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupFeedResult);

                        /** MutateAdGroupFeedResult resource_name. */
                        public resource_name: string;

                        /** MutateAdGroupFeedResult ad_group_feed. */
                        public ad_group_feed?: (google.ads.googleads.v8.resources.IAdGroupFeed|null);

                        /**
                         * Creates a new MutateAdGroupFeedResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateAdGroupFeedResult instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateAdGroupFeedResult): google.ads.googleads.v8.services.MutateAdGroupFeedResult;

                        /**
                         * Encodes the specified MutateAdGroupFeedResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupFeedResult.verify|verify} messages.
                         * @param m MutateAdGroupFeedResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupFeedResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupFeedResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupFeedResult.verify|verify} messages.
                         * @param message MutateAdGroupFeedResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateAdGroupFeedResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupFeedResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateAdGroupFeedResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateAdGroupFeedResult;

                        /**
                         * Decodes a MutateAdGroupFeedResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateAdGroupFeedResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateAdGroupFeedResult;

                        /**
                         * Verifies a MutateAdGroupFeedResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupFeedResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupFeedResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupFeedResult;

                        /**
                         * Creates a plain object from a MutateAdGroupFeedResult message. Also converts values to other types if specified.
                         * @param m MutateAdGroupFeedResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupFeedResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupFeedResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetAdGroupLabel.
                         * @param request GetAdGroupLabelRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AdGroupLabel
                         */
                        public getAdGroupLabel(request: google.ads.googleads.v8.services.IGetAdGroupLabelRequest, callback: google.ads.googleads.v8.services.AdGroupLabelService.GetAdGroupLabelCallback): void;

                        /**
                         * Calls GetAdGroupLabel.
                         * @param request GetAdGroupLabelRequest message or plain object
                         * @returns Promise
                         */
                        public getAdGroupLabel(request: google.ads.googleads.v8.services.IGetAdGroupLabelRequest): Promise<google.ads.googleads.v8.resources.AdGroupLabel>;

                        /**
                         * 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.v8.services.IMutateAdGroupLabelsRequest, callback: google.ads.googleads.v8.services.AdGroupLabelService.MutateAdGroupLabelsCallback): void;

                        /**
                         * Calls MutateAdGroupLabels.
                         * @param request MutateAdGroupLabelsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAdGroupLabels(request: google.ads.googleads.v8.services.IMutateAdGroupLabelsRequest): Promise<google.ads.googleads.v8.services.MutateAdGroupLabelsResponse>;
                    }

                    namespace AdGroupLabelService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdGroupLabelService#getAdGroupLabel}.
                         * @param error Error, if any
                         * @param [response] AdGroupLabel
                         */
                        type GetAdGroupLabelCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.AdGroupLabel) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdGroupLabelService#mutateAdGroupLabels}.
                         * @param error Error, if any
                         * @param [response] MutateAdGroupLabelsResponse
                         */
                        type MutateAdGroupLabelsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateAdGroupLabelsResponse) => void;
                    }

                    /** Properties of a GetAdGroupLabelRequest. */
                    interface IGetAdGroupLabelRequest {

                        /** GetAdGroupLabelRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetAdGroupLabelRequest. */
                    class GetAdGroupLabelRequest implements IGetAdGroupLabelRequest {

                        /**
                         * Constructs a new GetAdGroupLabelRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetAdGroupLabelRequest);

                        /** GetAdGroupLabelRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetAdGroupLabelRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAdGroupLabelRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetAdGroupLabelRequest): google.ads.googleads.v8.services.GetAdGroupLabelRequest;

                        /**
                         * Encodes the specified GetAdGroupLabelRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupLabelRequest.verify|verify} messages.
                         * @param m GetAdGroupLabelRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetAdGroupLabelRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAdGroupLabelRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupLabelRequest.verify|verify} messages.
                         * @param message GetAdGroupLabelRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetAdGroupLabelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAdGroupLabelRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetAdGroupLabelRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetAdGroupLabelRequest;

                        /**
                         * Decodes a GetAdGroupLabelRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAdGroupLabelRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetAdGroupLabelRequest;

                        /**
                         * Verifies a GetAdGroupLabelRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetAdGroupLabelRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetAdGroupLabelRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetAdGroupLabelRequest;

                        /**
                         * Creates a plain object from a GetAdGroupLabelRequest message. Also converts values to other types if specified.
                         * @param m GetAdGroupLabelRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetAdGroupLabelRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAdGroupLabelRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupLabelsRequest. */
                    interface IMutateAdGroupLabelsRequest {

                        /** MutateAdGroupLabelsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAdGroupLabelsRequest operations */
                        operations?: (google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupLabelsRequest);

                        /** MutateAdGroupLabelsRequest customer_id. */
                        public customer_id: string;

                        /** MutateAdGroupLabelsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.services.IMutateAdGroupLabelsRequest): google.ads.googleads.v8.services.MutateAdGroupLabelsRequest;

                        /**
                         * Encodes the specified MutateAdGroupLabelsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupLabelsRequest.verify|verify} messages.
                         * @param m MutateAdGroupLabelsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupLabelsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupLabelsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdGroupLabelsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupLabelsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdGroupLabelsRequest;

                        /**
                         * Verifies a MutateAdGroupLabelsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupLabelsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupLabelsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupLabelsRequest;

                        /**
                         * Creates a plain object from a MutateAdGroupLabelsRequest message. Also converts values to other types if specified.
                         * @param m MutateAdGroupLabelsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupLabelsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupLabelsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an AdGroupLabelOperation. */
                    interface IAdGroupLabelOperation {

                        /** AdGroupLabelOperation create */
                        create?: (google.ads.googleads.v8.resources.IAdGroupLabel|null);

                        /** AdGroupLabelOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AdGroupLabelOperation. */
                    class AdGroupLabelOperation implements IAdGroupLabelOperation {

                        /**
                         * Constructs a new AdGroupLabelOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IAdGroupLabelOperation);

                        /** AdGroupLabelOperation create. */
                        public create?: (google.ads.googleads.v8.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.v8.services.IAdGroupLabelOperation): google.ads.googleads.v8.services.AdGroupLabelOperation;

                        /**
                         * Encodes the specified AdGroupLabelOperation message. Does not implicitly {@link google.ads.googleads.v8.services.AdGroupLabelOperation.verify|verify} messages.
                         * @param m AdGroupLabelOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IAdGroupLabelOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupLabelOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IAdGroupLabelOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupLabelOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.AdGroupLabelOperation;

                        /**
                         * Verifies an AdGroupLabelOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupLabelOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupLabelOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.AdGroupLabelOperation;

                        /**
                         * Creates a plain object from an AdGroupLabelOperation message. Also converts values to other types if specified.
                         * @param m AdGroupLabelOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.AdGroupLabelOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupLabelOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupLabelsResponse. */
                    interface IMutateAdGroupLabelsResponse {

                        /** MutateAdGroupLabelsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupLabelsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateAdGroupLabelResult[]|null);
                    }

                    /** Represents a MutateAdGroupLabelsResponse. */
                    class MutateAdGroupLabelsResponse implements IMutateAdGroupLabelsResponse {

                        /**
                         * Constructs a new MutateAdGroupLabelsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupLabelsResponse);

                        /** MutateAdGroupLabelsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupLabelsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateAdGroupLabelsResponse): google.ads.googleads.v8.services.MutateAdGroupLabelsResponse;

                        /**
                         * Encodes the specified MutateAdGroupLabelsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupLabelsResponse.verify|verify} messages.
                         * @param m MutateAdGroupLabelsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupLabelsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupLabelsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdGroupLabelsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupLabelsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdGroupLabelsResponse;

                        /**
                         * Verifies a MutateAdGroupLabelsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupLabelsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupLabelsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupLabelsResponse;

                        /**
                         * Creates a plain object from a MutateAdGroupLabelsResponse message. Also converts values to other types if specified.
                         * @param m MutateAdGroupLabelsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupLabelsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupLabelsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IMutateAdGroupLabelResult): google.ads.googleads.v8.services.MutateAdGroupLabelResult;

                        /**
                         * Encodes the specified MutateAdGroupLabelResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupLabelResult.verify|verify} messages.
                         * @param m MutateAdGroupLabelResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupLabelResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupLabelResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdGroupLabelResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupLabelResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdGroupLabelResult;

                        /**
                         * Verifies a MutateAdGroupLabelResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupLabelResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupLabelResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupLabelResult;

                        /**
                         * Creates a plain object from a MutateAdGroupLabelResult message. Also converts values to other types if specified.
                         * @param m MutateAdGroupLabelResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupLabelResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupLabelResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetAdGroup.
                         * @param request GetAdGroupRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AdGroup
                         */
                        public getAdGroup(request: google.ads.googleads.v8.services.IGetAdGroupRequest, callback: google.ads.googleads.v8.services.AdGroupService.GetAdGroupCallback): void;

                        /**
                         * Calls GetAdGroup.
                         * @param request GetAdGroupRequest message or plain object
                         * @returns Promise
                         */
                        public getAdGroup(request: google.ads.googleads.v8.services.IGetAdGroupRequest): Promise<google.ads.googleads.v8.resources.AdGroup>;

                        /**
                         * 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.v8.services.IMutateAdGroupsRequest, callback: google.ads.googleads.v8.services.AdGroupService.MutateAdGroupsCallback): void;

                        /**
                         * Calls MutateAdGroups.
                         * @param request MutateAdGroupsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAdGroups(request: google.ads.googleads.v8.services.IMutateAdGroupsRequest): Promise<google.ads.googleads.v8.services.MutateAdGroupsResponse>;
                    }

                    namespace AdGroupService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdGroupService#getAdGroup}.
                         * @param error Error, if any
                         * @param [response] AdGroup
                         */
                        type GetAdGroupCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.AdGroup) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdGroupService#mutateAdGroups}.
                         * @param error Error, if any
                         * @param [response] MutateAdGroupsResponse
                         */
                        type MutateAdGroupsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateAdGroupsResponse) => void;
                    }

                    /** Properties of a GetAdGroupRequest. */
                    interface IGetAdGroupRequest {

                        /** GetAdGroupRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetAdGroupRequest. */
                    class GetAdGroupRequest implements IGetAdGroupRequest {

                        /**
                         * Constructs a new GetAdGroupRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetAdGroupRequest);

                        /** GetAdGroupRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetAdGroupRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAdGroupRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetAdGroupRequest): google.ads.googleads.v8.services.GetAdGroupRequest;

                        /**
                         * Encodes the specified GetAdGroupRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupRequest.verify|verify} messages.
                         * @param m GetAdGroupRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetAdGroupRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAdGroupRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupRequest.verify|verify} messages.
                         * @param message GetAdGroupRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetAdGroupRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAdGroupRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetAdGroupRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetAdGroupRequest;

                        /**
                         * Decodes a GetAdGroupRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAdGroupRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetAdGroupRequest;

                        /**
                         * Verifies a GetAdGroupRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetAdGroupRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetAdGroupRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetAdGroupRequest;

                        /**
                         * Creates a plain object from a GetAdGroupRequest message. Also converts values to other types if specified.
                         * @param m GetAdGroupRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetAdGroupRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAdGroupRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupsRequest. */
                    interface IMutateAdGroupsRequest {

                        /** MutateAdGroupsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAdGroupsRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateAdGroupsRequest. */
                    class MutateAdGroupsRequest implements IMutateAdGroupsRequest {

                        /**
                         * Constructs a new MutateAdGroupsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupsRequest);

                        /** MutateAdGroupsRequest customer_id. */
                        public customer_id: string;

                        /** MutateAdGroupsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateAdGroupsRequest): google.ads.googleads.v8.services.MutateAdGroupsRequest;

                        /**
                         * Encodes the specified MutateAdGroupsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupsRequest.verify|verify} messages.
                         * @param m MutateAdGroupsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdGroupsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdGroupsRequest;

                        /**
                         * Verifies a MutateAdGroupsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupsRequest;

                        /**
                         * Creates a plain object from a MutateAdGroupsRequest message. Also converts values to other types if specified.
                         * @param m MutateAdGroupsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an AdGroupOperation. */
                    interface IAdGroupOperation {

                        /** AdGroupOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdGroupOperation create */
                        create?: (google.ads.googleads.v8.resources.IAdGroup|null);

                        /** AdGroupOperation update */
                        update?: (google.ads.googleads.v8.resources.IAdGroup|null);

                        /** AdGroupOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AdGroupOperation. */
                    class AdGroupOperation implements IAdGroupOperation {

                        /**
                         * Constructs a new AdGroupOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IAdGroupOperation);

                        /** AdGroupOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdGroupOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IAdGroup|null);

                        /** AdGroupOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.IAdGroupOperation): google.ads.googleads.v8.services.AdGroupOperation;

                        /**
                         * Encodes the specified AdGroupOperation message. Does not implicitly {@link google.ads.googleads.v8.services.AdGroupOperation.verify|verify} messages.
                         * @param m AdGroupOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IAdGroupOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdGroupOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IAdGroupOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdGroupOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.AdGroupOperation;

                        /**
                         * Verifies an AdGroupOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdGroupOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdGroupOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.AdGroupOperation;

                        /**
                         * Creates a plain object from an AdGroupOperation message. Also converts values to other types if specified.
                         * @param m AdGroupOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.AdGroupOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdGroupOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupsResponse. */
                    interface IMutateAdGroupsResponse {

                        /** MutateAdGroupsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateAdGroupResult[]|null);
                    }

                    /** Represents a MutateAdGroupsResponse. */
                    class MutateAdGroupsResponse implements IMutateAdGroupsResponse {

                        /**
                         * Constructs a new MutateAdGroupsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupsResponse);

                        /** MutateAdGroupsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdGroupsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateAdGroupsResponse): google.ads.googleads.v8.services.MutateAdGroupsResponse;

                        /**
                         * Encodes the specified MutateAdGroupsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupsResponse.verify|verify} messages.
                         * @param m MutateAdGroupsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdGroupsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdGroupsResponse;

                        /**
                         * Verifies a MutateAdGroupsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupsResponse;

                        /**
                         * Creates a plain object from a MutateAdGroupsResponse message. Also converts values to other types if specified.
                         * @param m MutateAdGroupsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdGroupResult. */
                    interface IMutateAdGroupResult {

                        /** MutateAdGroupResult resource_name */
                        resource_name?: (string|null);

                        /** MutateAdGroupResult ad_group */
                        ad_group?: (google.ads.googleads.v8.resources.IAdGroup|null);
                    }

                    /** Represents a MutateAdGroupResult. */
                    class MutateAdGroupResult implements IMutateAdGroupResult {

                        /**
                         * Constructs a new MutateAdGroupResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdGroupResult);

                        /** MutateAdGroupResult resource_name. */
                        public resource_name: string;

                        /** MutateAdGroupResult ad_group. */
                        public ad_group?: (google.ads.googleads.v8.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.v8.services.IMutateAdGroupResult): google.ads.googleads.v8.services.MutateAdGroupResult;

                        /**
                         * Encodes the specified MutateAdGroupResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdGroupResult.verify|verify} messages.
                         * @param m MutateAdGroupResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdGroupResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdGroupResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdGroupResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdGroupResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdGroupResult;

                        /**
                         * Verifies a MutateAdGroupResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdGroupResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdGroupResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdGroupResult;

                        /**
                         * Creates a plain object from a MutateAdGroupResult message. Also converts values to other types if specified.
                         * @param m MutateAdGroupResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdGroupResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdGroupResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents an AdGroupSimulationService */
                    class AdGroupSimulationService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AdGroupSimulationService 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 AdGroupSimulationService 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): AdGroupSimulationService;

                        /**
                         * Calls GetAdGroupSimulation.
                         * @param request GetAdGroupSimulationRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AdGroupSimulation
                         */
                        public getAdGroupSimulation(request: google.ads.googleads.v8.services.IGetAdGroupSimulationRequest, callback: google.ads.googleads.v8.services.AdGroupSimulationService.GetAdGroupSimulationCallback): void;

                        /**
                         * Calls GetAdGroupSimulation.
                         * @param request GetAdGroupSimulationRequest message or plain object
                         * @returns Promise
                         */
                        public getAdGroupSimulation(request: google.ads.googleads.v8.services.IGetAdGroupSimulationRequest): Promise<google.ads.googleads.v8.resources.AdGroupSimulation>;
                    }

                    namespace AdGroupSimulationService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdGroupSimulationService#getAdGroupSimulation}.
                         * @param error Error, if any
                         * @param [response] AdGroupSimulation
                         */
                        type GetAdGroupSimulationCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.AdGroupSimulation) => void;
                    }

                    /** Properties of a GetAdGroupSimulationRequest. */
                    interface IGetAdGroupSimulationRequest {

                        /** GetAdGroupSimulationRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetAdGroupSimulationRequest. */
                    class GetAdGroupSimulationRequest implements IGetAdGroupSimulationRequest {

                        /**
                         * Constructs a new GetAdGroupSimulationRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetAdGroupSimulationRequest);

                        /** GetAdGroupSimulationRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetAdGroupSimulationRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAdGroupSimulationRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetAdGroupSimulationRequest): google.ads.googleads.v8.services.GetAdGroupSimulationRequest;

                        /**
                         * Encodes the specified GetAdGroupSimulationRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupSimulationRequest.verify|verify} messages.
                         * @param m GetAdGroupSimulationRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetAdGroupSimulationRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAdGroupSimulationRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetAdGroupSimulationRequest.verify|verify} messages.
                         * @param message GetAdGroupSimulationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetAdGroupSimulationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAdGroupSimulationRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetAdGroupSimulationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetAdGroupSimulationRequest;

                        /**
                         * Decodes a GetAdGroupSimulationRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAdGroupSimulationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetAdGroupSimulationRequest;

                        /**
                         * Verifies a GetAdGroupSimulationRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetAdGroupSimulationRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetAdGroupSimulationRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetAdGroupSimulationRequest;

                        /**
                         * Creates a plain object from a GetAdGroupSimulationRequest message. Also converts values to other types if specified.
                         * @param m GetAdGroupSimulationRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetAdGroupSimulationRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAdGroupSimulationRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetAdParameter.
                         * @param request GetAdParameterRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AdParameter
                         */
                        public getAdParameter(request: google.ads.googleads.v8.services.IGetAdParameterRequest, callback: google.ads.googleads.v8.services.AdParameterService.GetAdParameterCallback): void;

                        /**
                         * Calls GetAdParameter.
                         * @param request GetAdParameterRequest message or plain object
                         * @returns Promise
                         */
                        public getAdParameter(request: google.ads.googleads.v8.services.IGetAdParameterRequest): Promise<google.ads.googleads.v8.resources.AdParameter>;

                        /**
                         * 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.v8.services.IMutateAdParametersRequest, callback: google.ads.googleads.v8.services.AdParameterService.MutateAdParametersCallback): void;

                        /**
                         * Calls MutateAdParameters.
                         * @param request MutateAdParametersRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAdParameters(request: google.ads.googleads.v8.services.IMutateAdParametersRequest): Promise<google.ads.googleads.v8.services.MutateAdParametersResponse>;
                    }

                    namespace AdParameterService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdParameterService#getAdParameter}.
                         * @param error Error, if any
                         * @param [response] AdParameter
                         */
                        type GetAdParameterCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.AdParameter) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdParameterService#mutateAdParameters}.
                         * @param error Error, if any
                         * @param [response] MutateAdParametersResponse
                         */
                        type MutateAdParametersCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateAdParametersResponse) => void;
                    }

                    /** Properties of a GetAdParameterRequest. */
                    interface IGetAdParameterRequest {

                        /** GetAdParameterRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetAdParameterRequest. */
                    class GetAdParameterRequest implements IGetAdParameterRequest {

                        /**
                         * Constructs a new GetAdParameterRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetAdParameterRequest);

                        /** GetAdParameterRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetAdParameterRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAdParameterRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetAdParameterRequest): google.ads.googleads.v8.services.GetAdParameterRequest;

                        /**
                         * Encodes the specified GetAdParameterRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetAdParameterRequest.verify|verify} messages.
                         * @param m GetAdParameterRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetAdParameterRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAdParameterRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetAdParameterRequest.verify|verify} messages.
                         * @param message GetAdParameterRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetAdParameterRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAdParameterRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetAdParameterRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetAdParameterRequest;

                        /**
                         * Decodes a GetAdParameterRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAdParameterRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetAdParameterRequest;

                        /**
                         * Verifies a GetAdParameterRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetAdParameterRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetAdParameterRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetAdParameterRequest;

                        /**
                         * Creates a plain object from a GetAdParameterRequest message. Also converts values to other types if specified.
                         * @param m GetAdParameterRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetAdParameterRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAdParameterRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdParametersRequest. */
                    interface IMutateAdParametersRequest {

                        /** MutateAdParametersRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAdParametersRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateAdParametersRequest. */
                    class MutateAdParametersRequest implements IMutateAdParametersRequest {

                        /**
                         * Constructs a new MutateAdParametersRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdParametersRequest);

                        /** MutateAdParametersRequest customer_id. */
                        public customer_id: string;

                        /** MutateAdParametersRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateAdParametersRequest): google.ads.googleads.v8.services.MutateAdParametersRequest;

                        /**
                         * Encodes the specified MutateAdParametersRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdParametersRequest.verify|verify} messages.
                         * @param m MutateAdParametersRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdParametersRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdParametersRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdParametersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdParametersRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdParametersRequest;

                        /**
                         * Verifies a MutateAdParametersRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdParametersRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdParametersRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdParametersRequest;

                        /**
                         * Creates a plain object from a MutateAdParametersRequest message. Also converts values to other types if specified.
                         * @param m MutateAdParametersRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdParametersRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdParametersRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an AdParameterOperation. */
                    interface IAdParameterOperation {

                        /** AdParameterOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdParameterOperation create */
                        create?: (google.ads.googleads.v8.resources.IAdParameter|null);

                        /** AdParameterOperation update */
                        update?: (google.ads.googleads.v8.resources.IAdParameter|null);

                        /** AdParameterOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an AdParameterOperation. */
                    class AdParameterOperation implements IAdParameterOperation {

                        /**
                         * Constructs a new AdParameterOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IAdParameterOperation);

                        /** AdParameterOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdParameterOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IAdParameter|null);

                        /** AdParameterOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.IAdParameterOperation): google.ads.googleads.v8.services.AdParameterOperation;

                        /**
                         * Encodes the specified AdParameterOperation message. Does not implicitly {@link google.ads.googleads.v8.services.AdParameterOperation.verify|verify} messages.
                         * @param m AdParameterOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IAdParameterOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdParameterOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IAdParameterOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdParameterOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.AdParameterOperation;

                        /**
                         * Verifies an AdParameterOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdParameterOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdParameterOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.AdParameterOperation;

                        /**
                         * Creates a plain object from an AdParameterOperation message. Also converts values to other types if specified.
                         * @param m AdParameterOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.AdParameterOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdParameterOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdParametersResponse. */
                    interface IMutateAdParametersResponse {

                        /** MutateAdParametersResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdParametersResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateAdParameterResult[]|null);
                    }

                    /** Represents a MutateAdParametersResponse. */
                    class MutateAdParametersResponse implements IMutateAdParametersResponse {

                        /**
                         * Constructs a new MutateAdParametersResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdParametersResponse);

                        /** MutateAdParametersResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdParametersResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateAdParametersResponse): google.ads.googleads.v8.services.MutateAdParametersResponse;

                        /**
                         * Encodes the specified MutateAdParametersResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdParametersResponse.verify|verify} messages.
                         * @param m MutateAdParametersResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdParametersResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdParametersResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdParametersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdParametersResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdParametersResponse;

                        /**
                         * Verifies a MutateAdParametersResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdParametersResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdParametersResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdParametersResponse;

                        /**
                         * Creates a plain object from a MutateAdParametersResponse message. Also converts values to other types if specified.
                         * @param m MutateAdParametersResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdParametersResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdParametersResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdParameterResult. */
                    interface IMutateAdParameterResult {

                        /** MutateAdParameterResult resource_name */
                        resource_name?: (string|null);

                        /** MutateAdParameterResult ad_parameter */
                        ad_parameter?: (google.ads.googleads.v8.resources.IAdParameter|null);
                    }

                    /** Represents a MutateAdParameterResult. */
                    class MutateAdParameterResult implements IMutateAdParameterResult {

                        /**
                         * Constructs a new MutateAdParameterResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdParameterResult);

                        /** MutateAdParameterResult resource_name. */
                        public resource_name: string;

                        /** MutateAdParameterResult ad_parameter. */
                        public ad_parameter?: (google.ads.googleads.v8.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.v8.services.IMutateAdParameterResult): google.ads.googleads.v8.services.MutateAdParameterResult;

                        /**
                         * Encodes the specified MutateAdParameterResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdParameterResult.verify|verify} messages.
                         * @param m MutateAdParameterResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdParameterResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdParameterResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdParameterResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdParameterResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdParameterResult;

                        /**
                         * Verifies a MutateAdParameterResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdParameterResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdParameterResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdParameterResult;

                        /**
                         * Creates a plain object from a MutateAdParameterResult message. Also converts values to other types if specified.
                         * @param m MutateAdParameterResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdParameterResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdParameterResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents an AdScheduleViewService */
                    class AdScheduleViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AdScheduleViewService 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 AdScheduleViewService 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): AdScheduleViewService;

                        /**
                         * Calls GetAdScheduleView.
                         * @param request GetAdScheduleViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AdScheduleView
                         */
                        public getAdScheduleView(request: google.ads.googleads.v8.services.IGetAdScheduleViewRequest, callback: google.ads.googleads.v8.services.AdScheduleViewService.GetAdScheduleViewCallback): void;

                        /**
                         * Calls GetAdScheduleView.
                         * @param request GetAdScheduleViewRequest message or plain object
                         * @returns Promise
                         */
                        public getAdScheduleView(request: google.ads.googleads.v8.services.IGetAdScheduleViewRequest): Promise<google.ads.googleads.v8.resources.AdScheduleView>;
                    }

                    namespace AdScheduleViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdScheduleViewService#getAdScheduleView}.
                         * @param error Error, if any
                         * @param [response] AdScheduleView
                         */
                        type GetAdScheduleViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.AdScheduleView) => void;
                    }

                    /** Properties of a GetAdScheduleViewRequest. */
                    interface IGetAdScheduleViewRequest {

                        /** GetAdScheduleViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetAdScheduleViewRequest. */
                    class GetAdScheduleViewRequest implements IGetAdScheduleViewRequest {

                        /**
                         * Constructs a new GetAdScheduleViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetAdScheduleViewRequest);

                        /** GetAdScheduleViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetAdScheduleViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAdScheduleViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetAdScheduleViewRequest): google.ads.googleads.v8.services.GetAdScheduleViewRequest;

                        /**
                         * Encodes the specified GetAdScheduleViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetAdScheduleViewRequest.verify|verify} messages.
                         * @param m GetAdScheduleViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetAdScheduleViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAdScheduleViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetAdScheduleViewRequest.verify|verify} messages.
                         * @param message GetAdScheduleViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetAdScheduleViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAdScheduleViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetAdScheduleViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetAdScheduleViewRequest;

                        /**
                         * Decodes a GetAdScheduleViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAdScheduleViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetAdScheduleViewRequest;

                        /**
                         * Verifies a GetAdScheduleViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetAdScheduleViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetAdScheduleViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetAdScheduleViewRequest;

                        /**
                         * Creates a plain object from a GetAdScheduleViewRequest message. Also converts values to other types if specified.
                         * @param m GetAdScheduleViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetAdScheduleViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAdScheduleViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetAd.
                         * @param request GetAdRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Ad
                         */
                        public getAd(request: google.ads.googleads.v8.services.IGetAdRequest, callback: google.ads.googleads.v8.services.AdService.GetAdCallback): void;

                        /**
                         * Calls GetAd.
                         * @param request GetAdRequest message or plain object
                         * @returns Promise
                         */
                        public getAd(request: google.ads.googleads.v8.services.IGetAdRequest): Promise<google.ads.googleads.v8.resources.Ad>;

                        /**
                         * 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.v8.services.IMutateAdsRequest, callback: google.ads.googleads.v8.services.AdService.MutateAdsCallback): void;

                        /**
                         * Calls MutateAds.
                         * @param request MutateAdsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAds(request: google.ads.googleads.v8.services.IMutateAdsRequest): Promise<google.ads.googleads.v8.services.MutateAdsResponse>;
                    }

                    namespace AdService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdService#getAd}.
                         * @param error Error, if any
                         * @param [response] Ad
                         */
                        type GetAdCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.Ad) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AdService#mutateAds}.
                         * @param error Error, if any
                         * @param [response] MutateAdsResponse
                         */
                        type MutateAdsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateAdsResponse) => void;
                    }

                    /** Properties of a GetAdRequest. */
                    interface IGetAdRequest {

                        /** GetAdRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetAdRequest. */
                    class GetAdRequest implements IGetAdRequest {

                        /**
                         * Constructs a new GetAdRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetAdRequest);

                        /** GetAdRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetAdRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAdRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetAdRequest): google.ads.googleads.v8.services.GetAdRequest;

                        /**
                         * Encodes the specified GetAdRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetAdRequest.verify|verify} messages.
                         * @param m GetAdRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetAdRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAdRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetAdRequest.verify|verify} messages.
                         * @param message GetAdRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetAdRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAdRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetAdRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetAdRequest;

                        /**
                         * Decodes a GetAdRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAdRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetAdRequest;

                        /**
                         * Verifies a GetAdRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetAdRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetAdRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetAdRequest;

                        /**
                         * Creates a plain object from a GetAdRequest message. Also converts values to other types if specified.
                         * @param m GetAdRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetAdRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAdRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdsRequest. */
                    interface IMutateAdsRequest {

                        /** MutateAdsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAdsRequest operations */
                        operations?: (google.ads.googleads.v8.services.IAdOperation[]|null);

                        /** MutateAdsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateAdsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);

                        /** MutateAdsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateAdsRequest. */
                    class MutateAdsRequest implements IMutateAdsRequest {

                        /**
                         * Constructs a new MutateAdsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdsRequest);

                        /** MutateAdsRequest customer_id. */
                        public customer_id: string;

                        /** MutateAdsRequest operations. */
                        public operations: google.ads.googleads.v8.services.IAdOperation[];

                        /** MutateAdsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateAdsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateAdsRequest): google.ads.googleads.v8.services.MutateAdsRequest;

                        /**
                         * Encodes the specified MutateAdsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdsRequest.verify|verify} messages.
                         * @param m MutateAdsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdsRequest;

                        /**
                         * Verifies a MutateAdsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdsRequest;

                        /**
                         * Creates a plain object from a MutateAdsRequest message. Also converts values to other types if specified.
                         * @param m MutateAdsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.common.IPolicyValidationParameter|null);

                        /** AdOperation update */
                        update?: (google.ads.googleads.v8.resources.IAd|null);
                    }

                    /** Represents an AdOperation. */
                    class AdOperation implements IAdOperation {

                        /**
                         * Constructs a new AdOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IAdOperation);

                        /** AdOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AdOperation policy_validation_parameter. */
                        public policy_validation_parameter?: (google.ads.googleads.v8.common.IPolicyValidationParameter|null);

                        /** AdOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.IAdOperation): google.ads.googleads.v8.services.AdOperation;

                        /**
                         * Encodes the specified AdOperation message. Does not implicitly {@link google.ads.googleads.v8.services.AdOperation.verify|verify} messages.
                         * @param m AdOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IAdOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AdOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IAdOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AdOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.AdOperation;

                        /**
                         * Verifies an AdOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AdOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AdOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.AdOperation;

                        /**
                         * Creates a plain object from an AdOperation message. Also converts values to other types if specified.
                         * @param m AdOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.AdOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AdOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdsResponse. */
                    interface IMutateAdsResponse {

                        /** MutateAdsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateAdResult[]|null);
                    }

                    /** Represents a MutateAdsResponse. */
                    class MutateAdsResponse implements IMutateAdsResponse {

                        /**
                         * Constructs a new MutateAdsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdsResponse);

                        /** MutateAdsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAdsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateAdsResponse): google.ads.googleads.v8.services.MutateAdsResponse;

                        /**
                         * Encodes the specified MutateAdsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdsResponse.verify|verify} messages.
                         * @param m MutateAdsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdsResponse;

                        /**
                         * Verifies a MutateAdsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdsResponse;

                        /**
                         * Creates a plain object from a MutateAdsResponse message. Also converts values to other types if specified.
                         * @param m MutateAdsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAdResult. */
                    interface IMutateAdResult {

                        /** MutateAdResult resource_name */
                        resource_name?: (string|null);

                        /** MutateAdResult ad */
                        ad?: (google.ads.googleads.v8.resources.IAd|null);
                    }

                    /** Represents a MutateAdResult. */
                    class MutateAdResult implements IMutateAdResult {

                        /**
                         * Constructs a new MutateAdResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAdResult);

                        /** MutateAdResult resource_name. */
                        public resource_name: string;

                        /** MutateAdResult ad. */
                        public ad?: (google.ads.googleads.v8.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.v8.services.IMutateAdResult): google.ads.googleads.v8.services.MutateAdResult;

                        /**
                         * Encodes the specified MutateAdResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAdResult.verify|verify} messages.
                         * @param m MutateAdResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAdResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAdResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAdResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAdResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAdResult;

                        /**
                         * Verifies a MutateAdResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAdResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAdResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAdResult;

                        /**
                         * Creates a plain object from a MutateAdResult message. Also converts values to other types if specified.
                         * @param m MutateAdResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAdResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAdResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents an AgeRangeViewService */
                    class AgeRangeViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AgeRangeViewService 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 AgeRangeViewService 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): AgeRangeViewService;

                        /**
                         * Calls GetAgeRangeView.
                         * @param request GetAgeRangeViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AgeRangeView
                         */
                        public getAgeRangeView(request: google.ads.googleads.v8.services.IGetAgeRangeViewRequest, callback: google.ads.googleads.v8.services.AgeRangeViewService.GetAgeRangeViewCallback): void;

                        /**
                         * Calls GetAgeRangeView.
                         * @param request GetAgeRangeViewRequest message or plain object
                         * @returns Promise
                         */
                        public getAgeRangeView(request: google.ads.googleads.v8.services.IGetAgeRangeViewRequest): Promise<google.ads.googleads.v8.resources.AgeRangeView>;
                    }

                    namespace AgeRangeViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AgeRangeViewService#getAgeRangeView}.
                         * @param error Error, if any
                         * @param [response] AgeRangeView
                         */
                        type GetAgeRangeViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.AgeRangeView) => void;
                    }

                    /** Properties of a GetAgeRangeViewRequest. */
                    interface IGetAgeRangeViewRequest {

                        /** GetAgeRangeViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetAgeRangeViewRequest. */
                    class GetAgeRangeViewRequest implements IGetAgeRangeViewRequest {

                        /**
                         * Constructs a new GetAgeRangeViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetAgeRangeViewRequest);

                        /** GetAgeRangeViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetAgeRangeViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAgeRangeViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetAgeRangeViewRequest): google.ads.googleads.v8.services.GetAgeRangeViewRequest;

                        /**
                         * Encodes the specified GetAgeRangeViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetAgeRangeViewRequest.verify|verify} messages.
                         * @param m GetAgeRangeViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetAgeRangeViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAgeRangeViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetAgeRangeViewRequest.verify|verify} messages.
                         * @param message GetAgeRangeViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetAgeRangeViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAgeRangeViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetAgeRangeViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetAgeRangeViewRequest;

                        /**
                         * Decodes a GetAgeRangeViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAgeRangeViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetAgeRangeViewRequest;

                        /**
                         * Verifies a GetAgeRangeViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetAgeRangeViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetAgeRangeViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetAgeRangeViewRequest;

                        /**
                         * Creates a plain object from a GetAgeRangeViewRequest message. Also converts values to other types if specified.
                         * @param m GetAgeRangeViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetAgeRangeViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAgeRangeViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents an AssetFieldTypeViewService */
                    class AssetFieldTypeViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new AssetFieldTypeViewService 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 AssetFieldTypeViewService 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): AssetFieldTypeViewService;

                        /**
                         * Calls GetAssetFieldTypeView.
                         * @param request GetAssetFieldTypeViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and AssetFieldTypeView
                         */
                        public getAssetFieldTypeView(request: google.ads.googleads.v8.services.IGetAssetFieldTypeViewRequest, callback: google.ads.googleads.v8.services.AssetFieldTypeViewService.GetAssetFieldTypeViewCallback): void;

                        /**
                         * Calls GetAssetFieldTypeView.
                         * @param request GetAssetFieldTypeViewRequest message or plain object
                         * @returns Promise
                         */
                        public getAssetFieldTypeView(request: google.ads.googleads.v8.services.IGetAssetFieldTypeViewRequest): Promise<google.ads.googleads.v8.resources.AssetFieldTypeView>;
                    }

                    namespace AssetFieldTypeViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AssetFieldTypeViewService#getAssetFieldTypeView}.
                         * @param error Error, if any
                         * @param [response] AssetFieldTypeView
                         */
                        type GetAssetFieldTypeViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.AssetFieldTypeView) => void;
                    }

                    /** Properties of a GetAssetFieldTypeViewRequest. */
                    interface IGetAssetFieldTypeViewRequest {

                        /** GetAssetFieldTypeViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetAssetFieldTypeViewRequest. */
                    class GetAssetFieldTypeViewRequest implements IGetAssetFieldTypeViewRequest {

                        /**
                         * Constructs a new GetAssetFieldTypeViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetAssetFieldTypeViewRequest);

                        /** GetAssetFieldTypeViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetAssetFieldTypeViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAssetFieldTypeViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetAssetFieldTypeViewRequest): google.ads.googleads.v8.services.GetAssetFieldTypeViewRequest;

                        /**
                         * Encodes the specified GetAssetFieldTypeViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetAssetFieldTypeViewRequest.verify|verify} messages.
                         * @param m GetAssetFieldTypeViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetAssetFieldTypeViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAssetFieldTypeViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetAssetFieldTypeViewRequest.verify|verify} messages.
                         * @param message GetAssetFieldTypeViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetAssetFieldTypeViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAssetFieldTypeViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetAssetFieldTypeViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetAssetFieldTypeViewRequest;

                        /**
                         * Decodes a GetAssetFieldTypeViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAssetFieldTypeViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetAssetFieldTypeViewRequest;

                        /**
                         * Verifies a GetAssetFieldTypeViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetAssetFieldTypeViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetAssetFieldTypeViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetAssetFieldTypeViewRequest;

                        /**
                         * Creates a plain object from a GetAssetFieldTypeViewRequest message. Also converts values to other types if specified.
                         * @param m GetAssetFieldTypeViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetAssetFieldTypeViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAssetFieldTypeViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetAsset.
                         * @param request GetAssetRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Asset
                         */
                        public getAsset(request: google.ads.googleads.v8.services.IGetAssetRequest, callback: google.ads.googleads.v8.services.AssetService.GetAssetCallback): void;

                        /**
                         * Calls GetAsset.
                         * @param request GetAssetRequest message or plain object
                         * @returns Promise
                         */
                        public getAsset(request: google.ads.googleads.v8.services.IGetAssetRequest): Promise<google.ads.googleads.v8.resources.Asset>;

                        /**
                         * 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.v8.services.IMutateAssetsRequest, callback: google.ads.googleads.v8.services.AssetService.MutateAssetsCallback): void;

                        /**
                         * Calls MutateAssets.
                         * @param request MutateAssetsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateAssets(request: google.ads.googleads.v8.services.IMutateAssetsRequest): Promise<google.ads.googleads.v8.services.MutateAssetsResponse>;
                    }

                    namespace AssetService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AssetService#getAsset}.
                         * @param error Error, if any
                         * @param [response] Asset
                         */
                        type GetAssetCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.Asset) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.AssetService#mutateAssets}.
                         * @param error Error, if any
                         * @param [response] MutateAssetsResponse
                         */
                        type MutateAssetsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateAssetsResponse) => void;
                    }

                    /** Properties of a GetAssetRequest. */
                    interface IGetAssetRequest {

                        /** GetAssetRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetAssetRequest. */
                    class GetAssetRequest implements IGetAssetRequest {

                        /**
                         * Constructs a new GetAssetRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetAssetRequest);

                        /** GetAssetRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetAssetRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetAssetRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetAssetRequest): google.ads.googleads.v8.services.GetAssetRequest;

                        /**
                         * Encodes the specified GetAssetRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetAssetRequest.verify|verify} messages.
                         * @param m GetAssetRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetAssetRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetAssetRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetAssetRequest.verify|verify} messages.
                         * @param message GetAssetRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetAssetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetAssetRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetAssetRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetAssetRequest;

                        /**
                         * Decodes a GetAssetRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetAssetRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetAssetRequest;

                        /**
                         * Verifies a GetAssetRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetAssetRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetAssetRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetAssetRequest;

                        /**
                         * Creates a plain object from a GetAssetRequest message. Also converts values to other types if specified.
                         * @param m GetAssetRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetAssetRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetAssetRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAssetsRequest. */
                    interface IMutateAssetsRequest {

                        /** MutateAssetsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateAssetsRequest operations */
                        operations?: (google.ads.googleads.v8.services.IAssetOperation[]|null);

                        /** MutateAssetsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateAssetsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);

                        /** MutateAssetsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateAssetsRequest. */
                    class MutateAssetsRequest implements IMutateAssetsRequest {

                        /**
                         * Constructs a new MutateAssetsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAssetsRequest);

                        /** MutateAssetsRequest customer_id. */
                        public customer_id: string;

                        /** MutateAssetsRequest operations. */
                        public operations: google.ads.googleads.v8.services.IAssetOperation[];

                        /** MutateAssetsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateAssetsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateAssetsRequest): google.ads.googleads.v8.services.MutateAssetsRequest;

                        /**
                         * Encodes the specified MutateAssetsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAssetsRequest.verify|verify} messages.
                         * @param m MutateAssetsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAssetsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAssetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAssetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAssetsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAssetsRequest;

                        /**
                         * Verifies a MutateAssetsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAssetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAssetsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAssetsRequest;

                        /**
                         * Creates a plain object from a MutateAssetsRequest message. Also converts values to other types if specified.
                         * @param m MutateAssetsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAssetsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAssetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an AssetOperation. */
                    interface IAssetOperation {

                        /** AssetOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** AssetOperation create */
                        create?: (google.ads.googleads.v8.resources.IAsset|null);

                        /** AssetOperation update */
                        update?: (google.ads.googleads.v8.resources.IAsset|null);
                    }

                    /** Represents an AssetOperation. */
                    class AssetOperation implements IAssetOperation {

                        /**
                         * Constructs a new AssetOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IAssetOperation);

                        /** AssetOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** AssetOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IAsset|null);

                        /** AssetOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.IAssetOperation): google.ads.googleads.v8.services.AssetOperation;

                        /**
                         * Encodes the specified AssetOperation message. Does not implicitly {@link google.ads.googleads.v8.services.AssetOperation.verify|verify} messages.
                         * @param m AssetOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IAssetOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AssetOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IAssetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AssetOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.AssetOperation;

                        /**
                         * Verifies an AssetOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AssetOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AssetOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.AssetOperation;

                        /**
                         * Creates a plain object from an AssetOperation message. Also converts values to other types if specified.
                         * @param m AssetOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.AssetOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AssetOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAssetsResponse. */
                    interface IMutateAssetsResponse {

                        /** MutateAssetsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAssetsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateAssetResult[]|null);
                    }

                    /** Represents a MutateAssetsResponse. */
                    class MutateAssetsResponse implements IMutateAssetsResponse {

                        /**
                         * Constructs a new MutateAssetsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAssetsResponse);

                        /** MutateAssetsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateAssetsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateAssetsResponse): google.ads.googleads.v8.services.MutateAssetsResponse;

                        /**
                         * Encodes the specified MutateAssetsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAssetsResponse.verify|verify} messages.
                         * @param m MutateAssetsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAssetsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAssetsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAssetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAssetsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAssetsResponse;

                        /**
                         * Verifies a MutateAssetsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAssetsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAssetsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAssetsResponse;

                        /**
                         * Creates a plain object from a MutateAssetsResponse message. Also converts values to other types if specified.
                         * @param m MutateAssetsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAssetsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAssetsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateAssetResult. */
                    interface IMutateAssetResult {

                        /** MutateAssetResult resource_name */
                        resource_name?: (string|null);

                        /** MutateAssetResult asset */
                        asset?: (google.ads.googleads.v8.resources.IAsset|null);
                    }

                    /** Represents a MutateAssetResult. */
                    class MutateAssetResult implements IMutateAssetResult {

                        /**
                         * Constructs a new MutateAssetResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateAssetResult);

                        /** MutateAssetResult resource_name. */
                        public resource_name: string;

                        /** MutateAssetResult asset. */
                        public asset?: (google.ads.googleads.v8.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.v8.services.IMutateAssetResult): google.ads.googleads.v8.services.MutateAssetResult;

                        /**
                         * Encodes the specified MutateAssetResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateAssetResult.verify|verify} messages.
                         * @param m MutateAssetResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateAssetResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateAssetResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateAssetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateAssetResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateAssetResult;

                        /**
                         * Verifies a MutateAssetResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateAssetResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateAssetResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateAssetResult;

                        /**
                         * Creates a plain object from a MutateAssetResult message. Also converts values to other types if specified.
                         * @param m MutateAssetResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateAssetResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateAssetResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.services.IMutateBatchJobRequest, callback: google.ads.googleads.v8.services.BatchJobService.MutateBatchJobCallback): void;

                        /**
                         * Calls MutateBatchJob.
                         * @param request MutateBatchJobRequest message or plain object
                         * @returns Promise
                         */
                        public mutateBatchJob(request: google.ads.googleads.v8.services.IMutateBatchJobRequest): Promise<google.ads.googleads.v8.services.MutateBatchJobResponse>;

                        /**
                         * Calls GetBatchJob.
                         * @param request GetBatchJobRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and BatchJob
                         */
                        public getBatchJob(request: google.ads.googleads.v8.services.IGetBatchJobRequest, callback: google.ads.googleads.v8.services.BatchJobService.GetBatchJobCallback): void;

                        /**
                         * Calls GetBatchJob.
                         * @param request GetBatchJobRequest message or plain object
                         * @returns Promise
                         */
                        public getBatchJob(request: google.ads.googleads.v8.services.IGetBatchJobRequest): Promise<google.ads.googleads.v8.resources.BatchJob>;

                        /**
                         * 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.v8.services.IListBatchJobResultsRequest, callback: google.ads.googleads.v8.services.BatchJobService.ListBatchJobResultsCallback): void;

                        /**
                         * Calls ListBatchJobResults.
                         * @param request ListBatchJobResultsRequest message or plain object
                         * @returns Promise
                         */
                        public listBatchJobResults(request: google.ads.googleads.v8.services.IListBatchJobResultsRequest): Promise<google.ads.googleads.v8.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.v8.services.IRunBatchJobRequest, callback: google.ads.googleads.v8.services.BatchJobService.RunBatchJobCallback): void;

                        /**
                         * Calls RunBatchJob.
                         * @param request RunBatchJobRequest message or plain object
                         * @returns Promise
                         */
                        public runBatchJob(request: google.ads.googleads.v8.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.v8.services.IAddBatchJobOperationsRequest, callback: google.ads.googleads.v8.services.BatchJobService.AddBatchJobOperationsCallback): void;

                        /**
                         * Calls AddBatchJobOperations.
                         * @param request AddBatchJobOperationsRequest message or plain object
                         * @returns Promise
                         */
                        public addBatchJobOperations(request: google.ads.googleads.v8.services.IAddBatchJobOperationsRequest): Promise<google.ads.googleads.v8.services.AddBatchJobOperationsResponse>;
                    }

                    namespace BatchJobService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.BatchJobService#mutateBatchJob}.
                         * @param error Error, if any
                         * @param [response] MutateBatchJobResponse
                         */
                        type MutateBatchJobCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateBatchJobResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.BatchJobService#getBatchJob}.
                         * @param error Error, if any
                         * @param [response] BatchJob
                         */
                        type GetBatchJobCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.BatchJob) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.BatchJobService#listBatchJobResults}.
                         * @param error Error, if any
                         * @param [response] ListBatchJobResultsResponse
                         */
                        type ListBatchJobResultsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.ListBatchJobResultsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.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.v8.services.BatchJobService#addBatchJobOperations}.
                         * @param error Error, if any
                         * @param [response] AddBatchJobOperationsResponse
                         */
                        type AddBatchJobOperationsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.AddBatchJobOperationsResponse) => void;
                    }

                    /** Properties of a MutateBatchJobRequest. */
                    interface IMutateBatchJobRequest {

                        /** MutateBatchJobRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateBatchJobRequest operation */
                        operation?: (google.ads.googleads.v8.services.IBatchJobOperation|null);
                    }

                    /** Represents a MutateBatchJobRequest. */
                    class MutateBatchJobRequest implements IMutateBatchJobRequest {

                        /**
                         * Constructs a new MutateBatchJobRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateBatchJobRequest);

                        /** MutateBatchJobRequest customer_id. */
                        public customer_id: string;

                        /** MutateBatchJobRequest operation. */
                        public operation?: (google.ads.googleads.v8.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.v8.services.IMutateBatchJobRequest): google.ads.googleads.v8.services.MutateBatchJobRequest;

                        /**
                         * Encodes the specified MutateBatchJobRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateBatchJobRequest.verify|verify} messages.
                         * @param m MutateBatchJobRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateBatchJobRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBatchJobRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateBatchJobRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBatchJobRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateBatchJobRequest;

                        /**
                         * Verifies a MutateBatchJobRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBatchJobRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateBatchJobRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateBatchJobRequest;

                        /**
                         * Creates a plain object from a MutateBatchJobRequest message. Also converts values to other types if specified.
                         * @param m MutateBatchJobRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateBatchJobRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBatchJobRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a BatchJobOperation. */
                    interface IBatchJobOperation {

                        /** BatchJobOperation create */
                        create?: (google.ads.googleads.v8.resources.IBatchJob|null);
                    }

                    /** Represents a BatchJobOperation. */
                    class BatchJobOperation implements IBatchJobOperation {

                        /**
                         * Constructs a new BatchJobOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IBatchJobOperation);

                        /** BatchJobOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IBatchJob|null);

                        /** BatchJobOperation operation. */
                        public operation?: "create";

                        /**
                         * Creates a new BatchJobOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BatchJobOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IBatchJobOperation): google.ads.googleads.v8.services.BatchJobOperation;

                        /**
                         * Encodes the specified BatchJobOperation message. Does not implicitly {@link google.ads.googleads.v8.services.BatchJobOperation.verify|verify} messages.
                         * @param m BatchJobOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IBatchJobOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BatchJobOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IBatchJobOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BatchJobOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.BatchJobOperation;

                        /**
                         * Verifies a BatchJobOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BatchJobOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BatchJobOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.BatchJobOperation;

                        /**
                         * Creates a plain object from a BatchJobOperation message. Also converts values to other types if specified.
                         * @param m BatchJobOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.BatchJobOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BatchJobOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateBatchJobResponse. */
                    interface IMutateBatchJobResponse {

                        /** MutateBatchJobResponse result */
                        result?: (google.ads.googleads.v8.services.IMutateBatchJobResult|null);
                    }

                    /** Represents a MutateBatchJobResponse. */
                    class MutateBatchJobResponse implements IMutateBatchJobResponse {

                        /**
                         * Constructs a new MutateBatchJobResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateBatchJobResponse);

                        /** MutateBatchJobResponse result. */
                        public result?: (google.ads.googleads.v8.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.v8.services.IMutateBatchJobResponse): google.ads.googleads.v8.services.MutateBatchJobResponse;

                        /**
                         * Encodes the specified MutateBatchJobResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateBatchJobResponse.verify|verify} messages.
                         * @param m MutateBatchJobResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateBatchJobResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBatchJobResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateBatchJobResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBatchJobResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateBatchJobResponse;

                        /**
                         * Verifies a MutateBatchJobResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBatchJobResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateBatchJobResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateBatchJobResponse;

                        /**
                         * Creates a plain object from a MutateBatchJobResponse message. Also converts values to other types if specified.
                         * @param m MutateBatchJobResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateBatchJobResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBatchJobResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IMutateBatchJobResult): google.ads.googleads.v8.services.MutateBatchJobResult;

                        /**
                         * Encodes the specified MutateBatchJobResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateBatchJobResult.verify|verify} messages.
                         * @param m MutateBatchJobResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateBatchJobResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBatchJobResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateBatchJobResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBatchJobResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateBatchJobResult;

                        /**
                         * Verifies a MutateBatchJobResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBatchJobResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateBatchJobResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateBatchJobResult;

                        /**
                         * Creates a plain object from a MutateBatchJobResult message. Also converts values to other types if specified.
                         * @param m MutateBatchJobResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateBatchJobResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBatchJobResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a GetBatchJobRequest. */
                    interface IGetBatchJobRequest {

                        /** GetBatchJobRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetBatchJobRequest. */
                    class GetBatchJobRequest implements IGetBatchJobRequest {

                        /**
                         * Constructs a new GetBatchJobRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetBatchJobRequest);

                        /** GetBatchJobRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetBatchJobRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetBatchJobRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetBatchJobRequest): google.ads.googleads.v8.services.GetBatchJobRequest;

                        /**
                         * Encodes the specified GetBatchJobRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetBatchJobRequest.verify|verify} messages.
                         * @param m GetBatchJobRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetBatchJobRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetBatchJobRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetBatchJobRequest.verify|verify} messages.
                         * @param message GetBatchJobRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetBatchJobRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetBatchJobRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetBatchJobRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetBatchJobRequest;

                        /**
                         * Decodes a GetBatchJobRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetBatchJobRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetBatchJobRequest;

                        /**
                         * Verifies a GetBatchJobRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetBatchJobRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetBatchJobRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetBatchJobRequest;

                        /**
                         * Creates a plain object from a GetBatchJobRequest message. Also converts values to other types if specified.
                         * @param m GetBatchJobRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetBatchJobRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetBatchJobRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IRunBatchJobRequest): google.ads.googleads.v8.services.RunBatchJobRequest;

                        /**
                         * Encodes the specified RunBatchJobRequest message. Does not implicitly {@link google.ads.googleads.v8.services.RunBatchJobRequest.verify|verify} messages.
                         * @param m RunBatchJobRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IRunBatchJobRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RunBatchJobRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IRunBatchJobRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RunBatchJobRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.RunBatchJobRequest;

                        /**
                         * Verifies a RunBatchJobRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RunBatchJobRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns RunBatchJobRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.RunBatchJobRequest;

                        /**
                         * Creates a plain object from a RunBatchJobRequest message. Also converts values to other types if specified.
                         * @param m RunBatchJobRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.RunBatchJobRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RunBatchJobRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.services.IMutateOperation[]|null);
                    }

                    /** Represents an AddBatchJobOperationsRequest. */
                    class AddBatchJobOperationsRequest implements IAddBatchJobOperationsRequest {

                        /**
                         * Constructs a new AddBatchJobOperationsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.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.v8.services.IAddBatchJobOperationsRequest): google.ads.googleads.v8.services.AddBatchJobOperationsRequest;

                        /**
                         * Encodes the specified AddBatchJobOperationsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.AddBatchJobOperationsRequest.verify|verify} messages.
                         * @param m AddBatchJobOperationsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IAddBatchJobOperationsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AddBatchJobOperationsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IAddBatchJobOperationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AddBatchJobOperationsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.AddBatchJobOperationsRequest;

                        /**
                         * Verifies an AddBatchJobOperationsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AddBatchJobOperationsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AddBatchJobOperationsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.AddBatchJobOperationsRequest;

                        /**
                         * Creates a plain object from an AddBatchJobOperationsRequest message. Also converts values to other types if specified.
                         * @param m AddBatchJobOperationsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.AddBatchJobOperationsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AddBatchJobOperationsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IAddBatchJobOperationsResponse): google.ads.googleads.v8.services.AddBatchJobOperationsResponse;

                        /**
                         * Encodes the specified AddBatchJobOperationsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.AddBatchJobOperationsResponse.verify|verify} messages.
                         * @param m AddBatchJobOperationsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IAddBatchJobOperationsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AddBatchJobOperationsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IAddBatchJobOperationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AddBatchJobOperationsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.AddBatchJobOperationsResponse;

                        /**
                         * Verifies an AddBatchJobOperationsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AddBatchJobOperationsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AddBatchJobOperationsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.AddBatchJobOperationsResponse;

                        /**
                         * Creates a plain object from an AddBatchJobOperationsResponse message. Also converts values to other types if specified.
                         * @param m AddBatchJobOperationsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.AddBatchJobOperationsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AddBatchJobOperationsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a ListBatchJobResultsRequest. */
                    class ListBatchJobResultsRequest implements IListBatchJobResultsRequest {

                        /**
                         * Constructs a new ListBatchJobResultsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IListBatchJobResultsRequest): google.ads.googleads.v8.services.ListBatchJobResultsRequest;

                        /**
                         * Encodes the specified ListBatchJobResultsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.ListBatchJobResultsRequest.verify|verify} messages.
                         * @param m ListBatchJobResultsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IListBatchJobResultsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListBatchJobResultsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IListBatchJobResultsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListBatchJobResultsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ListBatchJobResultsRequest;

                        /**
                         * Verifies a ListBatchJobResultsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListBatchJobResultsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ListBatchJobResultsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ListBatchJobResultsRequest;

                        /**
                         * Creates a plain object from a ListBatchJobResultsRequest message. Also converts values to other types if specified.
                         * @param m ListBatchJobResultsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ListBatchJobResultsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListBatchJobResultsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ListBatchJobResultsResponse. */
                    interface IListBatchJobResultsResponse {

                        /** ListBatchJobResultsResponse results */
                        results?: (google.ads.googleads.v8.services.IBatchJobResult[]|null);

                        /** ListBatchJobResultsResponse next_page_token */
                        next_page_token?: (string|null);
                    }

                    /** Represents a ListBatchJobResultsResponse. */
                    class ListBatchJobResultsResponse implements IListBatchJobResultsResponse {

                        /**
                         * Constructs a new ListBatchJobResultsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IListBatchJobResultsResponse);

                        /** ListBatchJobResultsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IListBatchJobResultsResponse): google.ads.googleads.v8.services.ListBatchJobResultsResponse;

                        /**
                         * Encodes the specified ListBatchJobResultsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.ListBatchJobResultsResponse.verify|verify} messages.
                         * @param m ListBatchJobResultsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IListBatchJobResultsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListBatchJobResultsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IListBatchJobResultsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListBatchJobResultsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ListBatchJobResultsResponse;

                        /**
                         * Verifies a ListBatchJobResultsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListBatchJobResultsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ListBatchJobResultsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ListBatchJobResultsResponse;

                        /**
                         * Creates a plain object from a ListBatchJobResultsResponse message. Also converts values to other types if specified.
                         * @param m ListBatchJobResultsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ListBatchJobResultsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListBatchJobResultsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a BatchJobResult. */
                    interface IBatchJobResult {

                        /** BatchJobResult operation_index */
                        operation_index?: (number|null);

                        /** BatchJobResult mutate_operation_response */
                        mutate_operation_response?: (google.ads.googleads.v8.services.IMutateOperationResponse|null);

                        /** BatchJobResult status */
                        status?: (google.rpc.IStatus|null);
                    }

                    /** Represents a BatchJobResult. */
                    class BatchJobResult implements IBatchJobResult {

                        /**
                         * Constructs a new BatchJobResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IBatchJobResult);

                        /** BatchJobResult operation_index. */
                        public operation_index: number;

                        /** BatchJobResult mutate_operation_response. */
                        public mutate_operation_response?: (google.ads.googleads.v8.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.v8.services.IBatchJobResult): google.ads.googleads.v8.services.BatchJobResult;

                        /**
                         * Encodes the specified BatchJobResult message. Does not implicitly {@link google.ads.googleads.v8.services.BatchJobResult.verify|verify} messages.
                         * @param m BatchJobResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IBatchJobResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BatchJobResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IBatchJobResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BatchJobResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.BatchJobResult;

                        /**
                         * Verifies a BatchJobResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BatchJobResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BatchJobResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.BatchJobResult;

                        /**
                         * Creates a plain object from a BatchJobResult message. Also converts values to other types if specified.
                         * @param m BatchJobResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.BatchJobResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BatchJobResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.services.ISearchGoogleAdsRequest, callback: google.ads.googleads.v8.services.GoogleAdsService.SearchCallback): void;

                        /**
                         * Calls Search.
                         * @param request SearchGoogleAdsRequest message or plain object
                         * @returns Promise
                         */
                        public search(request: google.ads.googleads.v8.services.ISearchGoogleAdsRequest): Promise<google.ads.googleads.v8.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.v8.services.ISearchGoogleAdsStreamRequest, callback: google.ads.googleads.v8.services.GoogleAdsService.SearchStreamCallback): void;

                        /**
                         * Calls SearchStream.
                         * @param request SearchGoogleAdsStreamRequest message or plain object
                         * @returns Promise
                         */
                        public searchStream(request: google.ads.googleads.v8.services.ISearchGoogleAdsStreamRequest): Promise<google.ads.googleads.v8.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.v8.services.IMutateGoogleAdsRequest, callback: google.ads.googleads.v8.services.GoogleAdsService.MutateCallback): void;

                        /**
                         * Calls Mutate.
                         * @param request MutateGoogleAdsRequest message or plain object
                         * @returns Promise
                         */
                        public mutate(request: google.ads.googleads.v8.services.IMutateGoogleAdsRequest): Promise<google.ads.googleads.v8.services.MutateGoogleAdsResponse>;
                    }

                    namespace GoogleAdsService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.GoogleAdsService#search}.
                         * @param error Error, if any
                         * @param [response] SearchGoogleAdsResponse
                         */
                        type SearchCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.SearchGoogleAdsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.GoogleAdsService#searchStream}.
                         * @param error Error, if any
                         * @param [response] SearchGoogleAdsStreamResponse
                         */
                        type SearchStreamCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.SearchGoogleAdsStreamResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.GoogleAdsService#mutate}.
                         * @param error Error, if any
                         * @param [response] MutateGoogleAdsResponse
                         */
                        type MutateCallback = (error: (Error|null), response?: google.ads.googleads.v8.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 return_total_results_count */
                        return_total_results_count?: (boolean|null);

                        /** SearchGoogleAdsRequest summary_row_setting */
                        summary_row_setting?: (google.ads.googleads.v8.enums.SummaryRowSettingEnum.SummaryRowSetting|keyof typeof google.ads.googleads.v8.enums.SummaryRowSettingEnum.SummaryRowSetting|null);
                    }

                    /** Represents a SearchGoogleAdsRequest. */
                    class SearchGoogleAdsRequest implements ISearchGoogleAdsRequest {

                        /**
                         * Constructs a new SearchGoogleAdsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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 return_total_results_count. */
                        public return_total_results_count: boolean;

                        /** SearchGoogleAdsRequest summary_row_setting. */
                        public summary_row_setting: (google.ads.googleads.v8.enums.SummaryRowSettingEnum.SummaryRowSetting|keyof typeof google.ads.googleads.v8.enums.SummaryRowSettingEnum.SummaryRowSetting);

                        /**
                         * Creates a new SearchGoogleAdsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchGoogleAdsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.ISearchGoogleAdsRequest): google.ads.googleads.v8.services.SearchGoogleAdsRequest;

                        /**
                         * Encodes the specified SearchGoogleAdsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.SearchGoogleAdsRequest.verify|verify} messages.
                         * @param m SearchGoogleAdsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ISearchGoogleAdsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchGoogleAdsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ISearchGoogleAdsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchGoogleAdsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.SearchGoogleAdsRequest;

                        /**
                         * Verifies a SearchGoogleAdsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchGoogleAdsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SearchGoogleAdsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.SearchGoogleAdsRequest;

                        /**
                         * Creates a plain object from a SearchGoogleAdsRequest message. Also converts values to other types if specified.
                         * @param m SearchGoogleAdsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.SearchGoogleAdsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchGoogleAdsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a SearchGoogleAdsResponse. */
                    interface ISearchGoogleAdsResponse {

                        /** SearchGoogleAdsResponse results */
                        results?: (google.ads.googleads.v8.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.v8.services.IGoogleAdsRow|null);
                    }

                    /** Represents a SearchGoogleAdsResponse. */
                    class SearchGoogleAdsResponse implements ISearchGoogleAdsResponse {

                        /**
                         * Constructs a new SearchGoogleAdsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ISearchGoogleAdsResponse);

                        /** SearchGoogleAdsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IGoogleAdsRow|null);

                        /**
                         * Creates a new SearchGoogleAdsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchGoogleAdsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.ISearchGoogleAdsResponse): google.ads.googleads.v8.services.SearchGoogleAdsResponse;

                        /**
                         * Encodes the specified SearchGoogleAdsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.SearchGoogleAdsResponse.verify|verify} messages.
                         * @param m SearchGoogleAdsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ISearchGoogleAdsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchGoogleAdsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ISearchGoogleAdsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchGoogleAdsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.SearchGoogleAdsResponse;

                        /**
                         * Verifies a SearchGoogleAdsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchGoogleAdsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SearchGoogleAdsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.SearchGoogleAdsResponse;

                        /**
                         * Creates a plain object from a SearchGoogleAdsResponse message. Also converts values to other types if specified.
                         * @param m SearchGoogleAdsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.SearchGoogleAdsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchGoogleAdsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.enums.SummaryRowSettingEnum.SummaryRowSetting|keyof typeof google.ads.googleads.v8.enums.SummaryRowSettingEnum.SummaryRowSetting|null);
                    }

                    /** Represents a SearchGoogleAdsStreamRequest. */
                    class SearchGoogleAdsStreamRequest implements ISearchGoogleAdsStreamRequest {

                        /**
                         * Constructs a new SearchGoogleAdsStreamRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.SummaryRowSettingEnum.SummaryRowSetting|keyof typeof google.ads.googleads.v8.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.v8.services.ISearchGoogleAdsStreamRequest): google.ads.googleads.v8.services.SearchGoogleAdsStreamRequest;

                        /**
                         * Encodes the specified SearchGoogleAdsStreamRequest message. Does not implicitly {@link google.ads.googleads.v8.services.SearchGoogleAdsStreamRequest.verify|verify} messages.
                         * @param m SearchGoogleAdsStreamRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ISearchGoogleAdsStreamRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchGoogleAdsStreamRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ISearchGoogleAdsStreamRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchGoogleAdsStreamRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.SearchGoogleAdsStreamRequest;

                        /**
                         * Verifies a SearchGoogleAdsStreamRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchGoogleAdsStreamRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SearchGoogleAdsStreamRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.SearchGoogleAdsStreamRequest;

                        /**
                         * Creates a plain object from a SearchGoogleAdsStreamRequest message. Also converts values to other types if specified.
                         * @param m SearchGoogleAdsStreamRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.SearchGoogleAdsStreamRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchGoogleAdsStreamRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a SearchGoogleAdsStreamResponse. */
                    interface ISearchGoogleAdsStreamResponse {

                        /** SearchGoogleAdsStreamResponse results */
                        results?: (google.ads.googleads.v8.services.IGoogleAdsRow[]|null);

                        /** SearchGoogleAdsStreamResponse field_mask */
                        field_mask?: (google.protobuf.IFieldMask|null);

                        /** SearchGoogleAdsStreamResponse summary_row */
                        summary_row?: (google.ads.googleads.v8.services.IGoogleAdsRow|null);

                        /** SearchGoogleAdsStreamResponse request_id */
                        request_id?: (string|null);
                    }

                    /** Represents a SearchGoogleAdsStreamResponse. */
                    class SearchGoogleAdsStreamResponse implements ISearchGoogleAdsStreamResponse {

                        /**
                         * Constructs a new SearchGoogleAdsStreamResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ISearchGoogleAdsStreamResponse);

                        /** SearchGoogleAdsStreamResponse results. */
                        public results: google.ads.googleads.v8.services.IGoogleAdsRow[];

                        /** SearchGoogleAdsStreamResponse field_mask. */
                        public field_mask?: (google.protobuf.IFieldMask|null);

                        /** SearchGoogleAdsStreamResponse summary_row. */
                        public summary_row?: (google.ads.googleads.v8.services.IGoogleAdsRow|null);

                        /** SearchGoogleAdsStreamResponse request_id. */
                        public request_id: string;

                        /**
                         * Creates a new SearchGoogleAdsStreamResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchGoogleAdsStreamResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.ISearchGoogleAdsStreamResponse): google.ads.googleads.v8.services.SearchGoogleAdsStreamResponse;

                        /**
                         * Encodes the specified SearchGoogleAdsStreamResponse message. Does not implicitly {@link google.ads.googleads.v8.services.SearchGoogleAdsStreamResponse.verify|verify} messages.
                         * @param m SearchGoogleAdsStreamResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ISearchGoogleAdsStreamResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchGoogleAdsStreamResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ISearchGoogleAdsStreamResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchGoogleAdsStreamResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.SearchGoogleAdsStreamResponse;

                        /**
                         * Verifies a SearchGoogleAdsStreamResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchGoogleAdsStreamResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SearchGoogleAdsStreamResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.SearchGoogleAdsStreamResponse;

                        /**
                         * Creates a plain object from a SearchGoogleAdsStreamResponse message. Also converts values to other types if specified.
                         * @param m SearchGoogleAdsStreamResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.SearchGoogleAdsStreamResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchGoogleAdsStreamResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a GoogleAdsRow. */
                    interface IGoogleAdsRow {

                        /** GoogleAdsRow account_budget */
                        account_budget?: (google.ads.googleads.v8.resources.IAccountBudget|null);

                        /** GoogleAdsRow account_budget_proposal */
                        account_budget_proposal?: (google.ads.googleads.v8.resources.IAccountBudgetProposal|null);

                        /** GoogleAdsRow account_link */
                        account_link?: (google.ads.googleads.v8.resources.IAccountLink|null);

                        /** GoogleAdsRow ad_group */
                        ad_group?: (google.ads.googleads.v8.resources.IAdGroup|null);

                        /** GoogleAdsRow ad_group_ad */
                        ad_group_ad?: (google.ads.googleads.v8.resources.IAdGroupAd|null);

                        /** GoogleAdsRow ad_group_ad_asset_view */
                        ad_group_ad_asset_view?: (google.ads.googleads.v8.resources.IAdGroupAdAssetView|null);

                        /** GoogleAdsRow ad_group_ad_label */
                        ad_group_ad_label?: (google.ads.googleads.v8.resources.IAdGroupAdLabel|null);

                        /** GoogleAdsRow ad_group_asset */
                        ad_group_asset?: (google.ads.googleads.v8.resources.IAdGroupAsset|null);

                        /** GoogleAdsRow ad_group_audience_view */
                        ad_group_audience_view?: (google.ads.googleads.v8.resources.IAdGroupAudienceView|null);

                        /** GoogleAdsRow ad_group_bid_modifier */
                        ad_group_bid_modifier?: (google.ads.googleads.v8.resources.IAdGroupBidModifier|null);

                        /** GoogleAdsRow ad_group_criterion */
                        ad_group_criterion?: (google.ads.googleads.v8.resources.IAdGroupCriterion|null);

                        /** GoogleAdsRow ad_group_criterion_label */
                        ad_group_criterion_label?: (google.ads.googleads.v8.resources.IAdGroupCriterionLabel|null);

                        /** GoogleAdsRow ad_group_criterion_simulation */
                        ad_group_criterion_simulation?: (google.ads.googleads.v8.resources.IAdGroupCriterionSimulation|null);

                        /** GoogleAdsRow ad_group_extension_setting */
                        ad_group_extension_setting?: (google.ads.googleads.v8.resources.IAdGroupExtensionSetting|null);

                        /** GoogleAdsRow ad_group_feed */
                        ad_group_feed?: (google.ads.googleads.v8.resources.IAdGroupFeed|null);

                        /** GoogleAdsRow ad_group_label */
                        ad_group_label?: (google.ads.googleads.v8.resources.IAdGroupLabel|null);

                        /** GoogleAdsRow ad_group_simulation */
                        ad_group_simulation?: (google.ads.googleads.v8.resources.IAdGroupSimulation|null);

                        /** GoogleAdsRow ad_parameter */
                        ad_parameter?: (google.ads.googleads.v8.resources.IAdParameter|null);

                        /** GoogleAdsRow age_range_view */
                        age_range_view?: (google.ads.googleads.v8.resources.IAgeRangeView|null);

                        /** GoogleAdsRow ad_schedule_view */
                        ad_schedule_view?: (google.ads.googleads.v8.resources.IAdScheduleView|null);

                        /** GoogleAdsRow domain_category */
                        domain_category?: (google.ads.googleads.v8.resources.IDomainCategory|null);

                        /** GoogleAdsRow asset */
                        asset?: (google.ads.googleads.v8.resources.IAsset|null);

                        /** GoogleAdsRow asset_field_type_view */
                        asset_field_type_view?: (google.ads.googleads.v8.resources.IAssetFieldTypeView|null);

                        /** GoogleAdsRow batch_job */
                        batch_job?: (google.ads.googleads.v8.resources.IBatchJob|null);

                        /** GoogleAdsRow bidding_data_exclusion */
                        bidding_data_exclusion?: (google.ads.googleads.v8.resources.IBiddingDataExclusion|null);

                        /** GoogleAdsRow bidding_seasonality_adjustment */
                        bidding_seasonality_adjustment?: (google.ads.googleads.v8.resources.IBiddingSeasonalityAdjustment|null);

                        /** GoogleAdsRow bidding_strategy */
                        bidding_strategy?: (google.ads.googleads.v8.resources.IBiddingStrategy|null);

                        /** GoogleAdsRow bidding_strategy_simulation */
                        bidding_strategy_simulation?: (google.ads.googleads.v8.resources.IBiddingStrategySimulation|null);

                        /** GoogleAdsRow billing_setup */
                        billing_setup?: (google.ads.googleads.v8.resources.IBillingSetup|null);

                        /** GoogleAdsRow call_view */
                        call_view?: (google.ads.googleads.v8.resources.ICallView|null);

                        /** GoogleAdsRow campaign_budget */
                        campaign_budget?: (google.ads.googleads.v8.resources.ICampaignBudget|null);

                        /** GoogleAdsRow campaign */
                        campaign?: (google.ads.googleads.v8.resources.ICampaign|null);

                        /** GoogleAdsRow campaign_asset */
                        campaign_asset?: (google.ads.googleads.v8.resources.ICampaignAsset|null);

                        /** GoogleAdsRow campaign_audience_view */
                        campaign_audience_view?: (google.ads.googleads.v8.resources.ICampaignAudienceView|null);

                        /** GoogleAdsRow campaign_bid_modifier */
                        campaign_bid_modifier?: (google.ads.googleads.v8.resources.ICampaignBidModifier|null);

                        /** GoogleAdsRow campaign_criterion */
                        campaign_criterion?: (google.ads.googleads.v8.resources.ICampaignCriterion|null);

                        /** GoogleAdsRow campaign_criterion_simulation */
                        campaign_criterion_simulation?: (google.ads.googleads.v8.resources.ICampaignCriterionSimulation|null);

                        /** GoogleAdsRow campaign_draft */
                        campaign_draft?: (google.ads.googleads.v8.resources.ICampaignDraft|null);

                        /** GoogleAdsRow campaign_experiment */
                        campaign_experiment?: (google.ads.googleads.v8.resources.ICampaignExperiment|null);

                        /** GoogleAdsRow campaign_extension_setting */
                        campaign_extension_setting?: (google.ads.googleads.v8.resources.ICampaignExtensionSetting|null);

                        /** GoogleAdsRow campaign_feed */
                        campaign_feed?: (google.ads.googleads.v8.resources.ICampaignFeed|null);

                        /** GoogleAdsRow campaign_label */
                        campaign_label?: (google.ads.googleads.v8.resources.ICampaignLabel|null);

                        /** GoogleAdsRow campaign_shared_set */
                        campaign_shared_set?: (google.ads.googleads.v8.resources.ICampaignSharedSet|null);

                        /** GoogleAdsRow campaign_simulation */
                        campaign_simulation?: (google.ads.googleads.v8.resources.ICampaignSimulation|null);

                        /** GoogleAdsRow carrier_constant */
                        carrier_constant?: (google.ads.googleads.v8.resources.ICarrierConstant|null);

                        /** GoogleAdsRow change_event */
                        change_event?: (google.ads.googleads.v8.resources.IChangeEvent|null);

                        /** GoogleAdsRow change_status */
                        change_status?: (google.ads.googleads.v8.resources.IChangeStatus|null);

                        /** GoogleAdsRow combined_audience */
                        combined_audience?: (google.ads.googleads.v8.resources.ICombinedAudience|null);

                        /** GoogleAdsRow conversion_action */
                        conversion_action?: (google.ads.googleads.v8.resources.IConversionAction|null);

                        /** GoogleAdsRow conversion_custom_variable */
                        conversion_custom_variable?: (google.ads.googleads.v8.resources.IConversionCustomVariable|null);

                        /** GoogleAdsRow conversion_value_rule */
                        conversion_value_rule?: (google.ads.googleads.v8.resources.IConversionValueRule|null);

                        /** GoogleAdsRow conversion_value_rule_set */
                        conversion_value_rule_set?: (google.ads.googleads.v8.resources.IConversionValueRuleSet|null);

                        /** GoogleAdsRow click_view */
                        click_view?: (google.ads.googleads.v8.resources.IClickView|null);

                        /** GoogleAdsRow currency_constant */
                        currency_constant?: (google.ads.googleads.v8.resources.ICurrencyConstant|null);

                        /** GoogleAdsRow custom_audience */
                        custom_audience?: (google.ads.googleads.v8.resources.ICustomAudience|null);

                        /** GoogleAdsRow custom_interest */
                        custom_interest?: (google.ads.googleads.v8.resources.ICustomInterest|null);

                        /** GoogleAdsRow customer */
                        customer?: (google.ads.googleads.v8.resources.ICustomer|null);

                        /** GoogleAdsRow customer_asset */
                        customer_asset?: (google.ads.googleads.v8.resources.ICustomerAsset|null);

                        /** GoogleAdsRow accessible_bidding_strategy */
                        accessible_bidding_strategy?: (google.ads.googleads.v8.resources.IAccessibleBiddingStrategy|null);

                        /** GoogleAdsRow customer_manager_link */
                        customer_manager_link?: (google.ads.googleads.v8.resources.ICustomerManagerLink|null);

                        /** GoogleAdsRow customer_client_link */
                        customer_client_link?: (google.ads.googleads.v8.resources.ICustomerClientLink|null);

                        /** GoogleAdsRow customer_client */
                        customer_client?: (google.ads.googleads.v8.resources.ICustomerClient|null);

                        /** GoogleAdsRow customer_extension_setting */
                        customer_extension_setting?: (google.ads.googleads.v8.resources.ICustomerExtensionSetting|null);

                        /** GoogleAdsRow customer_feed */
                        customer_feed?: (google.ads.googleads.v8.resources.ICustomerFeed|null);

                        /** GoogleAdsRow customer_label */
                        customer_label?: (google.ads.googleads.v8.resources.ICustomerLabel|null);

                        /** GoogleAdsRow customer_negative_criterion */
                        customer_negative_criterion?: (google.ads.googleads.v8.resources.ICustomerNegativeCriterion|null);

                        /** GoogleAdsRow customer_user_access */
                        customer_user_access?: (google.ads.googleads.v8.resources.ICustomerUserAccess|null);

                        /** GoogleAdsRow customer_user_access_invitation */
                        customer_user_access_invitation?: (google.ads.googleads.v8.resources.ICustomerUserAccessInvitation|null);

                        /** GoogleAdsRow detail_placement_view */
                        detail_placement_view?: (google.ads.googleads.v8.resources.IDetailPlacementView|null);

                        /** GoogleAdsRow detailed_demographic */
                        detailed_demographic?: (google.ads.googleads.v8.resources.IDetailedDemographic|null);

                        /** GoogleAdsRow display_keyword_view */
                        display_keyword_view?: (google.ads.googleads.v8.resources.IDisplayKeywordView|null);

                        /** GoogleAdsRow distance_view */
                        distance_view?: (google.ads.googleads.v8.resources.IDistanceView|null);

                        /** GoogleAdsRow dynamic_search_ads_search_term_view */
                        dynamic_search_ads_search_term_view?: (google.ads.googleads.v8.resources.IDynamicSearchAdsSearchTermView|null);

                        /** GoogleAdsRow expanded_landing_page_view */
                        expanded_landing_page_view?: (google.ads.googleads.v8.resources.IExpandedLandingPageView|null);

                        /** GoogleAdsRow extension_feed_item */
                        extension_feed_item?: (google.ads.googleads.v8.resources.IExtensionFeedItem|null);

                        /** GoogleAdsRow feed */
                        feed?: (google.ads.googleads.v8.resources.IFeed|null);

                        /** GoogleAdsRow feed_item */
                        feed_item?: (google.ads.googleads.v8.resources.IFeedItem|null);

                        /** GoogleAdsRow feed_item_set */
                        feed_item_set?: (google.ads.googleads.v8.resources.IFeedItemSet|null);

                        /** GoogleAdsRow feed_item_set_link */
                        feed_item_set_link?: (google.ads.googleads.v8.resources.IFeedItemSetLink|null);

                        /** GoogleAdsRow feed_item_target */
                        feed_item_target?: (google.ads.googleads.v8.resources.IFeedItemTarget|null);

                        /** GoogleAdsRow feed_mapping */
                        feed_mapping?: (google.ads.googleads.v8.resources.IFeedMapping|null);

                        /** GoogleAdsRow feed_placeholder_view */
                        feed_placeholder_view?: (google.ads.googleads.v8.resources.IFeedPlaceholderView|null);

                        /** GoogleAdsRow gender_view */
                        gender_view?: (google.ads.googleads.v8.resources.IGenderView|null);

                        /** GoogleAdsRow geo_target_constant */
                        geo_target_constant?: (google.ads.googleads.v8.resources.IGeoTargetConstant|null);

                        /** GoogleAdsRow geographic_view */
                        geographic_view?: (google.ads.googleads.v8.resources.IGeographicView|null);

                        /** GoogleAdsRow group_placement_view */
                        group_placement_view?: (google.ads.googleads.v8.resources.IGroupPlacementView|null);

                        /** GoogleAdsRow hotel_group_view */
                        hotel_group_view?: (google.ads.googleads.v8.resources.IHotelGroupView|null);

                        /** GoogleAdsRow hotel_performance_view */
                        hotel_performance_view?: (google.ads.googleads.v8.resources.IHotelPerformanceView|null);

                        /** GoogleAdsRow income_range_view */
                        income_range_view?: (google.ads.googleads.v8.resources.IIncomeRangeView|null);

                        /** GoogleAdsRow keyword_view */
                        keyword_view?: (google.ads.googleads.v8.resources.IKeywordView|null);

                        /** GoogleAdsRow keyword_plan */
                        keyword_plan?: (google.ads.googleads.v8.resources.IKeywordPlan|null);

                        /** GoogleAdsRow keyword_plan_campaign */
                        keyword_plan_campaign?: (google.ads.googleads.v8.resources.IKeywordPlanCampaign|null);

                        /** GoogleAdsRow keyword_plan_campaign_keyword */
                        keyword_plan_campaign_keyword?: (google.ads.googleads.v8.resources.IKeywordPlanCampaignKeyword|null);

                        /** GoogleAdsRow keyword_plan_ad_group */
                        keyword_plan_ad_group?: (google.ads.googleads.v8.resources.IKeywordPlanAdGroup|null);

                        /** GoogleAdsRow keyword_plan_ad_group_keyword */
                        keyword_plan_ad_group_keyword?: (google.ads.googleads.v8.resources.IKeywordPlanAdGroupKeyword|null);

                        /** GoogleAdsRow keyword_theme_constant */
                        keyword_theme_constant?: (google.ads.googleads.v8.resources.IKeywordThemeConstant|null);

                        /** GoogleAdsRow label */
                        label?: (google.ads.googleads.v8.resources.ILabel|null);

                        /** GoogleAdsRow landing_page_view */
                        landing_page_view?: (google.ads.googleads.v8.resources.ILandingPageView|null);

                        /** GoogleAdsRow language_constant */
                        language_constant?: (google.ads.googleads.v8.resources.ILanguageConstant|null);

                        /** GoogleAdsRow location_view */
                        location_view?: (google.ads.googleads.v8.resources.ILocationView|null);

                        /** GoogleAdsRow managed_placement_view */
                        managed_placement_view?: (google.ads.googleads.v8.resources.IManagedPlacementView|null);

                        /** GoogleAdsRow media_file */
                        media_file?: (google.ads.googleads.v8.resources.IMediaFile|null);

                        /** GoogleAdsRow mobile_app_category_constant */
                        mobile_app_category_constant?: (google.ads.googleads.v8.resources.IMobileAppCategoryConstant|null);

                        /** GoogleAdsRow mobile_device_constant */
                        mobile_device_constant?: (google.ads.googleads.v8.resources.IMobileDeviceConstant|null);

                        /** GoogleAdsRow offline_user_data_job */
                        offline_user_data_job?: (google.ads.googleads.v8.resources.IOfflineUserDataJob|null);

                        /** GoogleAdsRow operating_system_version_constant */
                        operating_system_version_constant?: (google.ads.googleads.v8.resources.IOperatingSystemVersionConstant|null);

                        /** GoogleAdsRow paid_organic_search_term_view */
                        paid_organic_search_term_view?: (google.ads.googleads.v8.resources.IPaidOrganicSearchTermView|null);

                        /** GoogleAdsRow parental_status_view */
                        parental_status_view?: (google.ads.googleads.v8.resources.IParentalStatusView|null);

                        /** GoogleAdsRow product_bidding_category_constant */
                        product_bidding_category_constant?: (google.ads.googleads.v8.resources.IProductBiddingCategoryConstant|null);

                        /** GoogleAdsRow product_group_view */
                        product_group_view?: (google.ads.googleads.v8.resources.IProductGroupView|null);

                        /** GoogleAdsRow recommendation */
                        recommendation?: (google.ads.googleads.v8.resources.IRecommendation|null);

                        /** GoogleAdsRow search_term_view */
                        search_term_view?: (google.ads.googleads.v8.resources.ISearchTermView|null);

                        /** GoogleAdsRow shared_criterion */
                        shared_criterion?: (google.ads.googleads.v8.resources.ISharedCriterion|null);

                        /** GoogleAdsRow shared_set */
                        shared_set?: (google.ads.googleads.v8.resources.ISharedSet|null);

                        /** GoogleAdsRow smart_campaign_setting */
                        smart_campaign_setting?: (google.ads.googleads.v8.resources.ISmartCampaignSetting|null);

                        /** GoogleAdsRow shopping_performance_view */
                        shopping_performance_view?: (google.ads.googleads.v8.resources.IShoppingPerformanceView|null);

                        /** GoogleAdsRow smart_campaign_search_term_view */
                        smart_campaign_search_term_view?: (google.ads.googleads.v8.resources.ISmartCampaignSearchTermView|null);

                        /** GoogleAdsRow third_party_app_analytics_link */
                        third_party_app_analytics_link?: (google.ads.googleads.v8.resources.IThirdPartyAppAnalyticsLink|null);

                        /** GoogleAdsRow topic_view */
                        topic_view?: (google.ads.googleads.v8.resources.ITopicView|null);

                        /** GoogleAdsRow user_interest */
                        user_interest?: (google.ads.googleads.v8.resources.IUserInterest|null);

                        /** GoogleAdsRow life_event */
                        life_event?: (google.ads.googleads.v8.resources.ILifeEvent|null);

                        /** GoogleAdsRow user_list */
                        user_list?: (google.ads.googleads.v8.resources.IUserList|null);

                        /** GoogleAdsRow user_location_view */
                        user_location_view?: (google.ads.googleads.v8.resources.IUserLocationView|null);

                        /** GoogleAdsRow remarketing_action */
                        remarketing_action?: (google.ads.googleads.v8.resources.IRemarketingAction|null);

                        /** GoogleAdsRow topic_constant */
                        topic_constant?: (google.ads.googleads.v8.resources.ITopicConstant|null);

                        /** GoogleAdsRow video */
                        video?: (google.ads.googleads.v8.resources.IVideo|null);

                        /** GoogleAdsRow webpage_view */
                        webpage_view?: (google.ads.googleads.v8.resources.IWebpageView|null);

                        /** GoogleAdsRow metrics */
                        metrics?: (google.ads.googleads.v8.common.IMetrics|null);

                        /** GoogleAdsRow segments */
                        segments?: (google.ads.googleads.v8.common.ISegments|null);
                    }

                    /** Represents a GoogleAdsRow. */
                    class GoogleAdsRow implements IGoogleAdsRow {

                        /**
                         * Constructs a new GoogleAdsRow.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGoogleAdsRow);

                        /** GoogleAdsRow account_budget. */
                        public account_budget?: (google.ads.googleads.v8.resources.IAccountBudget|null);

                        /** GoogleAdsRow account_budget_proposal. */
                        public account_budget_proposal?: (google.ads.googleads.v8.resources.IAccountBudgetProposal|null);

                        /** GoogleAdsRow account_link. */
                        public account_link?: (google.ads.googleads.v8.resources.IAccountLink|null);

                        /** GoogleAdsRow ad_group. */
                        public ad_group?: (google.ads.googleads.v8.resources.IAdGroup|null);

                        /** GoogleAdsRow ad_group_ad. */
                        public ad_group_ad?: (google.ads.googleads.v8.resources.IAdGroupAd|null);

                        /** GoogleAdsRow ad_group_ad_asset_view. */
                        public ad_group_ad_asset_view?: (google.ads.googleads.v8.resources.IAdGroupAdAssetView|null);

                        /** GoogleAdsRow ad_group_ad_label. */
                        public ad_group_ad_label?: (google.ads.googleads.v8.resources.IAdGroupAdLabel|null);

                        /** GoogleAdsRow ad_group_asset. */
                        public ad_group_asset?: (google.ads.googleads.v8.resources.IAdGroupAsset|null);

                        /** GoogleAdsRow ad_group_audience_view. */
                        public ad_group_audience_view?: (google.ads.googleads.v8.resources.IAdGroupAudienceView|null);

                        /** GoogleAdsRow ad_group_bid_modifier. */
                        public ad_group_bid_modifier?: (google.ads.googleads.v8.resources.IAdGroupBidModifier|null);

                        /** GoogleAdsRow ad_group_criterion. */
                        public ad_group_criterion?: (google.ads.googleads.v8.resources.IAdGroupCriterion|null);

                        /** GoogleAdsRow ad_group_criterion_label. */
                        public ad_group_criterion_label?: (google.ads.googleads.v8.resources.IAdGroupCriterionLabel|null);

                        /** GoogleAdsRow ad_group_criterion_simulation. */
                        public ad_group_criterion_simulation?: (google.ads.googleads.v8.resources.IAdGroupCriterionSimulation|null);

                        /** GoogleAdsRow ad_group_extension_setting. */
                        public ad_group_extension_setting?: (google.ads.googleads.v8.resources.IAdGroupExtensionSetting|null);

                        /** GoogleAdsRow ad_group_feed. */
                        public ad_group_feed?: (google.ads.googleads.v8.resources.IAdGroupFeed|null);

                        /** GoogleAdsRow ad_group_label. */
                        public ad_group_label?: (google.ads.googleads.v8.resources.IAdGroupLabel|null);

                        /** GoogleAdsRow ad_group_simulation. */
                        public ad_group_simulation?: (google.ads.googleads.v8.resources.IAdGroupSimulation|null);

                        /** GoogleAdsRow ad_parameter. */
                        public ad_parameter?: (google.ads.googleads.v8.resources.IAdParameter|null);

                        /** GoogleAdsRow age_range_view. */
                        public age_range_view?: (google.ads.googleads.v8.resources.IAgeRangeView|null);

                        /** GoogleAdsRow ad_schedule_view. */
                        public ad_schedule_view?: (google.ads.googleads.v8.resources.IAdScheduleView|null);

                        /** GoogleAdsRow domain_category. */
                        public domain_category?: (google.ads.googleads.v8.resources.IDomainCategory|null);

                        /** GoogleAdsRow asset. */
                        public asset?: (google.ads.googleads.v8.resources.IAsset|null);

                        /** GoogleAdsRow asset_field_type_view. */
                        public asset_field_type_view?: (google.ads.googleads.v8.resources.IAssetFieldTypeView|null);

                        /** GoogleAdsRow batch_job. */
                        public batch_job?: (google.ads.googleads.v8.resources.IBatchJob|null);

                        /** GoogleAdsRow bidding_data_exclusion. */
                        public bidding_data_exclusion?: (google.ads.googleads.v8.resources.IBiddingDataExclusion|null);

                        /** GoogleAdsRow bidding_seasonality_adjustment. */
                        public bidding_seasonality_adjustment?: (google.ads.googleads.v8.resources.IBiddingSeasonalityAdjustment|null);

                        /** GoogleAdsRow bidding_strategy. */
                        public bidding_strategy?: (google.ads.googleads.v8.resources.IBiddingStrategy|null);

                        /** GoogleAdsRow bidding_strategy_simulation. */
                        public bidding_strategy_simulation?: (google.ads.googleads.v8.resources.IBiddingStrategySimulation|null);

                        /** GoogleAdsRow billing_setup. */
                        public billing_setup?: (google.ads.googleads.v8.resources.IBillingSetup|null);

                        /** GoogleAdsRow call_view. */
                        public call_view?: (google.ads.googleads.v8.resources.ICallView|null);

                        /** GoogleAdsRow campaign_budget. */
                        public campaign_budget?: (google.ads.googleads.v8.resources.ICampaignBudget|null);

                        /** GoogleAdsRow campaign. */
                        public campaign?: (google.ads.googleads.v8.resources.ICampaign|null);

                        /** GoogleAdsRow campaign_asset. */
                        public campaign_asset?: (google.ads.googleads.v8.resources.ICampaignAsset|null);

                        /** GoogleAdsRow campaign_audience_view. */
                        public campaign_audience_view?: (google.ads.googleads.v8.resources.ICampaignAudienceView|null);

                        /** GoogleAdsRow campaign_bid_modifier. */
                        public campaign_bid_modifier?: (google.ads.googleads.v8.resources.ICampaignBidModifier|null);

                        /** GoogleAdsRow campaign_criterion. */
                        public campaign_criterion?: (google.ads.googleads.v8.resources.ICampaignCriterion|null);

                        /** GoogleAdsRow campaign_criterion_simulation. */
                        public campaign_criterion_simulation?: (google.ads.googleads.v8.resources.ICampaignCriterionSimulation|null);

                        /** GoogleAdsRow campaign_draft. */
                        public campaign_draft?: (google.ads.googleads.v8.resources.ICampaignDraft|null);

                        /** GoogleAdsRow campaign_experiment. */
                        public campaign_experiment?: (google.ads.googleads.v8.resources.ICampaignExperiment|null);

                        /** GoogleAdsRow campaign_extension_setting. */
                        public campaign_extension_setting?: (google.ads.googleads.v8.resources.ICampaignExtensionSetting|null);

                        /** GoogleAdsRow campaign_feed. */
                        public campaign_feed?: (google.ads.googleads.v8.resources.ICampaignFeed|null);

                        /** GoogleAdsRow campaign_label. */
                        public campaign_label?: (google.ads.googleads.v8.resources.ICampaignLabel|null);

                        /** GoogleAdsRow campaign_shared_set. */
                        public campaign_shared_set?: (google.ads.googleads.v8.resources.ICampaignSharedSet|null);

                        /** GoogleAdsRow campaign_simulation. */
                        public campaign_simulation?: (google.ads.googleads.v8.resources.ICampaignSimulation|null);

                        /** GoogleAdsRow carrier_constant. */
                        public carrier_constant?: (google.ads.googleads.v8.resources.ICarrierConstant|null);

                        /** GoogleAdsRow change_event. */
                        public change_event?: (google.ads.googleads.v8.resources.IChangeEvent|null);

                        /** GoogleAdsRow change_status. */
                        public change_status?: (google.ads.googleads.v8.resources.IChangeStatus|null);

                        /** GoogleAdsRow combined_audience. */
                        public combined_audience?: (google.ads.googleads.v8.resources.ICombinedAudience|null);

                        /** GoogleAdsRow conversion_action. */
                        public conversion_action?: (google.ads.googleads.v8.resources.IConversionAction|null);

                        /** GoogleAdsRow conversion_custom_variable. */
                        public conversion_custom_variable?: (google.ads.googleads.v8.resources.IConversionCustomVariable|null);

                        /** GoogleAdsRow conversion_value_rule. */
                        public conversion_value_rule?: (google.ads.googleads.v8.resources.IConversionValueRule|null);

                        /** GoogleAdsRow conversion_value_rule_set. */
                        public conversion_value_rule_set?: (google.ads.googleads.v8.resources.IConversionValueRuleSet|null);

                        /** GoogleAdsRow click_view. */
                        public click_view?: (google.ads.googleads.v8.resources.IClickView|null);

                        /** GoogleAdsRow currency_constant. */
                        public currency_constant?: (google.ads.googleads.v8.resources.ICurrencyConstant|null);

                        /** GoogleAdsRow custom_audience. */
                        public custom_audience?: (google.ads.googleads.v8.resources.ICustomAudience|null);

                        /** GoogleAdsRow custom_interest. */
                        public custom_interest?: (google.ads.googleads.v8.resources.ICustomInterest|null);

                        /** GoogleAdsRow customer. */
                        public customer?: (google.ads.googleads.v8.resources.ICustomer|null);

                        /** GoogleAdsRow customer_asset. */
                        public customer_asset?: (google.ads.googleads.v8.resources.ICustomerAsset|null);

                        /** GoogleAdsRow accessible_bidding_strategy. */
                        public accessible_bidding_strategy?: (google.ads.googleads.v8.resources.IAccessibleBiddingStrategy|null);

                        /** GoogleAdsRow customer_manager_link. */
                        public customer_manager_link?: (google.ads.googleads.v8.resources.ICustomerManagerLink|null);

                        /** GoogleAdsRow customer_client_link. */
                        public customer_client_link?: (google.ads.googleads.v8.resources.ICustomerClientLink|null);

                        /** GoogleAdsRow customer_client. */
                        public customer_client?: (google.ads.googleads.v8.resources.ICustomerClient|null);

                        /** GoogleAdsRow customer_extension_setting. */
                        public customer_extension_setting?: (google.ads.googleads.v8.resources.ICustomerExtensionSetting|null);

                        /** GoogleAdsRow customer_feed. */
                        public customer_feed?: (google.ads.googleads.v8.resources.ICustomerFeed|null);

                        /** GoogleAdsRow customer_label. */
                        public customer_label?: (google.ads.googleads.v8.resources.ICustomerLabel|null);

                        /** GoogleAdsRow customer_negative_criterion. */
                        public customer_negative_criterion?: (google.ads.googleads.v8.resources.ICustomerNegativeCriterion|null);

                        /** GoogleAdsRow customer_user_access. */
                        public customer_user_access?: (google.ads.googleads.v8.resources.ICustomerUserAccess|null);

                        /** GoogleAdsRow customer_user_access_invitation. */
                        public customer_user_access_invitation?: (google.ads.googleads.v8.resources.ICustomerUserAccessInvitation|null);

                        /** GoogleAdsRow detail_placement_view. */
                        public detail_placement_view?: (google.ads.googleads.v8.resources.IDetailPlacementView|null);

                        /** GoogleAdsRow detailed_demographic. */
                        public detailed_demographic?: (google.ads.googleads.v8.resources.IDetailedDemographic|null);

                        /** GoogleAdsRow display_keyword_view. */
                        public display_keyword_view?: (google.ads.googleads.v8.resources.IDisplayKeywordView|null);

                        /** GoogleAdsRow distance_view. */
                        public distance_view?: (google.ads.googleads.v8.resources.IDistanceView|null);

                        /** GoogleAdsRow dynamic_search_ads_search_term_view. */
                        public dynamic_search_ads_search_term_view?: (google.ads.googleads.v8.resources.IDynamicSearchAdsSearchTermView|null);

                        /** GoogleAdsRow expanded_landing_page_view. */
                        public expanded_landing_page_view?: (google.ads.googleads.v8.resources.IExpandedLandingPageView|null);

                        /** GoogleAdsRow extension_feed_item. */
                        public extension_feed_item?: (google.ads.googleads.v8.resources.IExtensionFeedItem|null);

                        /** GoogleAdsRow feed. */
                        public feed?: (google.ads.googleads.v8.resources.IFeed|null);

                        /** GoogleAdsRow feed_item. */
                        public feed_item?: (google.ads.googleads.v8.resources.IFeedItem|null);

                        /** GoogleAdsRow feed_item_set. */
                        public feed_item_set?: (google.ads.googleads.v8.resources.IFeedItemSet|null);

                        /** GoogleAdsRow feed_item_set_link. */
                        public feed_item_set_link?: (google.ads.googleads.v8.resources.IFeedItemSetLink|null);

                        /** GoogleAdsRow feed_item_target. */
                        public feed_item_target?: (google.ads.googleads.v8.resources.IFeedItemTarget|null);

                        /** GoogleAdsRow feed_mapping. */
                        public feed_mapping?: (google.ads.googleads.v8.resources.IFeedMapping|null);

                        /** GoogleAdsRow feed_placeholder_view. */
                        public feed_placeholder_view?: (google.ads.googleads.v8.resources.IFeedPlaceholderView|null);

                        /** GoogleAdsRow gender_view. */
                        public gender_view?: (google.ads.googleads.v8.resources.IGenderView|null);

                        /** GoogleAdsRow geo_target_constant. */
                        public geo_target_constant?: (google.ads.googleads.v8.resources.IGeoTargetConstant|null);

                        /** GoogleAdsRow geographic_view. */
                        public geographic_view?: (google.ads.googleads.v8.resources.IGeographicView|null);

                        /** GoogleAdsRow group_placement_view. */
                        public group_placement_view?: (google.ads.googleads.v8.resources.IGroupPlacementView|null);

                        /** GoogleAdsRow hotel_group_view. */
                        public hotel_group_view?: (google.ads.googleads.v8.resources.IHotelGroupView|null);

                        /** GoogleAdsRow hotel_performance_view. */
                        public hotel_performance_view?: (google.ads.googleads.v8.resources.IHotelPerformanceView|null);

                        /** GoogleAdsRow income_range_view. */
                        public income_range_view?: (google.ads.googleads.v8.resources.IIncomeRangeView|null);

                        /** GoogleAdsRow keyword_view. */
                        public keyword_view?: (google.ads.googleads.v8.resources.IKeywordView|null);

                        /** GoogleAdsRow keyword_plan. */
                        public keyword_plan?: (google.ads.googleads.v8.resources.IKeywordPlan|null);

                        /** GoogleAdsRow keyword_plan_campaign. */
                        public keyword_plan_campaign?: (google.ads.googleads.v8.resources.IKeywordPlanCampaign|null);

                        /** GoogleAdsRow keyword_plan_campaign_keyword. */
                        public keyword_plan_campaign_keyword?: (google.ads.googleads.v8.resources.IKeywordPlanCampaignKeyword|null);

                        /** GoogleAdsRow keyword_plan_ad_group. */
                        public keyword_plan_ad_group?: (google.ads.googleads.v8.resources.IKeywordPlanAdGroup|null);

                        /** GoogleAdsRow keyword_plan_ad_group_keyword. */
                        public keyword_plan_ad_group_keyword?: (google.ads.googleads.v8.resources.IKeywordPlanAdGroupKeyword|null);

                        /** GoogleAdsRow keyword_theme_constant. */
                        public keyword_theme_constant?: (google.ads.googleads.v8.resources.IKeywordThemeConstant|null);

                        /** GoogleAdsRow label. */
                        public label?: (google.ads.googleads.v8.resources.ILabel|null);

                        /** GoogleAdsRow landing_page_view. */
                        public landing_page_view?: (google.ads.googleads.v8.resources.ILandingPageView|null);

                        /** GoogleAdsRow language_constant. */
                        public language_constant?: (google.ads.googleads.v8.resources.ILanguageConstant|null);

                        /** GoogleAdsRow location_view. */
                        public location_view?: (google.ads.googleads.v8.resources.ILocationView|null);

                        /** GoogleAdsRow managed_placement_view. */
                        public managed_placement_view?: (google.ads.googleads.v8.resources.IManagedPlacementView|null);

                        /** GoogleAdsRow media_file. */
                        public media_file?: (google.ads.googleads.v8.resources.IMediaFile|null);

                        /** GoogleAdsRow mobile_app_category_constant. */
                        public mobile_app_category_constant?: (google.ads.googleads.v8.resources.IMobileAppCategoryConstant|null);

                        /** GoogleAdsRow mobile_device_constant. */
                        public mobile_device_constant?: (google.ads.googleads.v8.resources.IMobileDeviceConstant|null);

                        /** GoogleAdsRow offline_user_data_job. */
                        public offline_user_data_job?: (google.ads.googleads.v8.resources.IOfflineUserDataJob|null);

                        /** GoogleAdsRow operating_system_version_constant. */
                        public operating_system_version_constant?: (google.ads.googleads.v8.resources.IOperatingSystemVersionConstant|null);

                        /** GoogleAdsRow paid_organic_search_term_view. */
                        public paid_organic_search_term_view?: (google.ads.googleads.v8.resources.IPaidOrganicSearchTermView|null);

                        /** GoogleAdsRow parental_status_view. */
                        public parental_status_view?: (google.ads.googleads.v8.resources.IParentalStatusView|null);

                        /** GoogleAdsRow product_bidding_category_constant. */
                        public product_bidding_category_constant?: (google.ads.googleads.v8.resources.IProductBiddingCategoryConstant|null);

                        /** GoogleAdsRow product_group_view. */
                        public product_group_view?: (google.ads.googleads.v8.resources.IProductGroupView|null);

                        /** GoogleAdsRow recommendation. */
                        public recommendation?: (google.ads.googleads.v8.resources.IRecommendation|null);

                        /** GoogleAdsRow search_term_view. */
                        public search_term_view?: (google.ads.googleads.v8.resources.ISearchTermView|null);

                        /** GoogleAdsRow shared_criterion. */
                        public shared_criterion?: (google.ads.googleads.v8.resources.ISharedCriterion|null);

                        /** GoogleAdsRow shared_set. */
                        public shared_set?: (google.ads.googleads.v8.resources.ISharedSet|null);

                        /** GoogleAdsRow smart_campaign_setting. */
                        public smart_campaign_setting?: (google.ads.googleads.v8.resources.ISmartCampaignSetting|null);

                        /** GoogleAdsRow shopping_performance_view. */
                        public shopping_performance_view?: (google.ads.googleads.v8.resources.IShoppingPerformanceView|null);

                        /** GoogleAdsRow smart_campaign_search_term_view. */
                        public smart_campaign_search_term_view?: (google.ads.googleads.v8.resources.ISmartCampaignSearchTermView|null);

                        /** GoogleAdsRow third_party_app_analytics_link. */
                        public third_party_app_analytics_link?: (google.ads.googleads.v8.resources.IThirdPartyAppAnalyticsLink|null);

                        /** GoogleAdsRow topic_view. */
                        public topic_view?: (google.ads.googleads.v8.resources.ITopicView|null);

                        /** GoogleAdsRow user_interest. */
                        public user_interest?: (google.ads.googleads.v8.resources.IUserInterest|null);

                        /** GoogleAdsRow life_event. */
                        public life_event?: (google.ads.googleads.v8.resources.ILifeEvent|null);

                        /** GoogleAdsRow user_list. */
                        public user_list?: (google.ads.googleads.v8.resources.IUserList|null);

                        /** GoogleAdsRow user_location_view. */
                        public user_location_view?: (google.ads.googleads.v8.resources.IUserLocationView|null);

                        /** GoogleAdsRow remarketing_action. */
                        public remarketing_action?: (google.ads.googleads.v8.resources.IRemarketingAction|null);

                        /** GoogleAdsRow topic_constant. */
                        public topic_constant?: (google.ads.googleads.v8.resources.ITopicConstant|null);

                        /** GoogleAdsRow video. */
                        public video?: (google.ads.googleads.v8.resources.IVideo|null);

                        /** GoogleAdsRow webpage_view. */
                        public webpage_view?: (google.ads.googleads.v8.resources.IWebpageView|null);

                        /** GoogleAdsRow metrics. */
                        public metrics?: (google.ads.googleads.v8.common.IMetrics|null);

                        /** GoogleAdsRow segments. */
                        public segments?: (google.ads.googleads.v8.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.v8.services.IGoogleAdsRow): google.ads.googleads.v8.services.GoogleAdsRow;

                        /**
                         * Encodes the specified GoogleAdsRow message. Does not implicitly {@link google.ads.googleads.v8.services.GoogleAdsRow.verify|verify} messages.
                         * @param m GoogleAdsRow message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGoogleAdsRow, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GoogleAdsRow message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IGoogleAdsRow, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GoogleAdsRow message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.GoogleAdsRow;

                        /**
                         * Verifies a GoogleAdsRow message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GoogleAdsRow message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GoogleAdsRow
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GoogleAdsRow;

                        /**
                         * Creates a plain object from a GoogleAdsRow message. Also converts values to other types if specified.
                         * @param m GoogleAdsRow
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GoogleAdsRow, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GoogleAdsRow to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateGoogleAdsRequest. */
                    interface IMutateGoogleAdsRequest {

                        /** MutateGoogleAdsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateGoogleAdsRequest mutate_operations */
                        mutate_operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateGoogleAdsRequest. */
                    class MutateGoogleAdsRequest implements IMutateGoogleAdsRequest {

                        /**
                         * Constructs a new MutateGoogleAdsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateGoogleAdsRequest);

                        /** MutateGoogleAdsRequest customer_id. */
                        public customer_id: string;

                        /** MutateGoogleAdsRequest mutate_operations. */
                        public mutate_operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateGoogleAdsRequest): google.ads.googleads.v8.services.MutateGoogleAdsRequest;

                        /**
                         * Encodes the specified MutateGoogleAdsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateGoogleAdsRequest.verify|verify} messages.
                         * @param m MutateGoogleAdsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateGoogleAdsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateGoogleAdsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateGoogleAdsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateGoogleAdsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateGoogleAdsRequest;

                        /**
                         * Verifies a MutateGoogleAdsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateGoogleAdsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateGoogleAdsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateGoogleAdsRequest;

                        /**
                         * Creates a plain object from a MutateGoogleAdsRequest message. Also converts values to other types if specified.
                         * @param m MutateGoogleAdsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateGoogleAdsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateGoogleAdsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.services.IMutateOperationResponse[]|null);
                    }

                    /** Represents a MutateGoogleAdsResponse. */
                    class MutateGoogleAdsResponse implements IMutateGoogleAdsResponse {

                        /**
                         * Constructs a new MutateGoogleAdsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.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.v8.services.IMutateGoogleAdsResponse): google.ads.googleads.v8.services.MutateGoogleAdsResponse;

                        /**
                         * Encodes the specified MutateGoogleAdsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateGoogleAdsResponse.verify|verify} messages.
                         * @param m MutateGoogleAdsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateGoogleAdsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateGoogleAdsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateGoogleAdsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateGoogleAdsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateGoogleAdsResponse;

                        /**
                         * Verifies a MutateGoogleAdsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateGoogleAdsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateGoogleAdsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateGoogleAdsResponse;

                        /**
                         * Creates a plain object from a MutateGoogleAdsResponse message. Also converts values to other types if specified.
                         * @param m MutateGoogleAdsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateGoogleAdsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateGoogleAdsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateOperation. */
                    interface IMutateOperation {

                        /** MutateOperation ad_group_ad_label_operation */
                        ad_group_ad_label_operation?: (google.ads.googleads.v8.services.IAdGroupAdLabelOperation|null);

                        /** MutateOperation ad_group_ad_operation */
                        ad_group_ad_operation?: (google.ads.googleads.v8.services.IAdGroupAdOperation|null);

                        /** MutateOperation ad_group_asset_operation */
                        ad_group_asset_operation?: (google.ads.googleads.v8.services.IAdGroupAssetOperation|null);

                        /** MutateOperation ad_group_bid_modifier_operation */
                        ad_group_bid_modifier_operation?: (google.ads.googleads.v8.services.IAdGroupBidModifierOperation|null);

                        /** MutateOperation ad_group_criterion_label_operation */
                        ad_group_criterion_label_operation?: (google.ads.googleads.v8.services.IAdGroupCriterionLabelOperation|null);

                        /** MutateOperation ad_group_criterion_operation */
                        ad_group_criterion_operation?: (google.ads.googleads.v8.services.IAdGroupCriterionOperation|null);

                        /** MutateOperation ad_group_extension_setting_operation */
                        ad_group_extension_setting_operation?: (google.ads.googleads.v8.services.IAdGroupExtensionSettingOperation|null);

                        /** MutateOperation ad_group_feed_operation */
                        ad_group_feed_operation?: (google.ads.googleads.v8.services.IAdGroupFeedOperation|null);

                        /** MutateOperation ad_group_label_operation */
                        ad_group_label_operation?: (google.ads.googleads.v8.services.IAdGroupLabelOperation|null);

                        /** MutateOperation ad_group_operation */
                        ad_group_operation?: (google.ads.googleads.v8.services.IAdGroupOperation|null);

                        /** MutateOperation ad_operation */
                        ad_operation?: (google.ads.googleads.v8.services.IAdOperation|null);

                        /** MutateOperation ad_parameter_operation */
                        ad_parameter_operation?: (google.ads.googleads.v8.services.IAdParameterOperation|null);

                        /** MutateOperation asset_operation */
                        asset_operation?: (google.ads.googleads.v8.services.IAssetOperation|null);

                        /** MutateOperation bidding_data_exclusion_operation */
                        bidding_data_exclusion_operation?: (google.ads.googleads.v8.services.IBiddingDataExclusionOperation|null);

                        /** MutateOperation bidding_seasonality_adjustment_operation */
                        bidding_seasonality_adjustment_operation?: (google.ads.googleads.v8.services.IBiddingSeasonalityAdjustmentOperation|null);

                        /** MutateOperation bidding_strategy_operation */
                        bidding_strategy_operation?: (google.ads.googleads.v8.services.IBiddingStrategyOperation|null);

                        /** MutateOperation campaign_asset_operation */
                        campaign_asset_operation?: (google.ads.googleads.v8.services.ICampaignAssetOperation|null);

                        /** MutateOperation campaign_bid_modifier_operation */
                        campaign_bid_modifier_operation?: (google.ads.googleads.v8.services.ICampaignBidModifierOperation|null);

                        /** MutateOperation campaign_budget_operation */
                        campaign_budget_operation?: (google.ads.googleads.v8.services.ICampaignBudgetOperation|null);

                        /** MutateOperation campaign_criterion_operation */
                        campaign_criterion_operation?: (google.ads.googleads.v8.services.ICampaignCriterionOperation|null);

                        /** MutateOperation campaign_draft_operation */
                        campaign_draft_operation?: (google.ads.googleads.v8.services.ICampaignDraftOperation|null);

                        /** MutateOperation campaign_experiment_operation */
                        campaign_experiment_operation?: (google.ads.googleads.v8.services.ICampaignExperimentOperation|null);

                        /** MutateOperation campaign_extension_setting_operation */
                        campaign_extension_setting_operation?: (google.ads.googleads.v8.services.ICampaignExtensionSettingOperation|null);

                        /** MutateOperation campaign_feed_operation */
                        campaign_feed_operation?: (google.ads.googleads.v8.services.ICampaignFeedOperation|null);

                        /** MutateOperation campaign_label_operation */
                        campaign_label_operation?: (google.ads.googleads.v8.services.ICampaignLabelOperation|null);

                        /** MutateOperation campaign_operation */
                        campaign_operation?: (google.ads.googleads.v8.services.ICampaignOperation|null);

                        /** MutateOperation campaign_shared_set_operation */
                        campaign_shared_set_operation?: (google.ads.googleads.v8.services.ICampaignSharedSetOperation|null);

                        /** MutateOperation conversion_action_operation */
                        conversion_action_operation?: (google.ads.googleads.v8.services.IConversionActionOperation|null);

                        /** MutateOperation conversion_custom_variable_operation */
                        conversion_custom_variable_operation?: (google.ads.googleads.v8.services.IConversionCustomVariableOperation|null);

                        /** MutateOperation conversion_value_rule_operation */
                        conversion_value_rule_operation?: (google.ads.googleads.v8.services.IConversionValueRuleOperation|null);

                        /** MutateOperation conversion_value_rule_set_operation */
                        conversion_value_rule_set_operation?: (google.ads.googleads.v8.services.IConversionValueRuleSetOperation|null);

                        /** MutateOperation customer_asset_operation */
                        customer_asset_operation?: (google.ads.googleads.v8.services.ICustomerAssetOperation|null);

                        /** MutateOperation customer_extension_setting_operation */
                        customer_extension_setting_operation?: (google.ads.googleads.v8.services.ICustomerExtensionSettingOperation|null);

                        /** MutateOperation customer_feed_operation */
                        customer_feed_operation?: (google.ads.googleads.v8.services.ICustomerFeedOperation|null);

                        /** MutateOperation customer_label_operation */
                        customer_label_operation?: (google.ads.googleads.v8.services.ICustomerLabelOperation|null);

                        /** MutateOperation customer_negative_criterion_operation */
                        customer_negative_criterion_operation?: (google.ads.googleads.v8.services.ICustomerNegativeCriterionOperation|null);

                        /** MutateOperation customer_operation */
                        customer_operation?: (google.ads.googleads.v8.services.ICustomerOperation|null);

                        /** MutateOperation extension_feed_item_operation */
                        extension_feed_item_operation?: (google.ads.googleads.v8.services.IExtensionFeedItemOperation|null);

                        /** MutateOperation feed_item_operation */
                        feed_item_operation?: (google.ads.googleads.v8.services.IFeedItemOperation|null);

                        /** MutateOperation feed_item_set_operation */
                        feed_item_set_operation?: (google.ads.googleads.v8.services.IFeedItemSetOperation|null);

                        /** MutateOperation feed_item_set_link_operation */
                        feed_item_set_link_operation?: (google.ads.googleads.v8.services.IFeedItemSetLinkOperation|null);

                        /** MutateOperation feed_item_target_operation */
                        feed_item_target_operation?: (google.ads.googleads.v8.services.IFeedItemTargetOperation|null);

                        /** MutateOperation feed_mapping_operation */
                        feed_mapping_operation?: (google.ads.googleads.v8.services.IFeedMappingOperation|null);

                        /** MutateOperation feed_operation */
                        feed_operation?: (google.ads.googleads.v8.services.IFeedOperation|null);

                        /** MutateOperation keyword_plan_ad_group_operation */
                        keyword_plan_ad_group_operation?: (google.ads.googleads.v8.services.IKeywordPlanAdGroupOperation|null);

                        /** MutateOperation keyword_plan_ad_group_keyword_operation */
                        keyword_plan_ad_group_keyword_operation?: (google.ads.googleads.v8.services.IKeywordPlanAdGroupKeywordOperation|null);

                        /** MutateOperation keyword_plan_campaign_keyword_operation */
                        keyword_plan_campaign_keyword_operation?: (google.ads.googleads.v8.services.IKeywordPlanCampaignKeywordOperation|null);

                        /** MutateOperation keyword_plan_campaign_operation */
                        keyword_plan_campaign_operation?: (google.ads.googleads.v8.services.IKeywordPlanCampaignOperation|null);

                        /** MutateOperation keyword_plan_operation */
                        keyword_plan_operation?: (google.ads.googleads.v8.services.IKeywordPlanOperation|null);

                        /** MutateOperation label_operation */
                        label_operation?: (google.ads.googleads.v8.services.ILabelOperation|null);

                        /** MutateOperation media_file_operation */
                        media_file_operation?: (google.ads.googleads.v8.services.IMediaFileOperation|null);

                        /** MutateOperation remarketing_action_operation */
                        remarketing_action_operation?: (google.ads.googleads.v8.services.IRemarketingActionOperation|null);

                        /** MutateOperation shared_criterion_operation */
                        shared_criterion_operation?: (google.ads.googleads.v8.services.ISharedCriterionOperation|null);

                        /** MutateOperation shared_set_operation */
                        shared_set_operation?: (google.ads.googleads.v8.services.ISharedSetOperation|null);

                        /** MutateOperation smart_campaign_setting_operation */
                        smart_campaign_setting_operation?: (google.ads.googleads.v8.services.ISmartCampaignSettingOperation|null);

                        /** MutateOperation user_list_operation */
                        user_list_operation?: (google.ads.googleads.v8.services.IUserListOperation|null);
                    }

                    /** Represents a MutateOperation. */
                    class MutateOperation implements IMutateOperation {

                        /**
                         * Constructs a new MutateOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateOperation);

                        /** MutateOperation ad_group_ad_label_operation. */
                        public ad_group_ad_label_operation?: (google.ads.googleads.v8.services.IAdGroupAdLabelOperation|null);

                        /** MutateOperation ad_group_ad_operation. */
                        public ad_group_ad_operation?: (google.ads.googleads.v8.services.IAdGroupAdOperation|null);

                        /** MutateOperation ad_group_asset_operation. */
                        public ad_group_asset_operation?: (google.ads.googleads.v8.services.IAdGroupAssetOperation|null);

                        /** MutateOperation ad_group_bid_modifier_operation. */
                        public ad_group_bid_modifier_operation?: (google.ads.googleads.v8.services.IAdGroupBidModifierOperation|null);

                        /** MutateOperation ad_group_criterion_label_operation. */
                        public ad_group_criterion_label_operation?: (google.ads.googleads.v8.services.IAdGroupCriterionLabelOperation|null);

                        /** MutateOperation ad_group_criterion_operation. */
                        public ad_group_criterion_operation?: (google.ads.googleads.v8.services.IAdGroupCriterionOperation|null);

                        /** MutateOperation ad_group_extension_setting_operation. */
                        public ad_group_extension_setting_operation?: (google.ads.googleads.v8.services.IAdGroupExtensionSettingOperation|null);

                        /** MutateOperation ad_group_feed_operation. */
                        public ad_group_feed_operation?: (google.ads.googleads.v8.services.IAdGroupFeedOperation|null);

                        /** MutateOperation ad_group_label_operation. */
                        public ad_group_label_operation?: (google.ads.googleads.v8.services.IAdGroupLabelOperation|null);

                        /** MutateOperation ad_group_operation. */
                        public ad_group_operation?: (google.ads.googleads.v8.services.IAdGroupOperation|null);

                        /** MutateOperation ad_operation. */
                        public ad_operation?: (google.ads.googleads.v8.services.IAdOperation|null);

                        /** MutateOperation ad_parameter_operation. */
                        public ad_parameter_operation?: (google.ads.googleads.v8.services.IAdParameterOperation|null);

                        /** MutateOperation asset_operation. */
                        public asset_operation?: (google.ads.googleads.v8.services.IAssetOperation|null);

                        /** MutateOperation bidding_data_exclusion_operation. */
                        public bidding_data_exclusion_operation?: (google.ads.googleads.v8.services.IBiddingDataExclusionOperation|null);

                        /** MutateOperation bidding_seasonality_adjustment_operation. */
                        public bidding_seasonality_adjustment_operation?: (google.ads.googleads.v8.services.IBiddingSeasonalityAdjustmentOperation|null);

                        /** MutateOperation bidding_strategy_operation. */
                        public bidding_strategy_operation?: (google.ads.googleads.v8.services.IBiddingStrategyOperation|null);

                        /** MutateOperation campaign_asset_operation. */
                        public campaign_asset_operation?: (google.ads.googleads.v8.services.ICampaignAssetOperation|null);

                        /** MutateOperation campaign_bid_modifier_operation. */
                        public campaign_bid_modifier_operation?: (google.ads.googleads.v8.services.ICampaignBidModifierOperation|null);

                        /** MutateOperation campaign_budget_operation. */
                        public campaign_budget_operation?: (google.ads.googleads.v8.services.ICampaignBudgetOperation|null);

                        /** MutateOperation campaign_criterion_operation. */
                        public campaign_criterion_operation?: (google.ads.googleads.v8.services.ICampaignCriterionOperation|null);

                        /** MutateOperation campaign_draft_operation. */
                        public campaign_draft_operation?: (google.ads.googleads.v8.services.ICampaignDraftOperation|null);

                        /** MutateOperation campaign_experiment_operation. */
                        public campaign_experiment_operation?: (google.ads.googleads.v8.services.ICampaignExperimentOperation|null);

                        /** MutateOperation campaign_extension_setting_operation. */
                        public campaign_extension_setting_operation?: (google.ads.googleads.v8.services.ICampaignExtensionSettingOperation|null);

                        /** MutateOperation campaign_feed_operation. */
                        public campaign_feed_operation?: (google.ads.googleads.v8.services.ICampaignFeedOperation|null);

                        /** MutateOperation campaign_label_operation. */
                        public campaign_label_operation?: (google.ads.googleads.v8.services.ICampaignLabelOperation|null);

                        /** MutateOperation campaign_operation. */
                        public campaign_operation?: (google.ads.googleads.v8.services.ICampaignOperation|null);

                        /** MutateOperation campaign_shared_set_operation. */
                        public campaign_shared_set_operation?: (google.ads.googleads.v8.services.ICampaignSharedSetOperation|null);

                        /** MutateOperation conversion_action_operation. */
                        public conversion_action_operation?: (google.ads.googleads.v8.services.IConversionActionOperation|null);

                        /** MutateOperation conversion_custom_variable_operation. */
                        public conversion_custom_variable_operation?: (google.ads.googleads.v8.services.IConversionCustomVariableOperation|null);

                        /** MutateOperation conversion_value_rule_operation. */
                        public conversion_value_rule_operation?: (google.ads.googleads.v8.services.IConversionValueRuleOperation|null);

                        /** MutateOperation conversion_value_rule_set_operation. */
                        public conversion_value_rule_set_operation?: (google.ads.googleads.v8.services.IConversionValueRuleSetOperation|null);

                        /** MutateOperation customer_asset_operation. */
                        public customer_asset_operation?: (google.ads.googleads.v8.services.ICustomerAssetOperation|null);

                        /** MutateOperation customer_extension_setting_operation. */
                        public customer_extension_setting_operation?: (google.ads.googleads.v8.services.ICustomerExtensionSettingOperation|null);

                        /** MutateOperation customer_feed_operation. */
                        public customer_feed_operation?: (google.ads.googleads.v8.services.ICustomerFeedOperation|null);

                        /** MutateOperation customer_label_operation. */
                        public customer_label_operation?: (google.ads.googleads.v8.services.ICustomerLabelOperation|null);

                        /** MutateOperation customer_negative_criterion_operation. */
                        public customer_negative_criterion_operation?: (google.ads.googleads.v8.services.ICustomerNegativeCriterionOperation|null);

                        /** MutateOperation customer_operation. */
                        public customer_operation?: (google.ads.googleads.v8.services.ICustomerOperation|null);

                        /** MutateOperation extension_feed_item_operation. */
                        public extension_feed_item_operation?: (google.ads.googleads.v8.services.IExtensionFeedItemOperation|null);

                        /** MutateOperation feed_item_operation. */
                        public feed_item_operation?: (google.ads.googleads.v8.services.IFeedItemOperation|null);

                        /** MutateOperation feed_item_set_operation. */
                        public feed_item_set_operation?: (google.ads.googleads.v8.services.IFeedItemSetOperation|null);

                        /** MutateOperation feed_item_set_link_operation. */
                        public feed_item_set_link_operation?: (google.ads.googleads.v8.services.IFeedItemSetLinkOperation|null);

                        /** MutateOperation feed_item_target_operation. */
                        public feed_item_target_operation?: (google.ads.googleads.v8.services.IFeedItemTargetOperation|null);

                        /** MutateOperation feed_mapping_operation. */
                        public feed_mapping_operation?: (google.ads.googleads.v8.services.IFeedMappingOperation|null);

                        /** MutateOperation feed_operation. */
                        public feed_operation?: (google.ads.googleads.v8.services.IFeedOperation|null);

                        /** MutateOperation keyword_plan_ad_group_operation. */
                        public keyword_plan_ad_group_operation?: (google.ads.googleads.v8.services.IKeywordPlanAdGroupOperation|null);

                        /** MutateOperation keyword_plan_ad_group_keyword_operation. */
                        public keyword_plan_ad_group_keyword_operation?: (google.ads.googleads.v8.services.IKeywordPlanAdGroupKeywordOperation|null);

                        /** MutateOperation keyword_plan_campaign_keyword_operation. */
                        public keyword_plan_campaign_keyword_operation?: (google.ads.googleads.v8.services.IKeywordPlanCampaignKeywordOperation|null);

                        /** MutateOperation keyword_plan_campaign_operation. */
                        public keyword_plan_campaign_operation?: (google.ads.googleads.v8.services.IKeywordPlanCampaignOperation|null);

                        /** MutateOperation keyword_plan_operation. */
                        public keyword_plan_operation?: (google.ads.googleads.v8.services.IKeywordPlanOperation|null);

                        /** MutateOperation label_operation. */
                        public label_operation?: (google.ads.googleads.v8.services.ILabelOperation|null);

                        /** MutateOperation media_file_operation. */
                        public media_file_operation?: (google.ads.googleads.v8.services.IMediaFileOperation|null);

                        /** MutateOperation remarketing_action_operation. */
                        public remarketing_action_operation?: (google.ads.googleads.v8.services.IRemarketingActionOperation|null);

                        /** MutateOperation shared_criterion_operation. */
                        public shared_criterion_operation?: (google.ads.googleads.v8.services.ISharedCriterionOperation|null);

                        /** MutateOperation shared_set_operation. */
                        public shared_set_operation?: (google.ads.googleads.v8.services.ISharedSetOperation|null);

                        /** MutateOperation smart_campaign_setting_operation. */
                        public smart_campaign_setting_operation?: (google.ads.googleads.v8.services.ISmartCampaignSettingOperation|null);

                        /** MutateOperation user_list_operation. */
                        public user_list_operation?: (google.ads.googleads.v8.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_label_operation"|"ad_group_criterion_operation"|"ad_group_extension_setting_operation"|"ad_group_feed_operation"|"ad_group_label_operation"|"ad_group_operation"|"ad_operation"|"ad_parameter_operation"|"asset_operation"|"bidding_data_exclusion_operation"|"bidding_seasonality_adjustment_operation"|"bidding_strategy_operation"|"campaign_asset_operation"|"campaign_bid_modifier_operation"|"campaign_budget_operation"|"campaign_criterion_operation"|"campaign_draft_operation"|"campaign_experiment_operation"|"campaign_extension_setting_operation"|"campaign_feed_operation"|"campaign_label_operation"|"campaign_operation"|"campaign_shared_set_operation"|"conversion_action_operation"|"conversion_custom_variable_operation"|"conversion_value_rule_operation"|"conversion_value_rule_set_operation"|"customer_asset_operation"|"customer_extension_setting_operation"|"customer_feed_operation"|"customer_label_operation"|"customer_negative_criterion_operation"|"customer_operation"|"extension_feed_item_operation"|"feed_item_operation"|"feed_item_set_operation"|"feed_item_set_link_operation"|"feed_item_target_operation"|"feed_mapping_operation"|"feed_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"|"media_file_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.v8.services.IMutateOperation): google.ads.googleads.v8.services.MutateOperation;

                        /**
                         * Encodes the specified MutateOperation message. Does not implicitly {@link google.ads.googleads.v8.services.MutateOperation.verify|verify} messages.
                         * @param m MutateOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateOperation;

                        /**
                         * Verifies a MutateOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateOperation;

                        /**
                         * Creates a plain object from a MutateOperation message. Also converts values to other types if specified.
                         * @param m MutateOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateOperationResponse. */
                    interface IMutateOperationResponse {

                        /** MutateOperationResponse ad_group_ad_label_result */
                        ad_group_ad_label_result?: (google.ads.googleads.v8.services.IMutateAdGroupAdLabelResult|null);

                        /** MutateOperationResponse ad_group_ad_result */
                        ad_group_ad_result?: (google.ads.googleads.v8.services.IMutateAdGroupAdResult|null);

                        /** MutateOperationResponse ad_group_asset_result */
                        ad_group_asset_result?: (google.ads.googleads.v8.services.IMutateAdGroupAssetResult|null);

                        /** MutateOperationResponse ad_group_bid_modifier_result */
                        ad_group_bid_modifier_result?: (google.ads.googleads.v8.services.IMutateAdGroupBidModifierResult|null);

                        /** MutateOperationResponse ad_group_criterion_label_result */
                        ad_group_criterion_label_result?: (google.ads.googleads.v8.services.IMutateAdGroupCriterionLabelResult|null);

                        /** MutateOperationResponse ad_group_criterion_result */
                        ad_group_criterion_result?: (google.ads.googleads.v8.services.IMutateAdGroupCriterionResult|null);

                        /** MutateOperationResponse ad_group_extension_setting_result */
                        ad_group_extension_setting_result?: (google.ads.googleads.v8.services.IMutateAdGroupExtensionSettingResult|null);

                        /** MutateOperationResponse ad_group_feed_result */
                        ad_group_feed_result?: (google.ads.googleads.v8.services.IMutateAdGroupFeedResult|null);

                        /** MutateOperationResponse ad_group_label_result */
                        ad_group_label_result?: (google.ads.googleads.v8.services.IMutateAdGroupLabelResult|null);

                        /** MutateOperationResponse ad_group_result */
                        ad_group_result?: (google.ads.googleads.v8.services.IMutateAdGroupResult|null);

                        /** MutateOperationResponse ad_parameter_result */
                        ad_parameter_result?: (google.ads.googleads.v8.services.IMutateAdParameterResult|null);

                        /** MutateOperationResponse ad_result */
                        ad_result?: (google.ads.googleads.v8.services.IMutateAdResult|null);

                        /** MutateOperationResponse asset_result */
                        asset_result?: (google.ads.googleads.v8.services.IMutateAssetResult|null);

                        /** MutateOperationResponse bidding_data_exclusion_result */
                        bidding_data_exclusion_result?: (google.ads.googleads.v8.services.IMutateBiddingDataExclusionsResult|null);

                        /** MutateOperationResponse bidding_seasonality_adjustment_result */
                        bidding_seasonality_adjustment_result?: (google.ads.googleads.v8.services.IMutateBiddingSeasonalityAdjustmentsResult|null);

                        /** MutateOperationResponse bidding_strategy_result */
                        bidding_strategy_result?: (google.ads.googleads.v8.services.IMutateBiddingStrategyResult|null);

                        /** MutateOperationResponse campaign_asset_result */
                        campaign_asset_result?: (google.ads.googleads.v8.services.IMutateCampaignAssetResult|null);

                        /** MutateOperationResponse campaign_bid_modifier_result */
                        campaign_bid_modifier_result?: (google.ads.googleads.v8.services.IMutateCampaignBidModifierResult|null);

                        /** MutateOperationResponse campaign_budget_result */
                        campaign_budget_result?: (google.ads.googleads.v8.services.IMutateCampaignBudgetResult|null);

                        /** MutateOperationResponse campaign_criterion_result */
                        campaign_criterion_result?: (google.ads.googleads.v8.services.IMutateCampaignCriterionResult|null);

                        /** MutateOperationResponse campaign_draft_result */
                        campaign_draft_result?: (google.ads.googleads.v8.services.IMutateCampaignDraftResult|null);

                        /** MutateOperationResponse campaign_experiment_result */
                        campaign_experiment_result?: (google.ads.googleads.v8.services.IMutateCampaignExperimentResult|null);

                        /** MutateOperationResponse campaign_extension_setting_result */
                        campaign_extension_setting_result?: (google.ads.googleads.v8.services.IMutateCampaignExtensionSettingResult|null);

                        /** MutateOperationResponse campaign_feed_result */
                        campaign_feed_result?: (google.ads.googleads.v8.services.IMutateCampaignFeedResult|null);

                        /** MutateOperationResponse campaign_label_result */
                        campaign_label_result?: (google.ads.googleads.v8.services.IMutateCampaignLabelResult|null);

                        /** MutateOperationResponse campaign_result */
                        campaign_result?: (google.ads.googleads.v8.services.IMutateCampaignResult|null);

                        /** MutateOperationResponse campaign_shared_set_result */
                        campaign_shared_set_result?: (google.ads.googleads.v8.services.IMutateCampaignSharedSetResult|null);

                        /** MutateOperationResponse conversion_action_result */
                        conversion_action_result?: (google.ads.googleads.v8.services.IMutateConversionActionResult|null);

                        /** MutateOperationResponse conversion_custom_variable_result */
                        conversion_custom_variable_result?: (google.ads.googleads.v8.services.IMutateConversionCustomVariableResult|null);

                        /** MutateOperationResponse conversion_value_rule_result */
                        conversion_value_rule_result?: (google.ads.googleads.v8.services.IMutateConversionValueRuleResult|null);

                        /** MutateOperationResponse conversion_value_rule_set_result */
                        conversion_value_rule_set_result?: (google.ads.googleads.v8.services.IMutateConversionValueRuleSetResult|null);

                        /** MutateOperationResponse customer_asset_result */
                        customer_asset_result?: (google.ads.googleads.v8.services.IMutateCustomerAssetResult|null);

                        /** MutateOperationResponse customer_extension_setting_result */
                        customer_extension_setting_result?: (google.ads.googleads.v8.services.IMutateCustomerExtensionSettingResult|null);

                        /** MutateOperationResponse customer_feed_result */
                        customer_feed_result?: (google.ads.googleads.v8.services.IMutateCustomerFeedResult|null);

                        /** MutateOperationResponse customer_label_result */
                        customer_label_result?: (google.ads.googleads.v8.services.IMutateCustomerLabelResult|null);

                        /** MutateOperationResponse customer_negative_criterion_result */
                        customer_negative_criterion_result?: (google.ads.googleads.v8.services.IMutateCustomerNegativeCriteriaResult|null);

                        /** MutateOperationResponse customer_result */
                        customer_result?: (google.ads.googleads.v8.services.IMutateCustomerResult|null);

                        /** MutateOperationResponse extension_feed_item_result */
                        extension_feed_item_result?: (google.ads.googleads.v8.services.IMutateExtensionFeedItemResult|null);

                        /** MutateOperationResponse feed_item_result */
                        feed_item_result?: (google.ads.googleads.v8.services.IMutateFeedItemResult|null);

                        /** MutateOperationResponse feed_item_set_result */
                        feed_item_set_result?: (google.ads.googleads.v8.services.IMutateFeedItemSetResult|null);

                        /** MutateOperationResponse feed_item_set_link_result */
                        feed_item_set_link_result?: (google.ads.googleads.v8.services.IMutateFeedItemSetLinkResult|null);

                        /** MutateOperationResponse feed_item_target_result */
                        feed_item_target_result?: (google.ads.googleads.v8.services.IMutateFeedItemTargetResult|null);

                        /** MutateOperationResponse feed_mapping_result */
                        feed_mapping_result?: (google.ads.googleads.v8.services.IMutateFeedMappingResult|null);

                        /** MutateOperationResponse feed_result */
                        feed_result?: (google.ads.googleads.v8.services.IMutateFeedResult|null);

                        /** MutateOperationResponse keyword_plan_ad_group_result */
                        keyword_plan_ad_group_result?: (google.ads.googleads.v8.services.IMutateKeywordPlanAdGroupResult|null);

                        /** MutateOperationResponse keyword_plan_campaign_result */
                        keyword_plan_campaign_result?: (google.ads.googleads.v8.services.IMutateKeywordPlanCampaignResult|null);

                        /** MutateOperationResponse keyword_plan_ad_group_keyword_result */
                        keyword_plan_ad_group_keyword_result?: (google.ads.googleads.v8.services.IMutateKeywordPlanAdGroupKeywordResult|null);

                        /** MutateOperationResponse keyword_plan_campaign_keyword_result */
                        keyword_plan_campaign_keyword_result?: (google.ads.googleads.v8.services.IMutateKeywordPlanCampaignKeywordResult|null);

                        /** MutateOperationResponse keyword_plan_result */
                        keyword_plan_result?: (google.ads.googleads.v8.services.IMutateKeywordPlansResult|null);

                        /** MutateOperationResponse label_result */
                        label_result?: (google.ads.googleads.v8.services.IMutateLabelResult|null);

                        /** MutateOperationResponse media_file_result */
                        media_file_result?: (google.ads.googleads.v8.services.IMutateMediaFileResult|null);

                        /** MutateOperationResponse remarketing_action_result */
                        remarketing_action_result?: (google.ads.googleads.v8.services.IMutateRemarketingActionResult|null);

                        /** MutateOperationResponse shared_criterion_result */
                        shared_criterion_result?: (google.ads.googleads.v8.services.IMutateSharedCriterionResult|null);

                        /** MutateOperationResponse shared_set_result */
                        shared_set_result?: (google.ads.googleads.v8.services.IMutateSharedSetResult|null);

                        /** MutateOperationResponse smart_campaign_setting_result */
                        smart_campaign_setting_result?: (google.ads.googleads.v8.services.IMutateSmartCampaignSettingResult|null);

                        /** MutateOperationResponse user_list_result */
                        user_list_result?: (google.ads.googleads.v8.services.IMutateUserListResult|null);
                    }

                    /** Represents a MutateOperationResponse. */
                    class MutateOperationResponse implements IMutateOperationResponse {

                        /**
                         * Constructs a new MutateOperationResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateOperationResponse);

                        /** MutateOperationResponse ad_group_ad_label_result. */
                        public ad_group_ad_label_result?: (google.ads.googleads.v8.services.IMutateAdGroupAdLabelResult|null);

                        /** MutateOperationResponse ad_group_ad_result. */
                        public ad_group_ad_result?: (google.ads.googleads.v8.services.IMutateAdGroupAdResult|null);

                        /** MutateOperationResponse ad_group_asset_result. */
                        public ad_group_asset_result?: (google.ads.googleads.v8.services.IMutateAdGroupAssetResult|null);

                        /** MutateOperationResponse ad_group_bid_modifier_result. */
                        public ad_group_bid_modifier_result?: (google.ads.googleads.v8.services.IMutateAdGroupBidModifierResult|null);

                        /** MutateOperationResponse ad_group_criterion_label_result. */
                        public ad_group_criterion_label_result?: (google.ads.googleads.v8.services.IMutateAdGroupCriterionLabelResult|null);

                        /** MutateOperationResponse ad_group_criterion_result. */
                        public ad_group_criterion_result?: (google.ads.googleads.v8.services.IMutateAdGroupCriterionResult|null);

                        /** MutateOperationResponse ad_group_extension_setting_result. */
                        public ad_group_extension_setting_result?: (google.ads.googleads.v8.services.IMutateAdGroupExtensionSettingResult|null);

                        /** MutateOperationResponse ad_group_feed_result. */
                        public ad_group_feed_result?: (google.ads.googleads.v8.services.IMutateAdGroupFeedResult|null);

                        /** MutateOperationResponse ad_group_label_result. */
                        public ad_group_label_result?: (google.ads.googleads.v8.services.IMutateAdGroupLabelResult|null);

                        /** MutateOperationResponse ad_group_result. */
                        public ad_group_result?: (google.ads.googleads.v8.services.IMutateAdGroupResult|null);

                        /** MutateOperationResponse ad_parameter_result. */
                        public ad_parameter_result?: (google.ads.googleads.v8.services.IMutateAdParameterResult|null);

                        /** MutateOperationResponse ad_result. */
                        public ad_result?: (google.ads.googleads.v8.services.IMutateAdResult|null);

                        /** MutateOperationResponse asset_result. */
                        public asset_result?: (google.ads.googleads.v8.services.IMutateAssetResult|null);

                        /** MutateOperationResponse bidding_data_exclusion_result. */
                        public bidding_data_exclusion_result?: (google.ads.googleads.v8.services.IMutateBiddingDataExclusionsResult|null);

                        /** MutateOperationResponse bidding_seasonality_adjustment_result. */
                        public bidding_seasonality_adjustment_result?: (google.ads.googleads.v8.services.IMutateBiddingSeasonalityAdjustmentsResult|null);

                        /** MutateOperationResponse bidding_strategy_result. */
                        public bidding_strategy_result?: (google.ads.googleads.v8.services.IMutateBiddingStrategyResult|null);

                        /** MutateOperationResponse campaign_asset_result. */
                        public campaign_asset_result?: (google.ads.googleads.v8.services.IMutateCampaignAssetResult|null);

                        /** MutateOperationResponse campaign_bid_modifier_result. */
                        public campaign_bid_modifier_result?: (google.ads.googleads.v8.services.IMutateCampaignBidModifierResult|null);

                        /** MutateOperationResponse campaign_budget_result. */
                        public campaign_budget_result?: (google.ads.googleads.v8.services.IMutateCampaignBudgetResult|null);

                        /** MutateOperationResponse campaign_criterion_result. */
                        public campaign_criterion_result?: (google.ads.googleads.v8.services.IMutateCampaignCriterionResult|null);

                        /** MutateOperationResponse campaign_draft_result. */
                        public campaign_draft_result?: (google.ads.googleads.v8.services.IMutateCampaignDraftResult|null);

                        /** MutateOperationResponse campaign_experiment_result. */
                        public campaign_experiment_result?: (google.ads.googleads.v8.services.IMutateCampaignExperimentResult|null);

                        /** MutateOperationResponse campaign_extension_setting_result. */
                        public campaign_extension_setting_result?: (google.ads.googleads.v8.services.IMutateCampaignExtensionSettingResult|null);

                        /** MutateOperationResponse campaign_feed_result. */
                        public campaign_feed_result?: (google.ads.googleads.v8.services.IMutateCampaignFeedResult|null);

                        /** MutateOperationResponse campaign_label_result. */
                        public campaign_label_result?: (google.ads.googleads.v8.services.IMutateCampaignLabelResult|null);

                        /** MutateOperationResponse campaign_result. */
                        public campaign_result?: (google.ads.googleads.v8.services.IMutateCampaignResult|null);

                        /** MutateOperationResponse campaign_shared_set_result. */
                        public campaign_shared_set_result?: (google.ads.googleads.v8.services.IMutateCampaignSharedSetResult|null);

                        /** MutateOperationResponse conversion_action_result. */
                        public conversion_action_result?: (google.ads.googleads.v8.services.IMutateConversionActionResult|null);

                        /** MutateOperationResponse conversion_custom_variable_result. */
                        public conversion_custom_variable_result?: (google.ads.googleads.v8.services.IMutateConversionCustomVariableResult|null);

                        /** MutateOperationResponse conversion_value_rule_result. */
                        public conversion_value_rule_result?: (google.ads.googleads.v8.services.IMutateConversionValueRuleResult|null);

                        /** MutateOperationResponse conversion_value_rule_set_result. */
                        public conversion_value_rule_set_result?: (google.ads.googleads.v8.services.IMutateConversionValueRuleSetResult|null);

                        /** MutateOperationResponse customer_asset_result. */
                        public customer_asset_result?: (google.ads.googleads.v8.services.IMutateCustomerAssetResult|null);

                        /** MutateOperationResponse customer_extension_setting_result. */
                        public customer_extension_setting_result?: (google.ads.googleads.v8.services.IMutateCustomerExtensionSettingResult|null);

                        /** MutateOperationResponse customer_feed_result. */
                        public customer_feed_result?: (google.ads.googleads.v8.services.IMutateCustomerFeedResult|null);

                        /** MutateOperationResponse customer_label_result. */
                        public customer_label_result?: (google.ads.googleads.v8.services.IMutateCustomerLabelResult|null);

                        /** MutateOperationResponse customer_negative_criterion_result. */
                        public customer_negative_criterion_result?: (google.ads.googleads.v8.services.IMutateCustomerNegativeCriteriaResult|null);

                        /** MutateOperationResponse customer_result. */
                        public customer_result?: (google.ads.googleads.v8.services.IMutateCustomerResult|null);

                        /** MutateOperationResponse extension_feed_item_result. */
                        public extension_feed_item_result?: (google.ads.googleads.v8.services.IMutateExtensionFeedItemResult|null);

                        /** MutateOperationResponse feed_item_result. */
                        public feed_item_result?: (google.ads.googleads.v8.services.IMutateFeedItemResult|null);

                        /** MutateOperationResponse feed_item_set_result. */
                        public feed_item_set_result?: (google.ads.googleads.v8.services.IMutateFeedItemSetResult|null);

                        /** MutateOperationResponse feed_item_set_link_result. */
                        public feed_item_set_link_result?: (google.ads.googleads.v8.services.IMutateFeedItemSetLinkResult|null);

                        /** MutateOperationResponse feed_item_target_result. */
                        public feed_item_target_result?: (google.ads.googleads.v8.services.IMutateFeedItemTargetResult|null);

                        /** MutateOperationResponse feed_mapping_result. */
                        public feed_mapping_result?: (google.ads.googleads.v8.services.IMutateFeedMappingResult|null);

                        /** MutateOperationResponse feed_result. */
                        public feed_result?: (google.ads.googleads.v8.services.IMutateFeedResult|null);

                        /** MutateOperationResponse keyword_plan_ad_group_result. */
                        public keyword_plan_ad_group_result?: (google.ads.googleads.v8.services.IMutateKeywordPlanAdGroupResult|null);

                        /** MutateOperationResponse keyword_plan_campaign_result. */
                        public keyword_plan_campaign_result?: (google.ads.googleads.v8.services.IMutateKeywordPlanCampaignResult|null);

                        /** MutateOperationResponse keyword_plan_ad_group_keyword_result. */
                        public keyword_plan_ad_group_keyword_result?: (google.ads.googleads.v8.services.IMutateKeywordPlanAdGroupKeywordResult|null);

                        /** MutateOperationResponse keyword_plan_campaign_keyword_result. */
                        public keyword_plan_campaign_keyword_result?: (google.ads.googleads.v8.services.IMutateKeywordPlanCampaignKeywordResult|null);

                        /** MutateOperationResponse keyword_plan_result. */
                        public keyword_plan_result?: (google.ads.googleads.v8.services.IMutateKeywordPlansResult|null);

                        /** MutateOperationResponse label_result. */
                        public label_result?: (google.ads.googleads.v8.services.IMutateLabelResult|null);

                        /** MutateOperationResponse media_file_result. */
                        public media_file_result?: (google.ads.googleads.v8.services.IMutateMediaFileResult|null);

                        /** MutateOperationResponse remarketing_action_result. */
                        public remarketing_action_result?: (google.ads.googleads.v8.services.IMutateRemarketingActionResult|null);

                        /** MutateOperationResponse shared_criterion_result. */
                        public shared_criterion_result?: (google.ads.googleads.v8.services.IMutateSharedCriterionResult|null);

                        /** MutateOperationResponse shared_set_result. */
                        public shared_set_result?: (google.ads.googleads.v8.services.IMutateSharedSetResult|null);

                        /** MutateOperationResponse smart_campaign_setting_result. */
                        public smart_campaign_setting_result?: (google.ads.googleads.v8.services.IMutateSmartCampaignSettingResult|null);

                        /** MutateOperationResponse user_list_result. */
                        public user_list_result?: (google.ads.googleads.v8.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_label_result"|"ad_group_criterion_result"|"ad_group_extension_setting_result"|"ad_group_feed_result"|"ad_group_label_result"|"ad_group_result"|"ad_parameter_result"|"ad_result"|"asset_result"|"bidding_data_exclusion_result"|"bidding_seasonality_adjustment_result"|"bidding_strategy_result"|"campaign_asset_result"|"campaign_bid_modifier_result"|"campaign_budget_result"|"campaign_criterion_result"|"campaign_draft_result"|"campaign_experiment_result"|"campaign_extension_setting_result"|"campaign_feed_result"|"campaign_label_result"|"campaign_result"|"campaign_shared_set_result"|"conversion_action_result"|"conversion_custom_variable_result"|"conversion_value_rule_result"|"conversion_value_rule_set_result"|"customer_asset_result"|"customer_extension_setting_result"|"customer_feed_result"|"customer_label_result"|"customer_negative_criterion_result"|"customer_result"|"extension_feed_item_result"|"feed_item_result"|"feed_item_set_result"|"feed_item_set_link_result"|"feed_item_target_result"|"feed_mapping_result"|"feed_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"|"media_file_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.v8.services.IMutateOperationResponse): google.ads.googleads.v8.services.MutateOperationResponse;

                        /**
                         * Encodes the specified MutateOperationResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateOperationResponse.verify|verify} messages.
                         * @param m MutateOperationResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateOperationResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateOperationResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateOperationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateOperationResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateOperationResponse;

                        /**
                         * Verifies a MutateOperationResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateOperationResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateOperationResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateOperationResponse;

                        /**
                         * Creates a plain object from a MutateOperationResponse message. Also converts values to other types if specified.
                         * @param m MutateOperationResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateOperationResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateOperationResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetBiddingDataExclusion.
                         * @param request GetBiddingDataExclusionRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and BiddingDataExclusion
                         */
                        public getBiddingDataExclusion(request: google.ads.googleads.v8.services.IGetBiddingDataExclusionRequest, callback: google.ads.googleads.v8.services.BiddingDataExclusionService.GetBiddingDataExclusionCallback): void;

                        /**
                         * Calls GetBiddingDataExclusion.
                         * @param request GetBiddingDataExclusionRequest message or plain object
                         * @returns Promise
                         */
                        public getBiddingDataExclusion(request: google.ads.googleads.v8.services.IGetBiddingDataExclusionRequest): Promise<google.ads.googleads.v8.resources.BiddingDataExclusion>;

                        /**
                         * 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.v8.services.IMutateBiddingDataExclusionsRequest, callback: google.ads.googleads.v8.services.BiddingDataExclusionService.MutateBiddingDataExclusionsCallback): void;

                        /**
                         * Calls MutateBiddingDataExclusions.
                         * @param request MutateBiddingDataExclusionsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateBiddingDataExclusions(request: google.ads.googleads.v8.services.IMutateBiddingDataExclusionsRequest): Promise<google.ads.googleads.v8.services.MutateBiddingDataExclusionsResponse>;
                    }

                    namespace BiddingDataExclusionService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.BiddingDataExclusionService#getBiddingDataExclusion}.
                         * @param error Error, if any
                         * @param [response] BiddingDataExclusion
                         */
                        type GetBiddingDataExclusionCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.BiddingDataExclusion) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.BiddingDataExclusionService#mutateBiddingDataExclusions}.
                         * @param error Error, if any
                         * @param [response] MutateBiddingDataExclusionsResponse
                         */
                        type MutateBiddingDataExclusionsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateBiddingDataExclusionsResponse) => void;
                    }

                    /** Properties of a GetBiddingDataExclusionRequest. */
                    interface IGetBiddingDataExclusionRequest {

                        /** GetBiddingDataExclusionRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetBiddingDataExclusionRequest. */
                    class GetBiddingDataExclusionRequest implements IGetBiddingDataExclusionRequest {

                        /**
                         * Constructs a new GetBiddingDataExclusionRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetBiddingDataExclusionRequest);

                        /** GetBiddingDataExclusionRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetBiddingDataExclusionRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetBiddingDataExclusionRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetBiddingDataExclusionRequest): google.ads.googleads.v8.services.GetBiddingDataExclusionRequest;

                        /**
                         * Encodes the specified GetBiddingDataExclusionRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetBiddingDataExclusionRequest.verify|verify} messages.
                         * @param m GetBiddingDataExclusionRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetBiddingDataExclusionRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetBiddingDataExclusionRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetBiddingDataExclusionRequest.verify|verify} messages.
                         * @param message GetBiddingDataExclusionRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetBiddingDataExclusionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetBiddingDataExclusionRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetBiddingDataExclusionRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetBiddingDataExclusionRequest;

                        /**
                         * Decodes a GetBiddingDataExclusionRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetBiddingDataExclusionRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetBiddingDataExclusionRequest;

                        /**
                         * Verifies a GetBiddingDataExclusionRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetBiddingDataExclusionRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetBiddingDataExclusionRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetBiddingDataExclusionRequest;

                        /**
                         * Creates a plain object from a GetBiddingDataExclusionRequest message. Also converts values to other types if specified.
                         * @param m GetBiddingDataExclusionRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetBiddingDataExclusionRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetBiddingDataExclusionRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateBiddingDataExclusionsRequest. */
                    interface IMutateBiddingDataExclusionsRequest {

                        /** MutateBiddingDataExclusionsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateBiddingDataExclusionsRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateBiddingDataExclusionsRequest. */
                    class MutateBiddingDataExclusionsRequest implements IMutateBiddingDataExclusionsRequest {

                        /**
                         * Constructs a new MutateBiddingDataExclusionsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateBiddingDataExclusionsRequest);

                        /** MutateBiddingDataExclusionsRequest customer_id. */
                        public customer_id: string;

                        /** MutateBiddingDataExclusionsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateBiddingDataExclusionsRequest): google.ads.googleads.v8.services.MutateBiddingDataExclusionsRequest;

                        /**
                         * Encodes the specified MutateBiddingDataExclusionsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateBiddingDataExclusionsRequest.verify|verify} messages.
                         * @param m MutateBiddingDataExclusionsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateBiddingDataExclusionsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBiddingDataExclusionsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateBiddingDataExclusionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBiddingDataExclusionsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateBiddingDataExclusionsRequest;

                        /**
                         * Verifies a MutateBiddingDataExclusionsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBiddingDataExclusionsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateBiddingDataExclusionsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateBiddingDataExclusionsRequest;

                        /**
                         * Creates a plain object from a MutateBiddingDataExclusionsRequest message. Also converts values to other types if specified.
                         * @param m MutateBiddingDataExclusionsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateBiddingDataExclusionsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBiddingDataExclusionsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a BiddingDataExclusionOperation. */
                    interface IBiddingDataExclusionOperation {

                        /** BiddingDataExclusionOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** BiddingDataExclusionOperation create */
                        create?: (google.ads.googleads.v8.resources.IBiddingDataExclusion|null);

                        /** BiddingDataExclusionOperation update */
                        update?: (google.ads.googleads.v8.resources.IBiddingDataExclusion|null);

                        /** BiddingDataExclusionOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a BiddingDataExclusionOperation. */
                    class BiddingDataExclusionOperation implements IBiddingDataExclusionOperation {

                        /**
                         * Constructs a new BiddingDataExclusionOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IBiddingDataExclusionOperation);

                        /** BiddingDataExclusionOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** BiddingDataExclusionOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IBiddingDataExclusion|null);

                        /** BiddingDataExclusionOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.IBiddingDataExclusionOperation): google.ads.googleads.v8.services.BiddingDataExclusionOperation;

                        /**
                         * Encodes the specified BiddingDataExclusionOperation message. Does not implicitly {@link google.ads.googleads.v8.services.BiddingDataExclusionOperation.verify|verify} messages.
                         * @param m BiddingDataExclusionOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IBiddingDataExclusionOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddingDataExclusionOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IBiddingDataExclusionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddingDataExclusionOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.BiddingDataExclusionOperation;

                        /**
                         * Verifies a BiddingDataExclusionOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddingDataExclusionOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BiddingDataExclusionOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.BiddingDataExclusionOperation;

                        /**
                         * Creates a plain object from a BiddingDataExclusionOperation message. Also converts values to other types if specified.
                         * @param m BiddingDataExclusionOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.BiddingDataExclusionOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddingDataExclusionOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateBiddingDataExclusionsResponse. */
                    interface IMutateBiddingDataExclusionsResponse {

                        /** MutateBiddingDataExclusionsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateBiddingDataExclusionsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateBiddingDataExclusionsResult[]|null);
                    }

                    /** Represents a MutateBiddingDataExclusionsResponse. */
                    class MutateBiddingDataExclusionsResponse implements IMutateBiddingDataExclusionsResponse {

                        /**
                         * Constructs a new MutateBiddingDataExclusionsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateBiddingDataExclusionsResponse);

                        /** MutateBiddingDataExclusionsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateBiddingDataExclusionsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateBiddingDataExclusionsResponse): google.ads.googleads.v8.services.MutateBiddingDataExclusionsResponse;

                        /**
                         * Encodes the specified MutateBiddingDataExclusionsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateBiddingDataExclusionsResponse.verify|verify} messages.
                         * @param m MutateBiddingDataExclusionsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateBiddingDataExclusionsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBiddingDataExclusionsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateBiddingDataExclusionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBiddingDataExclusionsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateBiddingDataExclusionsResponse;

                        /**
                         * Verifies a MutateBiddingDataExclusionsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBiddingDataExclusionsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateBiddingDataExclusionsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateBiddingDataExclusionsResponse;

                        /**
                         * Creates a plain object from a MutateBiddingDataExclusionsResponse message. Also converts values to other types if specified.
                         * @param m MutateBiddingDataExclusionsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateBiddingDataExclusionsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBiddingDataExclusionsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateBiddingDataExclusionsResult. */
                    interface IMutateBiddingDataExclusionsResult {

                        /** MutateBiddingDataExclusionsResult resource_name */
                        resource_name?: (string|null);

                        /** MutateBiddingDataExclusionsResult bidding_data_exclusion */
                        bidding_data_exclusion?: (google.ads.googleads.v8.resources.IBiddingDataExclusion|null);
                    }

                    /** Represents a MutateBiddingDataExclusionsResult. */
                    class MutateBiddingDataExclusionsResult implements IMutateBiddingDataExclusionsResult {

                        /**
                         * Constructs a new MutateBiddingDataExclusionsResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateBiddingDataExclusionsResult);

                        /** MutateBiddingDataExclusionsResult resource_name. */
                        public resource_name: string;

                        /** MutateBiddingDataExclusionsResult bidding_data_exclusion. */
                        public bidding_data_exclusion?: (google.ads.googleads.v8.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.v8.services.IMutateBiddingDataExclusionsResult): google.ads.googleads.v8.services.MutateBiddingDataExclusionsResult;

                        /**
                         * Encodes the specified MutateBiddingDataExclusionsResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateBiddingDataExclusionsResult.verify|verify} messages.
                         * @param m MutateBiddingDataExclusionsResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateBiddingDataExclusionsResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBiddingDataExclusionsResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateBiddingDataExclusionsResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBiddingDataExclusionsResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateBiddingDataExclusionsResult;

                        /**
                         * Verifies a MutateBiddingDataExclusionsResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBiddingDataExclusionsResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateBiddingDataExclusionsResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateBiddingDataExclusionsResult;

                        /**
                         * Creates a plain object from a MutateBiddingDataExclusionsResult message. Also converts values to other types if specified.
                         * @param m MutateBiddingDataExclusionsResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateBiddingDataExclusionsResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBiddingDataExclusionsResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetBiddingSeasonalityAdjustment.
                         * @param request GetBiddingSeasonalityAdjustmentRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and BiddingSeasonalityAdjustment
                         */
                        public getBiddingSeasonalityAdjustment(request: google.ads.googleads.v8.services.IGetBiddingSeasonalityAdjustmentRequest, callback: google.ads.googleads.v8.services.BiddingSeasonalityAdjustmentService.GetBiddingSeasonalityAdjustmentCallback): void;

                        /**
                         * Calls GetBiddingSeasonalityAdjustment.
                         * @param request GetBiddingSeasonalityAdjustmentRequest message or plain object
                         * @returns Promise
                         */
                        public getBiddingSeasonalityAdjustment(request: google.ads.googleads.v8.services.IGetBiddingSeasonalityAdjustmentRequest): Promise<google.ads.googleads.v8.resources.BiddingSeasonalityAdjustment>;

                        /**
                         * 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.v8.services.IMutateBiddingSeasonalityAdjustmentsRequest, callback: google.ads.googleads.v8.services.BiddingSeasonalityAdjustmentService.MutateBiddingSeasonalityAdjustmentsCallback): void;

                        /**
                         * Calls MutateBiddingSeasonalityAdjustments.
                         * @param request MutateBiddingSeasonalityAdjustmentsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateBiddingSeasonalityAdjustments(request: google.ads.googleads.v8.services.IMutateBiddingSeasonalityAdjustmentsRequest): Promise<google.ads.googleads.v8.services.MutateBiddingSeasonalityAdjustmentsResponse>;
                    }

                    namespace BiddingSeasonalityAdjustmentService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.BiddingSeasonalityAdjustmentService#getBiddingSeasonalityAdjustment}.
                         * @param error Error, if any
                         * @param [response] BiddingSeasonalityAdjustment
                         */
                        type GetBiddingSeasonalityAdjustmentCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.BiddingSeasonalityAdjustment) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.BiddingSeasonalityAdjustmentService#mutateBiddingSeasonalityAdjustments}.
                         * @param error Error, if any
                         * @param [response] MutateBiddingSeasonalityAdjustmentsResponse
                         */
                        type MutateBiddingSeasonalityAdjustmentsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateBiddingSeasonalityAdjustmentsResponse) => void;
                    }

                    /** Properties of a GetBiddingSeasonalityAdjustmentRequest. */
                    interface IGetBiddingSeasonalityAdjustmentRequest {

                        /** GetBiddingSeasonalityAdjustmentRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetBiddingSeasonalityAdjustmentRequest. */
                    class GetBiddingSeasonalityAdjustmentRequest implements IGetBiddingSeasonalityAdjustmentRequest {

                        /**
                         * Constructs a new GetBiddingSeasonalityAdjustmentRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetBiddingSeasonalityAdjustmentRequest);

                        /** GetBiddingSeasonalityAdjustmentRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetBiddingSeasonalityAdjustmentRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetBiddingSeasonalityAdjustmentRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetBiddingSeasonalityAdjustmentRequest): google.ads.googleads.v8.services.GetBiddingSeasonalityAdjustmentRequest;

                        /**
                         * Encodes the specified GetBiddingSeasonalityAdjustmentRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetBiddingSeasonalityAdjustmentRequest.verify|verify} messages.
                         * @param m GetBiddingSeasonalityAdjustmentRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetBiddingSeasonalityAdjustmentRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetBiddingSeasonalityAdjustmentRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetBiddingSeasonalityAdjustmentRequest.verify|verify} messages.
                         * @param message GetBiddingSeasonalityAdjustmentRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetBiddingSeasonalityAdjustmentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetBiddingSeasonalityAdjustmentRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetBiddingSeasonalityAdjustmentRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetBiddingSeasonalityAdjustmentRequest;

                        /**
                         * Decodes a GetBiddingSeasonalityAdjustmentRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetBiddingSeasonalityAdjustmentRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetBiddingSeasonalityAdjustmentRequest;

                        /**
                         * Verifies a GetBiddingSeasonalityAdjustmentRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetBiddingSeasonalityAdjustmentRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetBiddingSeasonalityAdjustmentRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetBiddingSeasonalityAdjustmentRequest;

                        /**
                         * Creates a plain object from a GetBiddingSeasonalityAdjustmentRequest message. Also converts values to other types if specified.
                         * @param m GetBiddingSeasonalityAdjustmentRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetBiddingSeasonalityAdjustmentRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetBiddingSeasonalityAdjustmentRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateBiddingSeasonalityAdjustmentsRequest. */
                    interface IMutateBiddingSeasonalityAdjustmentsRequest {

                        /** MutateBiddingSeasonalityAdjustmentsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateBiddingSeasonalityAdjustmentsRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateBiddingSeasonalityAdjustmentsRequest. */
                    class MutateBiddingSeasonalityAdjustmentsRequest implements IMutateBiddingSeasonalityAdjustmentsRequest {

                        /**
                         * Constructs a new MutateBiddingSeasonalityAdjustmentsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateBiddingSeasonalityAdjustmentsRequest);

                        /** MutateBiddingSeasonalityAdjustmentsRequest customer_id. */
                        public customer_id: string;

                        /** MutateBiddingSeasonalityAdjustmentsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateBiddingSeasonalityAdjustmentsRequest): google.ads.googleads.v8.services.MutateBiddingSeasonalityAdjustmentsRequest;

                        /**
                         * Encodes the specified MutateBiddingSeasonalityAdjustmentsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateBiddingSeasonalityAdjustmentsRequest.verify|verify} messages.
                         * @param m MutateBiddingSeasonalityAdjustmentsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateBiddingSeasonalityAdjustmentsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBiddingSeasonalityAdjustmentsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateBiddingSeasonalityAdjustmentsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBiddingSeasonalityAdjustmentsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateBiddingSeasonalityAdjustmentsRequest;

                        /**
                         * Verifies a MutateBiddingSeasonalityAdjustmentsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBiddingSeasonalityAdjustmentsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateBiddingSeasonalityAdjustmentsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateBiddingSeasonalityAdjustmentsRequest;

                        /**
                         * Creates a plain object from a MutateBiddingSeasonalityAdjustmentsRequest message. Also converts values to other types if specified.
                         * @param m MutateBiddingSeasonalityAdjustmentsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateBiddingSeasonalityAdjustmentsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBiddingSeasonalityAdjustmentsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a BiddingSeasonalityAdjustmentOperation. */
                    interface IBiddingSeasonalityAdjustmentOperation {

                        /** BiddingSeasonalityAdjustmentOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** BiddingSeasonalityAdjustmentOperation create */
                        create?: (google.ads.googleads.v8.resources.IBiddingSeasonalityAdjustment|null);

                        /** BiddingSeasonalityAdjustmentOperation update */
                        update?: (google.ads.googleads.v8.resources.IBiddingSeasonalityAdjustment|null);

                        /** BiddingSeasonalityAdjustmentOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a BiddingSeasonalityAdjustmentOperation. */
                    class BiddingSeasonalityAdjustmentOperation implements IBiddingSeasonalityAdjustmentOperation {

                        /**
                         * Constructs a new BiddingSeasonalityAdjustmentOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IBiddingSeasonalityAdjustmentOperation);

                        /** BiddingSeasonalityAdjustmentOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** BiddingSeasonalityAdjustmentOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IBiddingSeasonalityAdjustment|null);

                        /** BiddingSeasonalityAdjustmentOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.IBiddingSeasonalityAdjustmentOperation): google.ads.googleads.v8.services.BiddingSeasonalityAdjustmentOperation;

                        /**
                         * Encodes the specified BiddingSeasonalityAdjustmentOperation message. Does not implicitly {@link google.ads.googleads.v8.services.BiddingSeasonalityAdjustmentOperation.verify|verify} messages.
                         * @param m BiddingSeasonalityAdjustmentOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IBiddingSeasonalityAdjustmentOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddingSeasonalityAdjustmentOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IBiddingSeasonalityAdjustmentOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddingSeasonalityAdjustmentOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.BiddingSeasonalityAdjustmentOperation;

                        /**
                         * Verifies a BiddingSeasonalityAdjustmentOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddingSeasonalityAdjustmentOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BiddingSeasonalityAdjustmentOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.BiddingSeasonalityAdjustmentOperation;

                        /**
                         * Creates a plain object from a BiddingSeasonalityAdjustmentOperation message. Also converts values to other types if specified.
                         * @param m BiddingSeasonalityAdjustmentOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.BiddingSeasonalityAdjustmentOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddingSeasonalityAdjustmentOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateBiddingSeasonalityAdjustmentsResponse. */
                    interface IMutateBiddingSeasonalityAdjustmentsResponse {

                        /** MutateBiddingSeasonalityAdjustmentsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateBiddingSeasonalityAdjustmentsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateBiddingSeasonalityAdjustmentsResult[]|null);
                    }

                    /** Represents a MutateBiddingSeasonalityAdjustmentsResponse. */
                    class MutateBiddingSeasonalityAdjustmentsResponse implements IMutateBiddingSeasonalityAdjustmentsResponse {

                        /**
                         * Constructs a new MutateBiddingSeasonalityAdjustmentsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateBiddingSeasonalityAdjustmentsResponse);

                        /** MutateBiddingSeasonalityAdjustmentsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateBiddingSeasonalityAdjustmentsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateBiddingSeasonalityAdjustmentsResponse): google.ads.googleads.v8.services.MutateBiddingSeasonalityAdjustmentsResponse;

                        /**
                         * Encodes the specified MutateBiddingSeasonalityAdjustmentsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateBiddingSeasonalityAdjustmentsResponse.verify|verify} messages.
                         * @param m MutateBiddingSeasonalityAdjustmentsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateBiddingSeasonalityAdjustmentsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBiddingSeasonalityAdjustmentsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateBiddingSeasonalityAdjustmentsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBiddingSeasonalityAdjustmentsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateBiddingSeasonalityAdjustmentsResponse;

                        /**
                         * Verifies a MutateBiddingSeasonalityAdjustmentsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBiddingSeasonalityAdjustmentsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateBiddingSeasonalityAdjustmentsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateBiddingSeasonalityAdjustmentsResponse;

                        /**
                         * Creates a plain object from a MutateBiddingSeasonalityAdjustmentsResponse message. Also converts values to other types if specified.
                         * @param m MutateBiddingSeasonalityAdjustmentsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateBiddingSeasonalityAdjustmentsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBiddingSeasonalityAdjustmentsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateBiddingSeasonalityAdjustmentsResult. */
                    interface IMutateBiddingSeasonalityAdjustmentsResult {

                        /** MutateBiddingSeasonalityAdjustmentsResult resource_name */
                        resource_name?: (string|null);

                        /** MutateBiddingSeasonalityAdjustmentsResult bidding_seasonality_adjustment */
                        bidding_seasonality_adjustment?: (google.ads.googleads.v8.resources.IBiddingSeasonalityAdjustment|null);
                    }

                    /** Represents a MutateBiddingSeasonalityAdjustmentsResult. */
                    class MutateBiddingSeasonalityAdjustmentsResult implements IMutateBiddingSeasonalityAdjustmentsResult {

                        /**
                         * Constructs a new MutateBiddingSeasonalityAdjustmentsResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateBiddingSeasonalityAdjustmentsResult);

                        /** MutateBiddingSeasonalityAdjustmentsResult resource_name. */
                        public resource_name: string;

                        /** MutateBiddingSeasonalityAdjustmentsResult bidding_seasonality_adjustment. */
                        public bidding_seasonality_adjustment?: (google.ads.googleads.v8.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.v8.services.IMutateBiddingSeasonalityAdjustmentsResult): google.ads.googleads.v8.services.MutateBiddingSeasonalityAdjustmentsResult;

                        /**
                         * Encodes the specified MutateBiddingSeasonalityAdjustmentsResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateBiddingSeasonalityAdjustmentsResult.verify|verify} messages.
                         * @param m MutateBiddingSeasonalityAdjustmentsResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateBiddingSeasonalityAdjustmentsResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBiddingSeasonalityAdjustmentsResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateBiddingSeasonalityAdjustmentsResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBiddingSeasonalityAdjustmentsResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateBiddingSeasonalityAdjustmentsResult;

                        /**
                         * Verifies a MutateBiddingSeasonalityAdjustmentsResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBiddingSeasonalityAdjustmentsResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateBiddingSeasonalityAdjustmentsResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateBiddingSeasonalityAdjustmentsResult;

                        /**
                         * Creates a plain object from a MutateBiddingSeasonalityAdjustmentsResult message. Also converts values to other types if specified.
                         * @param m MutateBiddingSeasonalityAdjustmentsResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateBiddingSeasonalityAdjustmentsResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBiddingSeasonalityAdjustmentsResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetBiddingStrategy.
                         * @param request GetBiddingStrategyRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and BiddingStrategy
                         */
                        public getBiddingStrategy(request: google.ads.googleads.v8.services.IGetBiddingStrategyRequest, callback: google.ads.googleads.v8.services.BiddingStrategyService.GetBiddingStrategyCallback): void;

                        /**
                         * Calls GetBiddingStrategy.
                         * @param request GetBiddingStrategyRequest message or plain object
                         * @returns Promise
                         */
                        public getBiddingStrategy(request: google.ads.googleads.v8.services.IGetBiddingStrategyRequest): Promise<google.ads.googleads.v8.resources.BiddingStrategy>;

                        /**
                         * 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.v8.services.IMutateBiddingStrategiesRequest, callback: google.ads.googleads.v8.services.BiddingStrategyService.MutateBiddingStrategiesCallback): void;

                        /**
                         * Calls MutateBiddingStrategies.
                         * @param request MutateBiddingStrategiesRequest message or plain object
                         * @returns Promise
                         */
                        public mutateBiddingStrategies(request: google.ads.googleads.v8.services.IMutateBiddingStrategiesRequest): Promise<google.ads.googleads.v8.services.MutateBiddingStrategiesResponse>;
                    }

                    namespace BiddingStrategyService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.BiddingStrategyService#getBiddingStrategy}.
                         * @param error Error, if any
                         * @param [response] BiddingStrategy
                         */
                        type GetBiddingStrategyCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.BiddingStrategy) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.BiddingStrategyService#mutateBiddingStrategies}.
                         * @param error Error, if any
                         * @param [response] MutateBiddingStrategiesResponse
                         */
                        type MutateBiddingStrategiesCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateBiddingStrategiesResponse) => void;
                    }

                    /** Properties of a GetBiddingStrategyRequest. */
                    interface IGetBiddingStrategyRequest {

                        /** GetBiddingStrategyRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetBiddingStrategyRequest. */
                    class GetBiddingStrategyRequest implements IGetBiddingStrategyRequest {

                        /**
                         * Constructs a new GetBiddingStrategyRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetBiddingStrategyRequest);

                        /** GetBiddingStrategyRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetBiddingStrategyRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetBiddingStrategyRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetBiddingStrategyRequest): google.ads.googleads.v8.services.GetBiddingStrategyRequest;

                        /**
                         * Encodes the specified GetBiddingStrategyRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetBiddingStrategyRequest.verify|verify} messages.
                         * @param m GetBiddingStrategyRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetBiddingStrategyRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetBiddingStrategyRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetBiddingStrategyRequest.verify|verify} messages.
                         * @param message GetBiddingStrategyRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetBiddingStrategyRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetBiddingStrategyRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetBiddingStrategyRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetBiddingStrategyRequest;

                        /**
                         * Decodes a GetBiddingStrategyRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetBiddingStrategyRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetBiddingStrategyRequest;

                        /**
                         * Verifies a GetBiddingStrategyRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetBiddingStrategyRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetBiddingStrategyRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetBiddingStrategyRequest;

                        /**
                         * Creates a plain object from a GetBiddingStrategyRequest message. Also converts values to other types if specified.
                         * @param m GetBiddingStrategyRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetBiddingStrategyRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetBiddingStrategyRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateBiddingStrategiesRequest. */
                    interface IMutateBiddingStrategiesRequest {

                        /** MutateBiddingStrategiesRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateBiddingStrategiesRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateBiddingStrategiesRequest. */
                    class MutateBiddingStrategiesRequest implements IMutateBiddingStrategiesRequest {

                        /**
                         * Constructs a new MutateBiddingStrategiesRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateBiddingStrategiesRequest);

                        /** MutateBiddingStrategiesRequest customer_id. */
                        public customer_id: string;

                        /** MutateBiddingStrategiesRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateBiddingStrategiesRequest): google.ads.googleads.v8.services.MutateBiddingStrategiesRequest;

                        /**
                         * Encodes the specified MutateBiddingStrategiesRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateBiddingStrategiesRequest.verify|verify} messages.
                         * @param m MutateBiddingStrategiesRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateBiddingStrategiesRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBiddingStrategiesRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateBiddingStrategiesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBiddingStrategiesRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateBiddingStrategiesRequest;

                        /**
                         * Verifies a MutateBiddingStrategiesRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBiddingStrategiesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateBiddingStrategiesRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateBiddingStrategiesRequest;

                        /**
                         * Creates a plain object from a MutateBiddingStrategiesRequest message. Also converts values to other types if specified.
                         * @param m MutateBiddingStrategiesRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateBiddingStrategiesRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBiddingStrategiesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a BiddingStrategyOperation. */
                    interface IBiddingStrategyOperation {

                        /** BiddingStrategyOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** BiddingStrategyOperation create */
                        create?: (google.ads.googleads.v8.resources.IBiddingStrategy|null);

                        /** BiddingStrategyOperation update */
                        update?: (google.ads.googleads.v8.resources.IBiddingStrategy|null);

                        /** BiddingStrategyOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a BiddingStrategyOperation. */
                    class BiddingStrategyOperation implements IBiddingStrategyOperation {

                        /**
                         * Constructs a new BiddingStrategyOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IBiddingStrategyOperation);

                        /** BiddingStrategyOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** BiddingStrategyOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IBiddingStrategy|null);

                        /** BiddingStrategyOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.IBiddingStrategyOperation): google.ads.googleads.v8.services.BiddingStrategyOperation;

                        /**
                         * Encodes the specified BiddingStrategyOperation message. Does not implicitly {@link google.ads.googleads.v8.services.BiddingStrategyOperation.verify|verify} messages.
                         * @param m BiddingStrategyOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IBiddingStrategyOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BiddingStrategyOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IBiddingStrategyOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BiddingStrategyOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.BiddingStrategyOperation;

                        /**
                         * Verifies a BiddingStrategyOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BiddingStrategyOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BiddingStrategyOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.BiddingStrategyOperation;

                        /**
                         * Creates a plain object from a BiddingStrategyOperation message. Also converts values to other types if specified.
                         * @param m BiddingStrategyOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.BiddingStrategyOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BiddingStrategyOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateBiddingStrategiesResponse. */
                    interface IMutateBiddingStrategiesResponse {

                        /** MutateBiddingStrategiesResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateBiddingStrategiesResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateBiddingStrategyResult[]|null);
                    }

                    /** Represents a MutateBiddingStrategiesResponse. */
                    class MutateBiddingStrategiesResponse implements IMutateBiddingStrategiesResponse {

                        /**
                         * Constructs a new MutateBiddingStrategiesResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateBiddingStrategiesResponse);

                        /** MutateBiddingStrategiesResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateBiddingStrategiesResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateBiddingStrategiesResponse): google.ads.googleads.v8.services.MutateBiddingStrategiesResponse;

                        /**
                         * Encodes the specified MutateBiddingStrategiesResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateBiddingStrategiesResponse.verify|verify} messages.
                         * @param m MutateBiddingStrategiesResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateBiddingStrategiesResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBiddingStrategiesResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateBiddingStrategiesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBiddingStrategiesResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateBiddingStrategiesResponse;

                        /**
                         * Verifies a MutateBiddingStrategiesResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBiddingStrategiesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateBiddingStrategiesResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateBiddingStrategiesResponse;

                        /**
                         * Creates a plain object from a MutateBiddingStrategiesResponse message. Also converts values to other types if specified.
                         * @param m MutateBiddingStrategiesResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateBiddingStrategiesResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBiddingStrategiesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateBiddingStrategyResult. */
                    interface IMutateBiddingStrategyResult {

                        /** MutateBiddingStrategyResult resource_name */
                        resource_name?: (string|null);

                        /** MutateBiddingStrategyResult bidding_strategy */
                        bidding_strategy?: (google.ads.googleads.v8.resources.IBiddingStrategy|null);
                    }

                    /** Represents a MutateBiddingStrategyResult. */
                    class MutateBiddingStrategyResult implements IMutateBiddingStrategyResult {

                        /**
                         * Constructs a new MutateBiddingStrategyResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateBiddingStrategyResult);

                        /** MutateBiddingStrategyResult resource_name. */
                        public resource_name: string;

                        /** MutateBiddingStrategyResult bidding_strategy. */
                        public bidding_strategy?: (google.ads.googleads.v8.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.v8.services.IMutateBiddingStrategyResult): google.ads.googleads.v8.services.MutateBiddingStrategyResult;

                        /**
                         * Encodes the specified MutateBiddingStrategyResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateBiddingStrategyResult.verify|verify} messages.
                         * @param m MutateBiddingStrategyResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateBiddingStrategyResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBiddingStrategyResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateBiddingStrategyResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBiddingStrategyResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateBiddingStrategyResult;

                        /**
                         * Verifies a MutateBiddingStrategyResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBiddingStrategyResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateBiddingStrategyResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateBiddingStrategyResult;

                        /**
                         * Creates a plain object from a MutateBiddingStrategyResult message. Also converts values to other types if specified.
                         * @param m MutateBiddingStrategyResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateBiddingStrategyResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBiddingStrategyResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetCampaignAsset.
                         * @param request GetCampaignAssetRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CampaignAsset
                         */
                        public getCampaignAsset(request: google.ads.googleads.v8.services.IGetCampaignAssetRequest, callback: google.ads.googleads.v8.services.CampaignAssetService.GetCampaignAssetCallback): void;

                        /**
                         * Calls GetCampaignAsset.
                         * @param request GetCampaignAssetRequest message or plain object
                         * @returns Promise
                         */
                        public getCampaignAsset(request: google.ads.googleads.v8.services.IGetCampaignAssetRequest): Promise<google.ads.googleads.v8.resources.CampaignAsset>;

                        /**
                         * 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.v8.services.IMutateCampaignAssetsRequest, callback: google.ads.googleads.v8.services.CampaignAssetService.MutateCampaignAssetsCallback): void;

                        /**
                         * Calls MutateCampaignAssets.
                         * @param request MutateCampaignAssetsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCampaignAssets(request: google.ads.googleads.v8.services.IMutateCampaignAssetsRequest): Promise<google.ads.googleads.v8.services.MutateCampaignAssetsResponse>;
                    }

                    namespace CampaignAssetService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignAssetService#getCampaignAsset}.
                         * @param error Error, if any
                         * @param [response] CampaignAsset
                         */
                        type GetCampaignAssetCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CampaignAsset) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignAssetService#mutateCampaignAssets}.
                         * @param error Error, if any
                         * @param [response] MutateCampaignAssetsResponse
                         */
                        type MutateCampaignAssetsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateCampaignAssetsResponse) => void;
                    }

                    /** Properties of a GetCampaignAssetRequest. */
                    interface IGetCampaignAssetRequest {

                        /** GetCampaignAssetRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCampaignAssetRequest. */
                    class GetCampaignAssetRequest implements IGetCampaignAssetRequest {

                        /**
                         * Constructs a new GetCampaignAssetRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCampaignAssetRequest);

                        /** GetCampaignAssetRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCampaignAssetRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCampaignAssetRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCampaignAssetRequest): google.ads.googleads.v8.services.GetCampaignAssetRequest;

                        /**
                         * Encodes the specified GetCampaignAssetRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignAssetRequest.verify|verify} messages.
                         * @param m GetCampaignAssetRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCampaignAssetRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCampaignAssetRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignAssetRequest.verify|verify} messages.
                         * @param message GetCampaignAssetRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCampaignAssetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCampaignAssetRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCampaignAssetRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCampaignAssetRequest;

                        /**
                         * Decodes a GetCampaignAssetRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCampaignAssetRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCampaignAssetRequest;

                        /**
                         * Verifies a GetCampaignAssetRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCampaignAssetRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCampaignAssetRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCampaignAssetRequest;

                        /**
                         * Creates a plain object from a GetCampaignAssetRequest message. Also converts values to other types if specified.
                         * @param m GetCampaignAssetRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCampaignAssetRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCampaignAssetRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignAssetsRequest. */
                    interface IMutateCampaignAssetsRequest {

                        /** MutateCampaignAssetsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCampaignAssetsRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCampaignAssetsRequest. */
                    class MutateCampaignAssetsRequest implements IMutateCampaignAssetsRequest {

                        /**
                         * Constructs a new MutateCampaignAssetsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignAssetsRequest);

                        /** MutateCampaignAssetsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCampaignAssetsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateCampaignAssetsRequest): google.ads.googleads.v8.services.MutateCampaignAssetsRequest;

                        /**
                         * Encodes the specified MutateCampaignAssetsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignAssetsRequest.verify|verify} messages.
                         * @param m MutateCampaignAssetsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignAssetsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignAssetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCampaignAssetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignAssetsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCampaignAssetsRequest;

                        /**
                         * Verifies a MutateCampaignAssetsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignAssetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignAssetsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignAssetsRequest;

                        /**
                         * Creates a plain object from a MutateCampaignAssetsRequest message. Also converts values to other types if specified.
                         * @param m MutateCampaignAssetsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignAssetsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignAssetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CampaignAssetOperation. */
                    interface ICampaignAssetOperation {

                        /** CampaignAssetOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignAssetOperation create */
                        create?: (google.ads.googleads.v8.resources.ICampaignAsset|null);

                        /** CampaignAssetOperation update */
                        update?: (google.ads.googleads.v8.resources.ICampaignAsset|null);

                        /** CampaignAssetOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CampaignAssetOperation. */
                    class CampaignAssetOperation implements ICampaignAssetOperation {

                        /**
                         * Constructs a new CampaignAssetOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICampaignAssetOperation);

                        /** CampaignAssetOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignAssetOperation create. */
                        public create?: (google.ads.googleads.v8.resources.ICampaignAsset|null);

                        /** CampaignAssetOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.ICampaignAssetOperation): google.ads.googleads.v8.services.CampaignAssetOperation;

                        /**
                         * Encodes the specified CampaignAssetOperation message. Does not implicitly {@link google.ads.googleads.v8.services.CampaignAssetOperation.verify|verify} messages.
                         * @param m CampaignAssetOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICampaignAssetOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignAssetOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICampaignAssetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignAssetOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CampaignAssetOperation;

                        /**
                         * Verifies a CampaignAssetOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignAssetOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignAssetOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CampaignAssetOperation;

                        /**
                         * Creates a plain object from a CampaignAssetOperation message. Also converts values to other types if specified.
                         * @param m CampaignAssetOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CampaignAssetOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignAssetOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignAssetsResponse. */
                    interface IMutateCampaignAssetsResponse {

                        /** MutateCampaignAssetsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignAssetsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateCampaignAssetResult[]|null);
                    }

                    /** Represents a MutateCampaignAssetsResponse. */
                    class MutateCampaignAssetsResponse implements IMutateCampaignAssetsResponse {

                        /**
                         * Constructs a new MutateCampaignAssetsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignAssetsResponse);

                        /** MutateCampaignAssetsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignAssetsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateCampaignAssetsResponse): google.ads.googleads.v8.services.MutateCampaignAssetsResponse;

                        /**
                         * Encodes the specified MutateCampaignAssetsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignAssetsResponse.verify|verify} messages.
                         * @param m MutateCampaignAssetsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignAssetsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignAssetsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCampaignAssetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignAssetsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCampaignAssetsResponse;

                        /**
                         * Verifies a MutateCampaignAssetsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignAssetsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignAssetsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignAssetsResponse;

                        /**
                         * Creates a plain object from a MutateCampaignAssetsResponse message. Also converts values to other types if specified.
                         * @param m MutateCampaignAssetsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignAssetsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignAssetsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignAssetResult. */
                    interface IMutateCampaignAssetResult {

                        /** MutateCampaignAssetResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCampaignAssetResult campaign_asset */
                        campaign_asset?: (google.ads.googleads.v8.resources.ICampaignAsset|null);
                    }

                    /** Represents a MutateCampaignAssetResult. */
                    class MutateCampaignAssetResult implements IMutateCampaignAssetResult {

                        /**
                         * Constructs a new MutateCampaignAssetResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignAssetResult);

                        /** MutateCampaignAssetResult resource_name. */
                        public resource_name: string;

                        /** MutateCampaignAssetResult campaign_asset. */
                        public campaign_asset?: (google.ads.googleads.v8.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.v8.services.IMutateCampaignAssetResult): google.ads.googleads.v8.services.MutateCampaignAssetResult;

                        /**
                         * Encodes the specified MutateCampaignAssetResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignAssetResult.verify|verify} messages.
                         * @param m MutateCampaignAssetResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignAssetResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignAssetResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCampaignAssetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignAssetResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCampaignAssetResult;

                        /**
                         * Verifies a MutateCampaignAssetResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignAssetResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignAssetResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignAssetResult;

                        /**
                         * Creates a plain object from a MutateCampaignAssetResult message. Also converts values to other types if specified.
                         * @param m MutateCampaignAssetResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignAssetResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignAssetResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetCampaignBidModifier.
                         * @param request GetCampaignBidModifierRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CampaignBidModifier
                         */
                        public getCampaignBidModifier(request: google.ads.googleads.v8.services.IGetCampaignBidModifierRequest, callback: google.ads.googleads.v8.services.CampaignBidModifierService.GetCampaignBidModifierCallback): void;

                        /**
                         * Calls GetCampaignBidModifier.
                         * @param request GetCampaignBidModifierRequest message or plain object
                         * @returns Promise
                         */
                        public getCampaignBidModifier(request: google.ads.googleads.v8.services.IGetCampaignBidModifierRequest): Promise<google.ads.googleads.v8.resources.CampaignBidModifier>;

                        /**
                         * 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.v8.services.IMutateCampaignBidModifiersRequest, callback: google.ads.googleads.v8.services.CampaignBidModifierService.MutateCampaignBidModifiersCallback): void;

                        /**
                         * Calls MutateCampaignBidModifiers.
                         * @param request MutateCampaignBidModifiersRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCampaignBidModifiers(request: google.ads.googleads.v8.services.IMutateCampaignBidModifiersRequest): Promise<google.ads.googleads.v8.services.MutateCampaignBidModifiersResponse>;
                    }

                    namespace CampaignBidModifierService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignBidModifierService#getCampaignBidModifier}.
                         * @param error Error, if any
                         * @param [response] CampaignBidModifier
                         */
                        type GetCampaignBidModifierCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CampaignBidModifier) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignBidModifierService#mutateCampaignBidModifiers}.
                         * @param error Error, if any
                         * @param [response] MutateCampaignBidModifiersResponse
                         */
                        type MutateCampaignBidModifiersCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateCampaignBidModifiersResponse) => void;
                    }

                    /** Properties of a GetCampaignBidModifierRequest. */
                    interface IGetCampaignBidModifierRequest {

                        /** GetCampaignBidModifierRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCampaignBidModifierRequest. */
                    class GetCampaignBidModifierRequest implements IGetCampaignBidModifierRequest {

                        /**
                         * Constructs a new GetCampaignBidModifierRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCampaignBidModifierRequest);

                        /** GetCampaignBidModifierRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCampaignBidModifierRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCampaignBidModifierRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCampaignBidModifierRequest): google.ads.googleads.v8.services.GetCampaignBidModifierRequest;

                        /**
                         * Encodes the specified GetCampaignBidModifierRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignBidModifierRequest.verify|verify} messages.
                         * @param m GetCampaignBidModifierRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCampaignBidModifierRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCampaignBidModifierRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignBidModifierRequest.verify|verify} messages.
                         * @param message GetCampaignBidModifierRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCampaignBidModifierRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCampaignBidModifierRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCampaignBidModifierRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCampaignBidModifierRequest;

                        /**
                         * Decodes a GetCampaignBidModifierRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCampaignBidModifierRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCampaignBidModifierRequest;

                        /**
                         * Verifies a GetCampaignBidModifierRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCampaignBidModifierRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCampaignBidModifierRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCampaignBidModifierRequest;

                        /**
                         * Creates a plain object from a GetCampaignBidModifierRequest message. Also converts values to other types if specified.
                         * @param m GetCampaignBidModifierRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCampaignBidModifierRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCampaignBidModifierRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignBidModifiersRequest. */
                    interface IMutateCampaignBidModifiersRequest {

                        /** MutateCampaignBidModifiersRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCampaignBidModifiersRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCampaignBidModifiersRequest. */
                    class MutateCampaignBidModifiersRequest implements IMutateCampaignBidModifiersRequest {

                        /**
                         * Constructs a new MutateCampaignBidModifiersRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignBidModifiersRequest);

                        /** MutateCampaignBidModifiersRequest customer_id. */
                        public customer_id: string;

                        /** MutateCampaignBidModifiersRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateCampaignBidModifiersRequest): google.ads.googleads.v8.services.MutateCampaignBidModifiersRequest;

                        /**
                         * Encodes the specified MutateCampaignBidModifiersRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignBidModifiersRequest.verify|verify} messages.
                         * @param m MutateCampaignBidModifiersRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignBidModifiersRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignBidModifiersRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCampaignBidModifiersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignBidModifiersRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCampaignBidModifiersRequest;

                        /**
                         * Verifies a MutateCampaignBidModifiersRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignBidModifiersRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignBidModifiersRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignBidModifiersRequest;

                        /**
                         * Creates a plain object from a MutateCampaignBidModifiersRequest message. Also converts values to other types if specified.
                         * @param m MutateCampaignBidModifiersRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignBidModifiersRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignBidModifiersRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CampaignBidModifierOperation. */
                    interface ICampaignBidModifierOperation {

                        /** CampaignBidModifierOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignBidModifierOperation create */
                        create?: (google.ads.googleads.v8.resources.ICampaignBidModifier|null);

                        /** CampaignBidModifierOperation update */
                        update?: (google.ads.googleads.v8.resources.ICampaignBidModifier|null);

                        /** CampaignBidModifierOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CampaignBidModifierOperation. */
                    class CampaignBidModifierOperation implements ICampaignBidModifierOperation {

                        /**
                         * Constructs a new CampaignBidModifierOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICampaignBidModifierOperation);

                        /** CampaignBidModifierOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignBidModifierOperation create. */
                        public create?: (google.ads.googleads.v8.resources.ICampaignBidModifier|null);

                        /** CampaignBidModifierOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.ICampaignBidModifierOperation): google.ads.googleads.v8.services.CampaignBidModifierOperation;

                        /**
                         * Encodes the specified CampaignBidModifierOperation message. Does not implicitly {@link google.ads.googleads.v8.services.CampaignBidModifierOperation.verify|verify} messages.
                         * @param m CampaignBidModifierOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICampaignBidModifierOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignBidModifierOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICampaignBidModifierOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignBidModifierOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CampaignBidModifierOperation;

                        /**
                         * Verifies a CampaignBidModifierOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignBidModifierOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignBidModifierOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CampaignBidModifierOperation;

                        /**
                         * Creates a plain object from a CampaignBidModifierOperation message. Also converts values to other types if specified.
                         * @param m CampaignBidModifierOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CampaignBidModifierOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignBidModifierOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignBidModifiersResponse. */
                    interface IMutateCampaignBidModifiersResponse {

                        /** MutateCampaignBidModifiersResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignBidModifiersResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateCampaignBidModifierResult[]|null);
                    }

                    /** Represents a MutateCampaignBidModifiersResponse. */
                    class MutateCampaignBidModifiersResponse implements IMutateCampaignBidModifiersResponse {

                        /**
                         * Constructs a new MutateCampaignBidModifiersResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignBidModifiersResponse);

                        /** MutateCampaignBidModifiersResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignBidModifiersResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateCampaignBidModifiersResponse): google.ads.googleads.v8.services.MutateCampaignBidModifiersResponse;

                        /**
                         * Encodes the specified MutateCampaignBidModifiersResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignBidModifiersResponse.verify|verify} messages.
                         * @param m MutateCampaignBidModifiersResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignBidModifiersResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignBidModifiersResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCampaignBidModifiersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignBidModifiersResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCampaignBidModifiersResponse;

                        /**
                         * Verifies a MutateCampaignBidModifiersResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignBidModifiersResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignBidModifiersResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignBidModifiersResponse;

                        /**
                         * Creates a plain object from a MutateCampaignBidModifiersResponse message. Also converts values to other types if specified.
                         * @param m MutateCampaignBidModifiersResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignBidModifiersResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignBidModifiersResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignBidModifierResult. */
                    interface IMutateCampaignBidModifierResult {

                        /** MutateCampaignBidModifierResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCampaignBidModifierResult campaign_bid_modifier */
                        campaign_bid_modifier?: (google.ads.googleads.v8.resources.ICampaignBidModifier|null);
                    }

                    /** Represents a MutateCampaignBidModifierResult. */
                    class MutateCampaignBidModifierResult implements IMutateCampaignBidModifierResult {

                        /**
                         * Constructs a new MutateCampaignBidModifierResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignBidModifierResult);

                        /** MutateCampaignBidModifierResult resource_name. */
                        public resource_name: string;

                        /** MutateCampaignBidModifierResult campaign_bid_modifier. */
                        public campaign_bid_modifier?: (google.ads.googleads.v8.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.v8.services.IMutateCampaignBidModifierResult): google.ads.googleads.v8.services.MutateCampaignBidModifierResult;

                        /**
                         * Encodes the specified MutateCampaignBidModifierResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignBidModifierResult.verify|verify} messages.
                         * @param m MutateCampaignBidModifierResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignBidModifierResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignBidModifierResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCampaignBidModifierResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignBidModifierResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCampaignBidModifierResult;

                        /**
                         * Verifies a MutateCampaignBidModifierResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignBidModifierResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignBidModifierResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignBidModifierResult;

                        /**
                         * Creates a plain object from a MutateCampaignBidModifierResult message. Also converts values to other types if specified.
                         * @param m MutateCampaignBidModifierResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignBidModifierResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignBidModifierResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetCampaignBudget.
                         * @param request GetCampaignBudgetRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CampaignBudget
                         */
                        public getCampaignBudget(request: google.ads.googleads.v8.services.IGetCampaignBudgetRequest, callback: google.ads.googleads.v8.services.CampaignBudgetService.GetCampaignBudgetCallback): void;

                        /**
                         * Calls GetCampaignBudget.
                         * @param request GetCampaignBudgetRequest message or plain object
                         * @returns Promise
                         */
                        public getCampaignBudget(request: google.ads.googleads.v8.services.IGetCampaignBudgetRequest): Promise<google.ads.googleads.v8.resources.CampaignBudget>;

                        /**
                         * 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.v8.services.IMutateCampaignBudgetsRequest, callback: google.ads.googleads.v8.services.CampaignBudgetService.MutateCampaignBudgetsCallback): void;

                        /**
                         * Calls MutateCampaignBudgets.
                         * @param request MutateCampaignBudgetsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCampaignBudgets(request: google.ads.googleads.v8.services.IMutateCampaignBudgetsRequest): Promise<google.ads.googleads.v8.services.MutateCampaignBudgetsResponse>;
                    }

                    namespace CampaignBudgetService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignBudgetService#getCampaignBudget}.
                         * @param error Error, if any
                         * @param [response] CampaignBudget
                         */
                        type GetCampaignBudgetCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CampaignBudget) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignBudgetService#mutateCampaignBudgets}.
                         * @param error Error, if any
                         * @param [response] MutateCampaignBudgetsResponse
                         */
                        type MutateCampaignBudgetsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateCampaignBudgetsResponse) => void;
                    }

                    /** Properties of a GetCampaignBudgetRequest. */
                    interface IGetCampaignBudgetRequest {

                        /** GetCampaignBudgetRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCampaignBudgetRequest. */
                    class GetCampaignBudgetRequest implements IGetCampaignBudgetRequest {

                        /**
                         * Constructs a new GetCampaignBudgetRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCampaignBudgetRequest);

                        /** GetCampaignBudgetRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCampaignBudgetRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCampaignBudgetRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCampaignBudgetRequest): google.ads.googleads.v8.services.GetCampaignBudgetRequest;

                        /**
                         * Encodes the specified GetCampaignBudgetRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignBudgetRequest.verify|verify} messages.
                         * @param m GetCampaignBudgetRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCampaignBudgetRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCampaignBudgetRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignBudgetRequest.verify|verify} messages.
                         * @param message GetCampaignBudgetRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCampaignBudgetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCampaignBudgetRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCampaignBudgetRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCampaignBudgetRequest;

                        /**
                         * Decodes a GetCampaignBudgetRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCampaignBudgetRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCampaignBudgetRequest;

                        /**
                         * Verifies a GetCampaignBudgetRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCampaignBudgetRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCampaignBudgetRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCampaignBudgetRequest;

                        /**
                         * Creates a plain object from a GetCampaignBudgetRequest message. Also converts values to other types if specified.
                         * @param m GetCampaignBudgetRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCampaignBudgetRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCampaignBudgetRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignBudgetsRequest. */
                    interface IMutateCampaignBudgetsRequest {

                        /** MutateCampaignBudgetsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCampaignBudgetsRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCampaignBudgetsRequest. */
                    class MutateCampaignBudgetsRequest implements IMutateCampaignBudgetsRequest {

                        /**
                         * Constructs a new MutateCampaignBudgetsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignBudgetsRequest);

                        /** MutateCampaignBudgetsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCampaignBudgetsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateCampaignBudgetsRequest): google.ads.googleads.v8.services.MutateCampaignBudgetsRequest;

                        /**
                         * Encodes the specified MutateCampaignBudgetsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignBudgetsRequest.verify|verify} messages.
                         * @param m MutateCampaignBudgetsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignBudgetsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignBudgetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCampaignBudgetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignBudgetsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCampaignBudgetsRequest;

                        /**
                         * Verifies a MutateCampaignBudgetsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignBudgetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignBudgetsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignBudgetsRequest;

                        /**
                         * Creates a plain object from a MutateCampaignBudgetsRequest message. Also converts values to other types if specified.
                         * @param m MutateCampaignBudgetsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignBudgetsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignBudgetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CampaignBudgetOperation. */
                    interface ICampaignBudgetOperation {

                        /** CampaignBudgetOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignBudgetOperation create */
                        create?: (google.ads.googleads.v8.resources.ICampaignBudget|null);

                        /** CampaignBudgetOperation update */
                        update?: (google.ads.googleads.v8.resources.ICampaignBudget|null);

                        /** CampaignBudgetOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CampaignBudgetOperation. */
                    class CampaignBudgetOperation implements ICampaignBudgetOperation {

                        /**
                         * Constructs a new CampaignBudgetOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICampaignBudgetOperation);

                        /** CampaignBudgetOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignBudgetOperation create. */
                        public create?: (google.ads.googleads.v8.resources.ICampaignBudget|null);

                        /** CampaignBudgetOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.ICampaignBudgetOperation): google.ads.googleads.v8.services.CampaignBudgetOperation;

                        /**
                         * Encodes the specified CampaignBudgetOperation message. Does not implicitly {@link google.ads.googleads.v8.services.CampaignBudgetOperation.verify|verify} messages.
                         * @param m CampaignBudgetOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICampaignBudgetOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignBudgetOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICampaignBudgetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignBudgetOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CampaignBudgetOperation;

                        /**
                         * Verifies a CampaignBudgetOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignBudgetOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignBudgetOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CampaignBudgetOperation;

                        /**
                         * Creates a plain object from a CampaignBudgetOperation message. Also converts values to other types if specified.
                         * @param m CampaignBudgetOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CampaignBudgetOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignBudgetOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignBudgetsResponse. */
                    interface IMutateCampaignBudgetsResponse {

                        /** MutateCampaignBudgetsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignBudgetsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateCampaignBudgetResult[]|null);
                    }

                    /** Represents a MutateCampaignBudgetsResponse. */
                    class MutateCampaignBudgetsResponse implements IMutateCampaignBudgetsResponse {

                        /**
                         * Constructs a new MutateCampaignBudgetsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignBudgetsResponse);

                        /** MutateCampaignBudgetsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignBudgetsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateCampaignBudgetsResponse): google.ads.googleads.v8.services.MutateCampaignBudgetsResponse;

                        /**
                         * Encodes the specified MutateCampaignBudgetsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignBudgetsResponse.verify|verify} messages.
                         * @param m MutateCampaignBudgetsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignBudgetsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignBudgetsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCampaignBudgetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignBudgetsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCampaignBudgetsResponse;

                        /**
                         * Verifies a MutateCampaignBudgetsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignBudgetsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignBudgetsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignBudgetsResponse;

                        /**
                         * Creates a plain object from a MutateCampaignBudgetsResponse message. Also converts values to other types if specified.
                         * @param m MutateCampaignBudgetsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignBudgetsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignBudgetsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignBudgetResult. */
                    interface IMutateCampaignBudgetResult {

                        /** MutateCampaignBudgetResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCampaignBudgetResult campaign_budget */
                        campaign_budget?: (google.ads.googleads.v8.resources.ICampaignBudget|null);
                    }

                    /** Represents a MutateCampaignBudgetResult. */
                    class MutateCampaignBudgetResult implements IMutateCampaignBudgetResult {

                        /**
                         * Constructs a new MutateCampaignBudgetResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignBudgetResult);

                        /** MutateCampaignBudgetResult resource_name. */
                        public resource_name: string;

                        /** MutateCampaignBudgetResult campaign_budget. */
                        public campaign_budget?: (google.ads.googleads.v8.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.v8.services.IMutateCampaignBudgetResult): google.ads.googleads.v8.services.MutateCampaignBudgetResult;

                        /**
                         * Encodes the specified MutateCampaignBudgetResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignBudgetResult.verify|verify} messages.
                         * @param m MutateCampaignBudgetResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignBudgetResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignBudgetResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCampaignBudgetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignBudgetResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCampaignBudgetResult;

                        /**
                         * Verifies a MutateCampaignBudgetResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignBudgetResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignBudgetResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignBudgetResult;

                        /**
                         * Creates a plain object from a MutateCampaignBudgetResult message. Also converts values to other types if specified.
                         * @param m MutateCampaignBudgetResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignBudgetResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignBudgetResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetCampaignCriterion.
                         * @param request GetCampaignCriterionRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CampaignCriterion
                         */
                        public getCampaignCriterion(request: google.ads.googleads.v8.services.IGetCampaignCriterionRequest, callback: google.ads.googleads.v8.services.CampaignCriterionService.GetCampaignCriterionCallback): void;

                        /**
                         * Calls GetCampaignCriterion.
                         * @param request GetCampaignCriterionRequest message or plain object
                         * @returns Promise
                         */
                        public getCampaignCriterion(request: google.ads.googleads.v8.services.IGetCampaignCriterionRequest): Promise<google.ads.googleads.v8.resources.CampaignCriterion>;

                        /**
                         * 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.v8.services.IMutateCampaignCriteriaRequest, callback: google.ads.googleads.v8.services.CampaignCriterionService.MutateCampaignCriteriaCallback): void;

                        /**
                         * Calls MutateCampaignCriteria.
                         * @param request MutateCampaignCriteriaRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCampaignCriteria(request: google.ads.googleads.v8.services.IMutateCampaignCriteriaRequest): Promise<google.ads.googleads.v8.services.MutateCampaignCriteriaResponse>;
                    }

                    namespace CampaignCriterionService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignCriterionService#getCampaignCriterion}.
                         * @param error Error, if any
                         * @param [response] CampaignCriterion
                         */
                        type GetCampaignCriterionCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CampaignCriterion) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignCriterionService#mutateCampaignCriteria}.
                         * @param error Error, if any
                         * @param [response] MutateCampaignCriteriaResponse
                         */
                        type MutateCampaignCriteriaCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateCampaignCriteriaResponse) => void;
                    }

                    /** Properties of a GetCampaignCriterionRequest. */
                    interface IGetCampaignCriterionRequest {

                        /** GetCampaignCriterionRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCampaignCriterionRequest. */
                    class GetCampaignCriterionRequest implements IGetCampaignCriterionRequest {

                        /**
                         * Constructs a new GetCampaignCriterionRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCampaignCriterionRequest);

                        /** GetCampaignCriterionRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCampaignCriterionRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCampaignCriterionRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCampaignCriterionRequest): google.ads.googleads.v8.services.GetCampaignCriterionRequest;

                        /**
                         * Encodes the specified GetCampaignCriterionRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignCriterionRequest.verify|verify} messages.
                         * @param m GetCampaignCriterionRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCampaignCriterionRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCampaignCriterionRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignCriterionRequest.verify|verify} messages.
                         * @param message GetCampaignCriterionRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCampaignCriterionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCampaignCriterionRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCampaignCriterionRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCampaignCriterionRequest;

                        /**
                         * Decodes a GetCampaignCriterionRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCampaignCriterionRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCampaignCriterionRequest;

                        /**
                         * Verifies a GetCampaignCriterionRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCampaignCriterionRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCampaignCriterionRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCampaignCriterionRequest;

                        /**
                         * Creates a plain object from a GetCampaignCriterionRequest message. Also converts values to other types if specified.
                         * @param m GetCampaignCriterionRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCampaignCriterionRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCampaignCriterionRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignCriteriaRequest. */
                    interface IMutateCampaignCriteriaRequest {

                        /** MutateCampaignCriteriaRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCampaignCriteriaRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCampaignCriteriaRequest. */
                    class MutateCampaignCriteriaRequest implements IMutateCampaignCriteriaRequest {

                        /**
                         * Constructs a new MutateCampaignCriteriaRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignCriteriaRequest);

                        /** MutateCampaignCriteriaRequest customer_id. */
                        public customer_id: string;

                        /** MutateCampaignCriteriaRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateCampaignCriteriaRequest): google.ads.googleads.v8.services.MutateCampaignCriteriaRequest;

                        /**
                         * Encodes the specified MutateCampaignCriteriaRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignCriteriaRequest.verify|verify} messages.
                         * @param m MutateCampaignCriteriaRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignCriteriaRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignCriteriaRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCampaignCriteriaRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignCriteriaRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCampaignCriteriaRequest;

                        /**
                         * Verifies a MutateCampaignCriteriaRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignCriteriaRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignCriteriaRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignCriteriaRequest;

                        /**
                         * Creates a plain object from a MutateCampaignCriteriaRequest message. Also converts values to other types if specified.
                         * @param m MutateCampaignCriteriaRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignCriteriaRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignCriteriaRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CampaignCriterionOperation. */
                    interface ICampaignCriterionOperation {

                        /** CampaignCriterionOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignCriterionOperation create */
                        create?: (google.ads.googleads.v8.resources.ICampaignCriterion|null);

                        /** CampaignCriterionOperation update */
                        update?: (google.ads.googleads.v8.resources.ICampaignCriterion|null);

                        /** CampaignCriterionOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CampaignCriterionOperation. */
                    class CampaignCriterionOperation implements ICampaignCriterionOperation {

                        /**
                         * Constructs a new CampaignCriterionOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICampaignCriterionOperation);

                        /** CampaignCriterionOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignCriterionOperation create. */
                        public create?: (google.ads.googleads.v8.resources.ICampaignCriterion|null);

                        /** CampaignCriterionOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.ICampaignCriterionOperation): google.ads.googleads.v8.services.CampaignCriterionOperation;

                        /**
                         * Encodes the specified CampaignCriterionOperation message. Does not implicitly {@link google.ads.googleads.v8.services.CampaignCriterionOperation.verify|verify} messages.
                         * @param m CampaignCriterionOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICampaignCriterionOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignCriterionOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICampaignCriterionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignCriterionOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CampaignCriterionOperation;

                        /**
                         * Verifies a CampaignCriterionOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignCriterionOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignCriterionOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CampaignCriterionOperation;

                        /**
                         * Creates a plain object from a CampaignCriterionOperation message. Also converts values to other types if specified.
                         * @param m CampaignCriterionOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CampaignCriterionOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignCriterionOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignCriteriaResponse. */
                    interface IMutateCampaignCriteriaResponse {

                        /** MutateCampaignCriteriaResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignCriteriaResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateCampaignCriterionResult[]|null);
                    }

                    /** Represents a MutateCampaignCriteriaResponse. */
                    class MutateCampaignCriteriaResponse implements IMutateCampaignCriteriaResponse {

                        /**
                         * Constructs a new MutateCampaignCriteriaResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignCriteriaResponse);

                        /** MutateCampaignCriteriaResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignCriteriaResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateCampaignCriteriaResponse): google.ads.googleads.v8.services.MutateCampaignCriteriaResponse;

                        /**
                         * Encodes the specified MutateCampaignCriteriaResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignCriteriaResponse.verify|verify} messages.
                         * @param m MutateCampaignCriteriaResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignCriteriaResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignCriteriaResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCampaignCriteriaResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignCriteriaResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCampaignCriteriaResponse;

                        /**
                         * Verifies a MutateCampaignCriteriaResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignCriteriaResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignCriteriaResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignCriteriaResponse;

                        /**
                         * Creates a plain object from a MutateCampaignCriteriaResponse message. Also converts values to other types if specified.
                         * @param m MutateCampaignCriteriaResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignCriteriaResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignCriteriaResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignCriterionResult. */
                    interface IMutateCampaignCriterionResult {

                        /** MutateCampaignCriterionResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCampaignCriterionResult campaign_criterion */
                        campaign_criterion?: (google.ads.googleads.v8.resources.ICampaignCriterion|null);
                    }

                    /** Represents a MutateCampaignCriterionResult. */
                    class MutateCampaignCriterionResult implements IMutateCampaignCriterionResult {

                        /**
                         * Constructs a new MutateCampaignCriterionResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignCriterionResult);

                        /** MutateCampaignCriterionResult resource_name. */
                        public resource_name: string;

                        /** MutateCampaignCriterionResult campaign_criterion. */
                        public campaign_criterion?: (google.ads.googleads.v8.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.v8.services.IMutateCampaignCriterionResult): google.ads.googleads.v8.services.MutateCampaignCriterionResult;

                        /**
                         * Encodes the specified MutateCampaignCriterionResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignCriterionResult.verify|verify} messages.
                         * @param m MutateCampaignCriterionResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignCriterionResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignCriterionResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCampaignCriterionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignCriterionResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCampaignCriterionResult;

                        /**
                         * Verifies a MutateCampaignCriterionResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignCriterionResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignCriterionResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignCriterionResult;

                        /**
                         * Creates a plain object from a MutateCampaignCriterionResult message. Also converts values to other types if specified.
                         * @param m MutateCampaignCriterionResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignCriterionResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignCriterionResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetCampaignDraft.
                         * @param request GetCampaignDraftRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CampaignDraft
                         */
                        public getCampaignDraft(request: google.ads.googleads.v8.services.IGetCampaignDraftRequest, callback: google.ads.googleads.v8.services.CampaignDraftService.GetCampaignDraftCallback): void;

                        /**
                         * Calls GetCampaignDraft.
                         * @param request GetCampaignDraftRequest message or plain object
                         * @returns Promise
                         */
                        public getCampaignDraft(request: google.ads.googleads.v8.services.IGetCampaignDraftRequest): Promise<google.ads.googleads.v8.resources.CampaignDraft>;

                        /**
                         * 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.v8.services.IMutateCampaignDraftsRequest, callback: google.ads.googleads.v8.services.CampaignDraftService.MutateCampaignDraftsCallback): void;

                        /**
                         * Calls MutateCampaignDrafts.
                         * @param request MutateCampaignDraftsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCampaignDrafts(request: google.ads.googleads.v8.services.IMutateCampaignDraftsRequest): Promise<google.ads.googleads.v8.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.v8.services.IPromoteCampaignDraftRequest, callback: google.ads.googleads.v8.services.CampaignDraftService.PromoteCampaignDraftCallback): void;

                        /**
                         * Calls PromoteCampaignDraft.
                         * @param request PromoteCampaignDraftRequest message or plain object
                         * @returns Promise
                         */
                        public promoteCampaignDraft(request: google.ads.googleads.v8.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.v8.services.IListCampaignDraftAsyncErrorsRequest, callback: google.ads.googleads.v8.services.CampaignDraftService.ListCampaignDraftAsyncErrorsCallback): void;

                        /**
                         * Calls ListCampaignDraftAsyncErrors.
                         * @param request ListCampaignDraftAsyncErrorsRequest message or plain object
                         * @returns Promise
                         */
                        public listCampaignDraftAsyncErrors(request: google.ads.googleads.v8.services.IListCampaignDraftAsyncErrorsRequest): Promise<google.ads.googleads.v8.services.ListCampaignDraftAsyncErrorsResponse>;
                    }

                    namespace CampaignDraftService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignDraftService#getCampaignDraft}.
                         * @param error Error, if any
                         * @param [response] CampaignDraft
                         */
                        type GetCampaignDraftCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CampaignDraft) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignDraftService#mutateCampaignDrafts}.
                         * @param error Error, if any
                         * @param [response] MutateCampaignDraftsResponse
                         */
                        type MutateCampaignDraftsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateCampaignDraftsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.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.v8.services.CampaignDraftService#listCampaignDraftAsyncErrors}.
                         * @param error Error, if any
                         * @param [response] ListCampaignDraftAsyncErrorsResponse
                         */
                        type ListCampaignDraftAsyncErrorsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.ListCampaignDraftAsyncErrorsResponse) => void;
                    }

                    /** Properties of a GetCampaignDraftRequest. */
                    interface IGetCampaignDraftRequest {

                        /** GetCampaignDraftRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCampaignDraftRequest. */
                    class GetCampaignDraftRequest implements IGetCampaignDraftRequest {

                        /**
                         * Constructs a new GetCampaignDraftRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCampaignDraftRequest);

                        /** GetCampaignDraftRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCampaignDraftRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCampaignDraftRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCampaignDraftRequest): google.ads.googleads.v8.services.GetCampaignDraftRequest;

                        /**
                         * Encodes the specified GetCampaignDraftRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignDraftRequest.verify|verify} messages.
                         * @param m GetCampaignDraftRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCampaignDraftRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCampaignDraftRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignDraftRequest.verify|verify} messages.
                         * @param message GetCampaignDraftRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCampaignDraftRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCampaignDraftRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCampaignDraftRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCampaignDraftRequest;

                        /**
                         * Decodes a GetCampaignDraftRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCampaignDraftRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCampaignDraftRequest;

                        /**
                         * Verifies a GetCampaignDraftRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCampaignDraftRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCampaignDraftRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCampaignDraftRequest;

                        /**
                         * Creates a plain object from a GetCampaignDraftRequest message. Also converts values to other types if specified.
                         * @param m GetCampaignDraftRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCampaignDraftRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCampaignDraftRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignDraftsRequest. */
                    interface IMutateCampaignDraftsRequest {

                        /** MutateCampaignDraftsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCampaignDraftsRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCampaignDraftsRequest. */
                    class MutateCampaignDraftsRequest implements IMutateCampaignDraftsRequest {

                        /**
                         * Constructs a new MutateCampaignDraftsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignDraftsRequest);

                        /** MutateCampaignDraftsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCampaignDraftsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateCampaignDraftsRequest): google.ads.googleads.v8.services.MutateCampaignDraftsRequest;

                        /**
                         * Encodes the specified MutateCampaignDraftsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignDraftsRequest.verify|verify} messages.
                         * @param m MutateCampaignDraftsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignDraftsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignDraftsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCampaignDraftsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignDraftsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCampaignDraftsRequest;

                        /**
                         * Verifies a MutateCampaignDraftsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignDraftsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignDraftsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignDraftsRequest;

                        /**
                         * Creates a plain object from a MutateCampaignDraftsRequest message. Also converts values to other types if specified.
                         * @param m MutateCampaignDraftsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignDraftsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignDraftsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IPromoteCampaignDraftRequest): google.ads.googleads.v8.services.PromoteCampaignDraftRequest;

                        /**
                         * Encodes the specified PromoteCampaignDraftRequest message. Does not implicitly {@link google.ads.googleads.v8.services.PromoteCampaignDraftRequest.verify|verify} messages.
                         * @param m PromoteCampaignDraftRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IPromoteCampaignDraftRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PromoteCampaignDraftRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IPromoteCampaignDraftRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PromoteCampaignDraftRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.PromoteCampaignDraftRequest;

                        /**
                         * Verifies a PromoteCampaignDraftRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PromoteCampaignDraftRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PromoteCampaignDraftRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.PromoteCampaignDraftRequest;

                        /**
                         * Creates a plain object from a PromoteCampaignDraftRequest message. Also converts values to other types if specified.
                         * @param m PromoteCampaignDraftRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.PromoteCampaignDraftRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PromoteCampaignDraftRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CampaignDraftOperation. */
                    interface ICampaignDraftOperation {

                        /** CampaignDraftOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignDraftOperation create */
                        create?: (google.ads.googleads.v8.resources.ICampaignDraft|null);

                        /** CampaignDraftOperation update */
                        update?: (google.ads.googleads.v8.resources.ICampaignDraft|null);

                        /** CampaignDraftOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CampaignDraftOperation. */
                    class CampaignDraftOperation implements ICampaignDraftOperation {

                        /**
                         * Constructs a new CampaignDraftOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICampaignDraftOperation);

                        /** CampaignDraftOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignDraftOperation create. */
                        public create?: (google.ads.googleads.v8.resources.ICampaignDraft|null);

                        /** CampaignDraftOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.ICampaignDraftOperation): google.ads.googleads.v8.services.CampaignDraftOperation;

                        /**
                         * Encodes the specified CampaignDraftOperation message. Does not implicitly {@link google.ads.googleads.v8.services.CampaignDraftOperation.verify|verify} messages.
                         * @param m CampaignDraftOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICampaignDraftOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignDraftOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICampaignDraftOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignDraftOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CampaignDraftOperation;

                        /**
                         * Verifies a CampaignDraftOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignDraftOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignDraftOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CampaignDraftOperation;

                        /**
                         * Creates a plain object from a CampaignDraftOperation message. Also converts values to other types if specified.
                         * @param m CampaignDraftOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CampaignDraftOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignDraftOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignDraftsResponse. */
                    interface IMutateCampaignDraftsResponse {

                        /** MutateCampaignDraftsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignDraftsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateCampaignDraftResult[]|null);
                    }

                    /** Represents a MutateCampaignDraftsResponse. */
                    class MutateCampaignDraftsResponse implements IMutateCampaignDraftsResponse {

                        /**
                         * Constructs a new MutateCampaignDraftsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignDraftsResponse);

                        /** MutateCampaignDraftsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignDraftsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateCampaignDraftsResponse): google.ads.googleads.v8.services.MutateCampaignDraftsResponse;

                        /**
                         * Encodes the specified MutateCampaignDraftsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignDraftsResponse.verify|verify} messages.
                         * @param m MutateCampaignDraftsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignDraftsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignDraftsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCampaignDraftsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignDraftsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCampaignDraftsResponse;

                        /**
                         * Verifies a MutateCampaignDraftsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignDraftsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignDraftsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignDraftsResponse;

                        /**
                         * Creates a plain object from a MutateCampaignDraftsResponse message. Also converts values to other types if specified.
                         * @param m MutateCampaignDraftsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignDraftsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignDraftsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignDraftResult. */
                    interface IMutateCampaignDraftResult {

                        /** MutateCampaignDraftResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCampaignDraftResult campaign_draft */
                        campaign_draft?: (google.ads.googleads.v8.resources.ICampaignDraft|null);
                    }

                    /** Represents a MutateCampaignDraftResult. */
                    class MutateCampaignDraftResult implements IMutateCampaignDraftResult {

                        /**
                         * Constructs a new MutateCampaignDraftResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignDraftResult);

                        /** MutateCampaignDraftResult resource_name. */
                        public resource_name: string;

                        /** MutateCampaignDraftResult campaign_draft. */
                        public campaign_draft?: (google.ads.googleads.v8.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.v8.services.IMutateCampaignDraftResult): google.ads.googleads.v8.services.MutateCampaignDraftResult;

                        /**
                         * Encodes the specified MutateCampaignDraftResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignDraftResult.verify|verify} messages.
                         * @param m MutateCampaignDraftResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignDraftResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignDraftResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCampaignDraftResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignDraftResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCampaignDraftResult;

                        /**
                         * Verifies a MutateCampaignDraftResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignDraftResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignDraftResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignDraftResult;

                        /**
                         * Creates a plain object from a MutateCampaignDraftResult message. Also converts values to other types if specified.
                         * @param m MutateCampaignDraftResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignDraftResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignDraftResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IListCampaignDraftAsyncErrorsRequest): google.ads.googleads.v8.services.ListCampaignDraftAsyncErrorsRequest;

                        /**
                         * Encodes the specified ListCampaignDraftAsyncErrorsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.ListCampaignDraftAsyncErrorsRequest.verify|verify} messages.
                         * @param m ListCampaignDraftAsyncErrorsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IListCampaignDraftAsyncErrorsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListCampaignDraftAsyncErrorsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IListCampaignDraftAsyncErrorsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListCampaignDraftAsyncErrorsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ListCampaignDraftAsyncErrorsRequest;

                        /**
                         * Verifies a ListCampaignDraftAsyncErrorsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListCampaignDraftAsyncErrorsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ListCampaignDraftAsyncErrorsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ListCampaignDraftAsyncErrorsRequest;

                        /**
                         * Creates a plain object from a ListCampaignDraftAsyncErrorsRequest message. Also converts values to other types if specified.
                         * @param m ListCampaignDraftAsyncErrorsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ListCampaignDraftAsyncErrorsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListCampaignDraftAsyncErrorsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IListCampaignDraftAsyncErrorsResponse): google.ads.googleads.v8.services.ListCampaignDraftAsyncErrorsResponse;

                        /**
                         * Encodes the specified ListCampaignDraftAsyncErrorsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.ListCampaignDraftAsyncErrorsResponse.verify|verify} messages.
                         * @param m ListCampaignDraftAsyncErrorsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IListCampaignDraftAsyncErrorsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListCampaignDraftAsyncErrorsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IListCampaignDraftAsyncErrorsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListCampaignDraftAsyncErrorsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ListCampaignDraftAsyncErrorsResponse;

                        /**
                         * Verifies a ListCampaignDraftAsyncErrorsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListCampaignDraftAsyncErrorsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ListCampaignDraftAsyncErrorsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ListCampaignDraftAsyncErrorsResponse;

                        /**
                         * Creates a plain object from a ListCampaignDraftAsyncErrorsResponse message. Also converts values to other types if specified.
                         * @param m ListCampaignDraftAsyncErrorsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ListCampaignDraftAsyncErrorsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListCampaignDraftAsyncErrorsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a CampaignExperimentService */
                    class CampaignExperimentService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CampaignExperimentService 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 CampaignExperimentService 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): CampaignExperimentService;

                        /**
                         * Calls GetCampaignExperiment.
                         * @param request GetCampaignExperimentRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CampaignExperiment
                         */
                        public getCampaignExperiment(request: google.ads.googleads.v8.services.IGetCampaignExperimentRequest, callback: google.ads.googleads.v8.services.CampaignExperimentService.GetCampaignExperimentCallback): void;

                        /**
                         * Calls GetCampaignExperiment.
                         * @param request GetCampaignExperimentRequest message or plain object
                         * @returns Promise
                         */
                        public getCampaignExperiment(request: google.ads.googleads.v8.services.IGetCampaignExperimentRequest): Promise<google.ads.googleads.v8.resources.CampaignExperiment>;

                        /**
                         * Calls CreateCampaignExperiment.
                         * @param request CreateCampaignExperimentRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Operation
                         */
                        public createCampaignExperiment(request: google.ads.googleads.v8.services.ICreateCampaignExperimentRequest, callback: google.ads.googleads.v8.services.CampaignExperimentService.CreateCampaignExperimentCallback): void;

                        /**
                         * Calls CreateCampaignExperiment.
                         * @param request CreateCampaignExperimentRequest message or plain object
                         * @returns Promise
                         */
                        public createCampaignExperiment(request: google.ads.googleads.v8.services.ICreateCampaignExperimentRequest): Promise<google.longrunning.Operation>;

                        /**
                         * Calls MutateCampaignExperiments.
                         * @param request MutateCampaignExperimentsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCampaignExperimentsResponse
                         */
                        public mutateCampaignExperiments(request: google.ads.googleads.v8.services.IMutateCampaignExperimentsRequest, callback: google.ads.googleads.v8.services.CampaignExperimentService.MutateCampaignExperimentsCallback): void;

                        /**
                         * Calls MutateCampaignExperiments.
                         * @param request MutateCampaignExperimentsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCampaignExperiments(request: google.ads.googleads.v8.services.IMutateCampaignExperimentsRequest): Promise<google.ads.googleads.v8.services.MutateCampaignExperimentsResponse>;

                        /**
                         * Calls GraduateCampaignExperiment.
                         * @param request GraduateCampaignExperimentRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GraduateCampaignExperimentResponse
                         */
                        public graduateCampaignExperiment(request: google.ads.googleads.v8.services.IGraduateCampaignExperimentRequest, callback: google.ads.googleads.v8.services.CampaignExperimentService.GraduateCampaignExperimentCallback): void;

                        /**
                         * Calls GraduateCampaignExperiment.
                         * @param request GraduateCampaignExperimentRequest message or plain object
                         * @returns Promise
                         */
                        public graduateCampaignExperiment(request: google.ads.googleads.v8.services.IGraduateCampaignExperimentRequest): Promise<google.ads.googleads.v8.services.GraduateCampaignExperimentResponse>;

                        /**
                         * Calls PromoteCampaignExperiment.
                         * @param request PromoteCampaignExperimentRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Operation
                         */
                        public promoteCampaignExperiment(request: google.ads.googleads.v8.services.IPromoteCampaignExperimentRequest, callback: google.ads.googleads.v8.services.CampaignExperimentService.PromoteCampaignExperimentCallback): void;

                        /**
                         * Calls PromoteCampaignExperiment.
                         * @param request PromoteCampaignExperimentRequest message or plain object
                         * @returns Promise
                         */
                        public promoteCampaignExperiment(request: google.ads.googleads.v8.services.IPromoteCampaignExperimentRequest): Promise<google.longrunning.Operation>;

                        /**
                         * Calls EndCampaignExperiment.
                         * @param request EndCampaignExperimentRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Empty
                         */
                        public endCampaignExperiment(request: google.ads.googleads.v8.services.IEndCampaignExperimentRequest, callback: google.ads.googleads.v8.services.CampaignExperimentService.EndCampaignExperimentCallback): void;

                        /**
                         * Calls EndCampaignExperiment.
                         * @param request EndCampaignExperimentRequest message or plain object
                         * @returns Promise
                         */
                        public endCampaignExperiment(request: google.ads.googleads.v8.services.IEndCampaignExperimentRequest): Promise<google.protobuf.Empty>;

                        /**
                         * Calls ListCampaignExperimentAsyncErrors.
                         * @param request ListCampaignExperimentAsyncErrorsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListCampaignExperimentAsyncErrorsResponse
                         */
                        public listCampaignExperimentAsyncErrors(request: google.ads.googleads.v8.services.IListCampaignExperimentAsyncErrorsRequest, callback: google.ads.googleads.v8.services.CampaignExperimentService.ListCampaignExperimentAsyncErrorsCallback): void;

                        /**
                         * Calls ListCampaignExperimentAsyncErrors.
                         * @param request ListCampaignExperimentAsyncErrorsRequest message or plain object
                         * @returns Promise
                         */
                        public listCampaignExperimentAsyncErrors(request: google.ads.googleads.v8.services.IListCampaignExperimentAsyncErrorsRequest): Promise<google.ads.googleads.v8.services.ListCampaignExperimentAsyncErrorsResponse>;
                    }

                    namespace CampaignExperimentService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignExperimentService#getCampaignExperiment}.
                         * @param error Error, if any
                         * @param [response] CampaignExperiment
                         */
                        type GetCampaignExperimentCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CampaignExperiment) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignExperimentService#createCampaignExperiment}.
                         * @param error Error, if any
                         * @param [response] Operation
                         */
                        type CreateCampaignExperimentCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignExperimentService#mutateCampaignExperiments}.
                         * @param error Error, if any
                         * @param [response] MutateCampaignExperimentsResponse
                         */
                        type MutateCampaignExperimentsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateCampaignExperimentsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignExperimentService#graduateCampaignExperiment}.
                         * @param error Error, if any
                         * @param [response] GraduateCampaignExperimentResponse
                         */
                        type GraduateCampaignExperimentCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.GraduateCampaignExperimentResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignExperimentService#promoteCampaignExperiment}.
                         * @param error Error, if any
                         * @param [response] Operation
                         */
                        type PromoteCampaignExperimentCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignExperimentService#endCampaignExperiment}.
                         * @param error Error, if any
                         * @param [response] Empty
                         */
                        type EndCampaignExperimentCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignExperimentService#listCampaignExperimentAsyncErrors}.
                         * @param error Error, if any
                         * @param [response] ListCampaignExperimentAsyncErrorsResponse
                         */
                        type ListCampaignExperimentAsyncErrorsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.ListCampaignExperimentAsyncErrorsResponse) => void;
                    }

                    /** Properties of a GetCampaignExperimentRequest. */
                    interface IGetCampaignExperimentRequest {

                        /** GetCampaignExperimentRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCampaignExperimentRequest. */
                    class GetCampaignExperimentRequest implements IGetCampaignExperimentRequest {

                        /**
                         * Constructs a new GetCampaignExperimentRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCampaignExperimentRequest);

                        /** GetCampaignExperimentRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCampaignExperimentRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCampaignExperimentRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCampaignExperimentRequest): google.ads.googleads.v8.services.GetCampaignExperimentRequest;

                        /**
                         * Encodes the specified GetCampaignExperimentRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignExperimentRequest.verify|verify} messages.
                         * @param m GetCampaignExperimentRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCampaignExperimentRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCampaignExperimentRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignExperimentRequest.verify|verify} messages.
                         * @param message GetCampaignExperimentRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCampaignExperimentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCampaignExperimentRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCampaignExperimentRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCampaignExperimentRequest;

                        /**
                         * Decodes a GetCampaignExperimentRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCampaignExperimentRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCampaignExperimentRequest;

                        /**
                         * Verifies a GetCampaignExperimentRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCampaignExperimentRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCampaignExperimentRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCampaignExperimentRequest;

                        /**
                         * Creates a plain object from a GetCampaignExperimentRequest message. Also converts values to other types if specified.
                         * @param m GetCampaignExperimentRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCampaignExperimentRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCampaignExperimentRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignExperimentsRequest. */
                    interface IMutateCampaignExperimentsRequest {

                        /** MutateCampaignExperimentsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCampaignExperimentsRequest operations */
                        operations?: (google.ads.googleads.v8.services.ICampaignExperimentOperation[]|null);

                        /** MutateCampaignExperimentsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateCampaignExperimentsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateCampaignExperimentsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCampaignExperimentsRequest. */
                    class MutateCampaignExperimentsRequest implements IMutateCampaignExperimentsRequest {

                        /**
                         * Constructs a new MutateCampaignExperimentsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignExperimentsRequest);

                        /** MutateCampaignExperimentsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCampaignExperimentsRequest operations. */
                        public operations: google.ads.googleads.v8.services.ICampaignExperimentOperation[];

                        /** MutateCampaignExperimentsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateCampaignExperimentsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateCampaignExperimentsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateCampaignExperimentsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignExperimentsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateCampaignExperimentsRequest): google.ads.googleads.v8.services.MutateCampaignExperimentsRequest;

                        /**
                         * Encodes the specified MutateCampaignExperimentsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignExperimentsRequest.verify|verify} messages.
                         * @param m MutateCampaignExperimentsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignExperimentsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignExperimentsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignExperimentsRequest.verify|verify} messages.
                         * @param message MutateCampaignExperimentsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateCampaignExperimentsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignExperimentsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateCampaignExperimentsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateCampaignExperimentsRequest;

                        /**
                         * Decodes a MutateCampaignExperimentsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignExperimentsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateCampaignExperimentsRequest;

                        /**
                         * Verifies a MutateCampaignExperimentsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignExperimentsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignExperimentsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignExperimentsRequest;

                        /**
                         * Creates a plain object from a MutateCampaignExperimentsRequest message. Also converts values to other types if specified.
                         * @param m MutateCampaignExperimentsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignExperimentsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignExperimentsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CampaignExperimentOperation. */
                    interface ICampaignExperimentOperation {

                        /** CampaignExperimentOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignExperimentOperation update */
                        update?: (google.ads.googleads.v8.resources.ICampaignExperiment|null);

                        /** CampaignExperimentOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CampaignExperimentOperation. */
                    class CampaignExperimentOperation implements ICampaignExperimentOperation {

                        /**
                         * Constructs a new CampaignExperimentOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICampaignExperimentOperation);

                        /** CampaignExperimentOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignExperimentOperation update. */
                        public update?: (google.ads.googleads.v8.resources.ICampaignExperiment|null);

                        /** CampaignExperimentOperation remove. */
                        public remove?: (string|null);

                        /** CampaignExperimentOperation operation. */
                        public operation?: ("update"|"remove");

                        /**
                         * Creates a new CampaignExperimentOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignExperimentOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.ICampaignExperimentOperation): google.ads.googleads.v8.services.CampaignExperimentOperation;

                        /**
                         * Encodes the specified CampaignExperimentOperation message. Does not implicitly {@link google.ads.googleads.v8.services.CampaignExperimentOperation.verify|verify} messages.
                         * @param m CampaignExperimentOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICampaignExperimentOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignExperimentOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.CampaignExperimentOperation.verify|verify} messages.
                         * @param message CampaignExperimentOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.ICampaignExperimentOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignExperimentOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns CampaignExperimentOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.CampaignExperimentOperation;

                        /**
                         * Decodes a CampaignExperimentOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignExperimentOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.CampaignExperimentOperation;

                        /**
                         * Verifies a CampaignExperimentOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignExperimentOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignExperimentOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CampaignExperimentOperation;

                        /**
                         * Creates a plain object from a CampaignExperimentOperation message. Also converts values to other types if specified.
                         * @param m CampaignExperimentOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CampaignExperimentOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignExperimentOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignExperimentsResponse. */
                    interface IMutateCampaignExperimentsResponse {

                        /** MutateCampaignExperimentsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignExperimentsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateCampaignExperimentResult[]|null);
                    }

                    /** Represents a MutateCampaignExperimentsResponse. */
                    class MutateCampaignExperimentsResponse implements IMutateCampaignExperimentsResponse {

                        /**
                         * Constructs a new MutateCampaignExperimentsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignExperimentsResponse);

                        /** MutateCampaignExperimentsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignExperimentsResponse results. */
                        public results: google.ads.googleads.v8.services.IMutateCampaignExperimentResult[];

                        /**
                         * Creates a new MutateCampaignExperimentsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignExperimentsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateCampaignExperimentsResponse): google.ads.googleads.v8.services.MutateCampaignExperimentsResponse;

                        /**
                         * Encodes the specified MutateCampaignExperimentsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignExperimentsResponse.verify|verify} messages.
                         * @param m MutateCampaignExperimentsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignExperimentsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignExperimentsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignExperimentsResponse.verify|verify} messages.
                         * @param message MutateCampaignExperimentsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateCampaignExperimentsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignExperimentsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateCampaignExperimentsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateCampaignExperimentsResponse;

                        /**
                         * Decodes a MutateCampaignExperimentsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignExperimentsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateCampaignExperimentsResponse;

                        /**
                         * Verifies a MutateCampaignExperimentsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignExperimentsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignExperimentsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignExperimentsResponse;

                        /**
                         * Creates a plain object from a MutateCampaignExperimentsResponse message. Also converts values to other types if specified.
                         * @param m MutateCampaignExperimentsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignExperimentsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignExperimentsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignExperimentResult. */
                    interface IMutateCampaignExperimentResult {

                        /** MutateCampaignExperimentResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCampaignExperimentResult campaign_experiment */
                        campaign_experiment?: (google.ads.googleads.v8.resources.ICampaignExperiment|null);
                    }

                    /** Represents a MutateCampaignExperimentResult. */
                    class MutateCampaignExperimentResult implements IMutateCampaignExperimentResult {

                        /**
                         * Constructs a new MutateCampaignExperimentResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignExperimentResult);

                        /** MutateCampaignExperimentResult resource_name. */
                        public resource_name: string;

                        /** MutateCampaignExperimentResult campaign_experiment. */
                        public campaign_experiment?: (google.ads.googleads.v8.resources.ICampaignExperiment|null);

                        /**
                         * Creates a new MutateCampaignExperimentResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignExperimentResult instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateCampaignExperimentResult): google.ads.googleads.v8.services.MutateCampaignExperimentResult;

                        /**
                         * Encodes the specified MutateCampaignExperimentResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignExperimentResult.verify|verify} messages.
                         * @param m MutateCampaignExperimentResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignExperimentResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignExperimentResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignExperimentResult.verify|verify} messages.
                         * @param message MutateCampaignExperimentResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateCampaignExperimentResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignExperimentResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateCampaignExperimentResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateCampaignExperimentResult;

                        /**
                         * Decodes a MutateCampaignExperimentResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignExperimentResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateCampaignExperimentResult;

                        /**
                         * Verifies a MutateCampaignExperimentResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignExperimentResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignExperimentResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignExperimentResult;

                        /**
                         * Creates a plain object from a MutateCampaignExperimentResult message. Also converts values to other types if specified.
                         * @param m MutateCampaignExperimentResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignExperimentResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignExperimentResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CreateCampaignExperimentRequest. */
                    interface ICreateCampaignExperimentRequest {

                        /** CreateCampaignExperimentRequest customer_id */
                        customer_id?: (string|null);

                        /** CreateCampaignExperimentRequest campaign_experiment */
                        campaign_experiment?: (google.ads.googleads.v8.resources.ICampaignExperiment|null);

                        /** CreateCampaignExperimentRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a CreateCampaignExperimentRequest. */
                    class CreateCampaignExperimentRequest implements ICreateCampaignExperimentRequest {

                        /**
                         * Constructs a new CreateCampaignExperimentRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICreateCampaignExperimentRequest);

                        /** CreateCampaignExperimentRequest customer_id. */
                        public customer_id: string;

                        /** CreateCampaignExperimentRequest campaign_experiment. */
                        public campaign_experiment?: (google.ads.googleads.v8.resources.ICampaignExperiment|null);

                        /** CreateCampaignExperimentRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new CreateCampaignExperimentRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateCampaignExperimentRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.ICreateCampaignExperimentRequest): google.ads.googleads.v8.services.CreateCampaignExperimentRequest;

                        /**
                         * Encodes the specified CreateCampaignExperimentRequest message. Does not implicitly {@link google.ads.googleads.v8.services.CreateCampaignExperimentRequest.verify|verify} messages.
                         * @param m CreateCampaignExperimentRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICreateCampaignExperimentRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateCampaignExperimentRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.CreateCampaignExperimentRequest.verify|verify} messages.
                         * @param message CreateCampaignExperimentRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.ICreateCampaignExperimentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateCampaignExperimentRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns CreateCampaignExperimentRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.CreateCampaignExperimentRequest;

                        /**
                         * Decodes a CreateCampaignExperimentRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateCampaignExperimentRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.CreateCampaignExperimentRequest;

                        /**
                         * Verifies a CreateCampaignExperimentRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CreateCampaignExperimentRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CreateCampaignExperimentRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CreateCampaignExperimentRequest;

                        /**
                         * Creates a plain object from a CreateCampaignExperimentRequest message. Also converts values to other types if specified.
                         * @param m CreateCampaignExperimentRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CreateCampaignExperimentRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateCampaignExperimentRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CreateCampaignExperimentMetadata. */
                    interface ICreateCampaignExperimentMetadata {

                        /** CreateCampaignExperimentMetadata campaign_experiment */
                        campaign_experiment?: (string|null);
                    }

                    /** Represents a CreateCampaignExperimentMetadata. */
                    class CreateCampaignExperimentMetadata implements ICreateCampaignExperimentMetadata {

                        /**
                         * Constructs a new CreateCampaignExperimentMetadata.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICreateCampaignExperimentMetadata);

                        /** CreateCampaignExperimentMetadata campaign_experiment. */
                        public campaign_experiment: string;

                        /**
                         * Creates a new CreateCampaignExperimentMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateCampaignExperimentMetadata instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.ICreateCampaignExperimentMetadata): google.ads.googleads.v8.services.CreateCampaignExperimentMetadata;

                        /**
                         * Encodes the specified CreateCampaignExperimentMetadata message. Does not implicitly {@link google.ads.googleads.v8.services.CreateCampaignExperimentMetadata.verify|verify} messages.
                         * @param m CreateCampaignExperimentMetadata message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICreateCampaignExperimentMetadata, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateCampaignExperimentMetadata message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.CreateCampaignExperimentMetadata.verify|verify} messages.
                         * @param message CreateCampaignExperimentMetadata message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.ICreateCampaignExperimentMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateCampaignExperimentMetadata message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns CreateCampaignExperimentMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.CreateCampaignExperimentMetadata;

                        /**
                         * Decodes a CreateCampaignExperimentMetadata message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CreateCampaignExperimentMetadata
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.CreateCampaignExperimentMetadata;

                        /**
                         * Verifies a CreateCampaignExperimentMetadata message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CreateCampaignExperimentMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CreateCampaignExperimentMetadata
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CreateCampaignExperimentMetadata;

                        /**
                         * Creates a plain object from a CreateCampaignExperimentMetadata message. Also converts values to other types if specified.
                         * @param m CreateCampaignExperimentMetadata
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CreateCampaignExperimentMetadata, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateCampaignExperimentMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a GraduateCampaignExperimentRequest. */
                    interface IGraduateCampaignExperimentRequest {

                        /** GraduateCampaignExperimentRequest campaign_experiment */
                        campaign_experiment?: (string|null);

                        /** GraduateCampaignExperimentRequest campaign_budget */
                        campaign_budget?: (string|null);

                        /** GraduateCampaignExperimentRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a GraduateCampaignExperimentRequest. */
                    class GraduateCampaignExperimentRequest implements IGraduateCampaignExperimentRequest {

                        /**
                         * Constructs a new GraduateCampaignExperimentRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGraduateCampaignExperimentRequest);

                        /** GraduateCampaignExperimentRequest campaign_experiment. */
                        public campaign_experiment: string;

                        /** GraduateCampaignExperimentRequest campaign_budget. */
                        public campaign_budget: string;

                        /** GraduateCampaignExperimentRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new GraduateCampaignExperimentRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GraduateCampaignExperimentRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGraduateCampaignExperimentRequest): google.ads.googleads.v8.services.GraduateCampaignExperimentRequest;

                        /**
                         * Encodes the specified GraduateCampaignExperimentRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GraduateCampaignExperimentRequest.verify|verify} messages.
                         * @param m GraduateCampaignExperimentRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGraduateCampaignExperimentRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GraduateCampaignExperimentRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GraduateCampaignExperimentRequest.verify|verify} messages.
                         * @param message GraduateCampaignExperimentRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGraduateCampaignExperimentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GraduateCampaignExperimentRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GraduateCampaignExperimentRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GraduateCampaignExperimentRequest;

                        /**
                         * Decodes a GraduateCampaignExperimentRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GraduateCampaignExperimentRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GraduateCampaignExperimentRequest;

                        /**
                         * Verifies a GraduateCampaignExperimentRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GraduateCampaignExperimentRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GraduateCampaignExperimentRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GraduateCampaignExperimentRequest;

                        /**
                         * Creates a plain object from a GraduateCampaignExperimentRequest message. Also converts values to other types if specified.
                         * @param m GraduateCampaignExperimentRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GraduateCampaignExperimentRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GraduateCampaignExperimentRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a GraduateCampaignExperimentResponse. */
                    interface IGraduateCampaignExperimentResponse {

                        /** GraduateCampaignExperimentResponse graduated_campaign */
                        graduated_campaign?: (string|null);
                    }

                    /** Represents a GraduateCampaignExperimentResponse. */
                    class GraduateCampaignExperimentResponse implements IGraduateCampaignExperimentResponse {

                        /**
                         * Constructs a new GraduateCampaignExperimentResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGraduateCampaignExperimentResponse);

                        /** GraduateCampaignExperimentResponse graduated_campaign. */
                        public graduated_campaign: string;

                        /**
                         * Creates a new GraduateCampaignExperimentResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GraduateCampaignExperimentResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGraduateCampaignExperimentResponse): google.ads.googleads.v8.services.GraduateCampaignExperimentResponse;

                        /**
                         * Encodes the specified GraduateCampaignExperimentResponse message. Does not implicitly {@link google.ads.googleads.v8.services.GraduateCampaignExperimentResponse.verify|verify} messages.
                         * @param m GraduateCampaignExperimentResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGraduateCampaignExperimentResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GraduateCampaignExperimentResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GraduateCampaignExperimentResponse.verify|verify} messages.
                         * @param message GraduateCampaignExperimentResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGraduateCampaignExperimentResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GraduateCampaignExperimentResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GraduateCampaignExperimentResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GraduateCampaignExperimentResponse;

                        /**
                         * Decodes a GraduateCampaignExperimentResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GraduateCampaignExperimentResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GraduateCampaignExperimentResponse;

                        /**
                         * Verifies a GraduateCampaignExperimentResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GraduateCampaignExperimentResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GraduateCampaignExperimentResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GraduateCampaignExperimentResponse;

                        /**
                         * Creates a plain object from a GraduateCampaignExperimentResponse message. Also converts values to other types if specified.
                         * @param m GraduateCampaignExperimentResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GraduateCampaignExperimentResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GraduateCampaignExperimentResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a PromoteCampaignExperimentRequest. */
                    interface IPromoteCampaignExperimentRequest {

                        /** PromoteCampaignExperimentRequest campaign_experiment */
                        campaign_experiment?: (string|null);

                        /** PromoteCampaignExperimentRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a PromoteCampaignExperimentRequest. */
                    class PromoteCampaignExperimentRequest implements IPromoteCampaignExperimentRequest {

                        /**
                         * Constructs a new PromoteCampaignExperimentRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IPromoteCampaignExperimentRequest);

                        /** PromoteCampaignExperimentRequest campaign_experiment. */
                        public campaign_experiment: string;

                        /** PromoteCampaignExperimentRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new PromoteCampaignExperimentRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PromoteCampaignExperimentRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IPromoteCampaignExperimentRequest): google.ads.googleads.v8.services.PromoteCampaignExperimentRequest;

                        /**
                         * Encodes the specified PromoteCampaignExperimentRequest message. Does not implicitly {@link google.ads.googleads.v8.services.PromoteCampaignExperimentRequest.verify|verify} messages.
                         * @param m PromoteCampaignExperimentRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IPromoteCampaignExperimentRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PromoteCampaignExperimentRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.PromoteCampaignExperimentRequest.verify|verify} messages.
                         * @param message PromoteCampaignExperimentRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IPromoteCampaignExperimentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PromoteCampaignExperimentRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns PromoteCampaignExperimentRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.PromoteCampaignExperimentRequest;

                        /**
                         * Decodes a PromoteCampaignExperimentRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PromoteCampaignExperimentRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.PromoteCampaignExperimentRequest;

                        /**
                         * Verifies a PromoteCampaignExperimentRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PromoteCampaignExperimentRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PromoteCampaignExperimentRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.PromoteCampaignExperimentRequest;

                        /**
                         * Creates a plain object from a PromoteCampaignExperimentRequest message. Also converts values to other types if specified.
                         * @param m PromoteCampaignExperimentRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.PromoteCampaignExperimentRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PromoteCampaignExperimentRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an EndCampaignExperimentRequest. */
                    interface IEndCampaignExperimentRequest {

                        /** EndCampaignExperimentRequest campaign_experiment */
                        campaign_experiment?: (string|null);

                        /** EndCampaignExperimentRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents an EndCampaignExperimentRequest. */
                    class EndCampaignExperimentRequest implements IEndCampaignExperimentRequest {

                        /**
                         * Constructs a new EndCampaignExperimentRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IEndCampaignExperimentRequest);

                        /** EndCampaignExperimentRequest campaign_experiment. */
                        public campaign_experiment: string;

                        /** EndCampaignExperimentRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new EndCampaignExperimentRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns EndCampaignExperimentRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IEndCampaignExperimentRequest): google.ads.googleads.v8.services.EndCampaignExperimentRequest;

                        /**
                         * Encodes the specified EndCampaignExperimentRequest message. Does not implicitly {@link google.ads.googleads.v8.services.EndCampaignExperimentRequest.verify|verify} messages.
                         * @param m EndCampaignExperimentRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IEndCampaignExperimentRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified EndCampaignExperimentRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.EndCampaignExperimentRequest.verify|verify} messages.
                         * @param message EndCampaignExperimentRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IEndCampaignExperimentRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an EndCampaignExperimentRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns EndCampaignExperimentRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.EndCampaignExperimentRequest;

                        /**
                         * Decodes an EndCampaignExperimentRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns EndCampaignExperimentRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.EndCampaignExperimentRequest;

                        /**
                         * Verifies an EndCampaignExperimentRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an EndCampaignExperimentRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns EndCampaignExperimentRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.EndCampaignExperimentRequest;

                        /**
                         * Creates a plain object from an EndCampaignExperimentRequest message. Also converts values to other types if specified.
                         * @param m EndCampaignExperimentRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.EndCampaignExperimentRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this EndCampaignExperimentRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ListCampaignExperimentAsyncErrorsRequest. */
                    interface IListCampaignExperimentAsyncErrorsRequest {

                        /** ListCampaignExperimentAsyncErrorsRequest resource_name */
                        resource_name?: (string|null);

                        /** ListCampaignExperimentAsyncErrorsRequest page_token */
                        page_token?: (string|null);

                        /** ListCampaignExperimentAsyncErrorsRequest page_size */
                        page_size?: (number|null);
                    }

                    /** Represents a ListCampaignExperimentAsyncErrorsRequest. */
                    class ListCampaignExperimentAsyncErrorsRequest implements IListCampaignExperimentAsyncErrorsRequest {

                        /**
                         * Constructs a new ListCampaignExperimentAsyncErrorsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IListCampaignExperimentAsyncErrorsRequest);

                        /** ListCampaignExperimentAsyncErrorsRequest resource_name. */
                        public resource_name: string;

                        /** ListCampaignExperimentAsyncErrorsRequest page_token. */
                        public page_token: string;

                        /** ListCampaignExperimentAsyncErrorsRequest page_size. */
                        public page_size: number;

                        /**
                         * Creates a new ListCampaignExperimentAsyncErrorsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListCampaignExperimentAsyncErrorsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IListCampaignExperimentAsyncErrorsRequest): google.ads.googleads.v8.services.ListCampaignExperimentAsyncErrorsRequest;

                        /**
                         * Encodes the specified ListCampaignExperimentAsyncErrorsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.ListCampaignExperimentAsyncErrorsRequest.verify|verify} messages.
                         * @param m ListCampaignExperimentAsyncErrorsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IListCampaignExperimentAsyncErrorsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListCampaignExperimentAsyncErrorsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.ListCampaignExperimentAsyncErrorsRequest.verify|verify} messages.
                         * @param message ListCampaignExperimentAsyncErrorsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IListCampaignExperimentAsyncErrorsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListCampaignExperimentAsyncErrorsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns ListCampaignExperimentAsyncErrorsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.ListCampaignExperimentAsyncErrorsRequest;

                        /**
                         * Decodes a ListCampaignExperimentAsyncErrorsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListCampaignExperimentAsyncErrorsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.ListCampaignExperimentAsyncErrorsRequest;

                        /**
                         * Verifies a ListCampaignExperimentAsyncErrorsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListCampaignExperimentAsyncErrorsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ListCampaignExperimentAsyncErrorsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ListCampaignExperimentAsyncErrorsRequest;

                        /**
                         * Creates a plain object from a ListCampaignExperimentAsyncErrorsRequest message. Also converts values to other types if specified.
                         * @param m ListCampaignExperimentAsyncErrorsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ListCampaignExperimentAsyncErrorsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListCampaignExperimentAsyncErrorsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ListCampaignExperimentAsyncErrorsResponse. */
                    interface IListCampaignExperimentAsyncErrorsResponse {

                        /** ListCampaignExperimentAsyncErrorsResponse errors */
                        errors?: (google.rpc.IStatus[]|null);

                        /** ListCampaignExperimentAsyncErrorsResponse next_page_token */
                        next_page_token?: (string|null);
                    }

                    /** Represents a ListCampaignExperimentAsyncErrorsResponse. */
                    class ListCampaignExperimentAsyncErrorsResponse implements IListCampaignExperimentAsyncErrorsResponse {

                        /**
                         * Constructs a new ListCampaignExperimentAsyncErrorsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IListCampaignExperimentAsyncErrorsResponse);

                        /** ListCampaignExperimentAsyncErrorsResponse errors. */
                        public errors: google.rpc.IStatus[];

                        /** ListCampaignExperimentAsyncErrorsResponse next_page_token. */
                        public next_page_token: string;

                        /**
                         * Creates a new ListCampaignExperimentAsyncErrorsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListCampaignExperimentAsyncErrorsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IListCampaignExperimentAsyncErrorsResponse): google.ads.googleads.v8.services.ListCampaignExperimentAsyncErrorsResponse;

                        /**
                         * Encodes the specified ListCampaignExperimentAsyncErrorsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.ListCampaignExperimentAsyncErrorsResponse.verify|verify} messages.
                         * @param m ListCampaignExperimentAsyncErrorsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IListCampaignExperimentAsyncErrorsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListCampaignExperimentAsyncErrorsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.ListCampaignExperimentAsyncErrorsResponse.verify|verify} messages.
                         * @param message ListCampaignExperimentAsyncErrorsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IListCampaignExperimentAsyncErrorsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListCampaignExperimentAsyncErrorsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns ListCampaignExperimentAsyncErrorsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.ListCampaignExperimentAsyncErrorsResponse;

                        /**
                         * Decodes a ListCampaignExperimentAsyncErrorsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListCampaignExperimentAsyncErrorsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.ListCampaignExperimentAsyncErrorsResponse;

                        /**
                         * Verifies a ListCampaignExperimentAsyncErrorsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListCampaignExperimentAsyncErrorsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ListCampaignExperimentAsyncErrorsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ListCampaignExperimentAsyncErrorsResponse;

                        /**
                         * Creates a plain object from a ListCampaignExperimentAsyncErrorsResponse message. Also converts values to other types if specified.
                         * @param m ListCampaignExperimentAsyncErrorsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ListCampaignExperimentAsyncErrorsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListCampaignExperimentAsyncErrorsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a CampaignExtensionSettingService */
                    class CampaignExtensionSettingService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CampaignExtensionSettingService 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 CampaignExtensionSettingService 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): CampaignExtensionSettingService;

                        /**
                         * Calls GetCampaignExtensionSetting.
                         * @param request GetCampaignExtensionSettingRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CampaignExtensionSetting
                         */
                        public getCampaignExtensionSetting(request: google.ads.googleads.v8.services.IGetCampaignExtensionSettingRequest, callback: google.ads.googleads.v8.services.CampaignExtensionSettingService.GetCampaignExtensionSettingCallback): void;

                        /**
                         * Calls GetCampaignExtensionSetting.
                         * @param request GetCampaignExtensionSettingRequest message or plain object
                         * @returns Promise
                         */
                        public getCampaignExtensionSetting(request: google.ads.googleads.v8.services.IGetCampaignExtensionSettingRequest): Promise<google.ads.googleads.v8.resources.CampaignExtensionSetting>;

                        /**
                         * Calls MutateCampaignExtensionSettings.
                         * @param request MutateCampaignExtensionSettingsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCampaignExtensionSettingsResponse
                         */
                        public mutateCampaignExtensionSettings(request: google.ads.googleads.v8.services.IMutateCampaignExtensionSettingsRequest, callback: google.ads.googleads.v8.services.CampaignExtensionSettingService.MutateCampaignExtensionSettingsCallback): void;

                        /**
                         * Calls MutateCampaignExtensionSettings.
                         * @param request MutateCampaignExtensionSettingsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCampaignExtensionSettings(request: google.ads.googleads.v8.services.IMutateCampaignExtensionSettingsRequest): Promise<google.ads.googleads.v8.services.MutateCampaignExtensionSettingsResponse>;
                    }

                    namespace CampaignExtensionSettingService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignExtensionSettingService#getCampaignExtensionSetting}.
                         * @param error Error, if any
                         * @param [response] CampaignExtensionSetting
                         */
                        type GetCampaignExtensionSettingCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CampaignExtensionSetting) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignExtensionSettingService#mutateCampaignExtensionSettings}.
                         * @param error Error, if any
                         * @param [response] MutateCampaignExtensionSettingsResponse
                         */
                        type MutateCampaignExtensionSettingsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateCampaignExtensionSettingsResponse) => void;
                    }

                    /** Properties of a GetCampaignExtensionSettingRequest. */
                    interface IGetCampaignExtensionSettingRequest {

                        /** GetCampaignExtensionSettingRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCampaignExtensionSettingRequest. */
                    class GetCampaignExtensionSettingRequest implements IGetCampaignExtensionSettingRequest {

                        /**
                         * Constructs a new GetCampaignExtensionSettingRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCampaignExtensionSettingRequest);

                        /** GetCampaignExtensionSettingRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCampaignExtensionSettingRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCampaignExtensionSettingRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCampaignExtensionSettingRequest): google.ads.googleads.v8.services.GetCampaignExtensionSettingRequest;

                        /**
                         * Encodes the specified GetCampaignExtensionSettingRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignExtensionSettingRequest.verify|verify} messages.
                         * @param m GetCampaignExtensionSettingRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCampaignExtensionSettingRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCampaignExtensionSettingRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignExtensionSettingRequest.verify|verify} messages.
                         * @param message GetCampaignExtensionSettingRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCampaignExtensionSettingRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCampaignExtensionSettingRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCampaignExtensionSettingRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCampaignExtensionSettingRequest;

                        /**
                         * Decodes a GetCampaignExtensionSettingRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCampaignExtensionSettingRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCampaignExtensionSettingRequest;

                        /**
                         * Verifies a GetCampaignExtensionSettingRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCampaignExtensionSettingRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCampaignExtensionSettingRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCampaignExtensionSettingRequest;

                        /**
                         * Creates a plain object from a GetCampaignExtensionSettingRequest message. Also converts values to other types if specified.
                         * @param m GetCampaignExtensionSettingRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCampaignExtensionSettingRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCampaignExtensionSettingRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignExtensionSettingsRequest. */
                    interface IMutateCampaignExtensionSettingsRequest {

                        /** MutateCampaignExtensionSettingsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCampaignExtensionSettingsRequest operations */
                        operations?: (google.ads.googleads.v8.services.ICampaignExtensionSettingOperation[]|null);

                        /** MutateCampaignExtensionSettingsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateCampaignExtensionSettingsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateCampaignExtensionSettingsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCampaignExtensionSettingsRequest. */
                    class MutateCampaignExtensionSettingsRequest implements IMutateCampaignExtensionSettingsRequest {

                        /**
                         * Constructs a new MutateCampaignExtensionSettingsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignExtensionSettingsRequest);

                        /** MutateCampaignExtensionSettingsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCampaignExtensionSettingsRequest operations. */
                        public operations: google.ads.googleads.v8.services.ICampaignExtensionSettingOperation[];

                        /** MutateCampaignExtensionSettingsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateCampaignExtensionSettingsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateCampaignExtensionSettingsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateCampaignExtensionSettingsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignExtensionSettingsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateCampaignExtensionSettingsRequest): google.ads.googleads.v8.services.MutateCampaignExtensionSettingsRequest;

                        /**
                         * Encodes the specified MutateCampaignExtensionSettingsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignExtensionSettingsRequest.verify|verify} messages.
                         * @param m MutateCampaignExtensionSettingsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignExtensionSettingsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignExtensionSettingsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignExtensionSettingsRequest.verify|verify} messages.
                         * @param message MutateCampaignExtensionSettingsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateCampaignExtensionSettingsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignExtensionSettingsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateCampaignExtensionSettingsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateCampaignExtensionSettingsRequest;

                        /**
                         * Decodes a MutateCampaignExtensionSettingsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignExtensionSettingsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateCampaignExtensionSettingsRequest;

                        /**
                         * Verifies a MutateCampaignExtensionSettingsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignExtensionSettingsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignExtensionSettingsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignExtensionSettingsRequest;

                        /**
                         * Creates a plain object from a MutateCampaignExtensionSettingsRequest message. Also converts values to other types if specified.
                         * @param m MutateCampaignExtensionSettingsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignExtensionSettingsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignExtensionSettingsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CampaignExtensionSettingOperation. */
                    interface ICampaignExtensionSettingOperation {

                        /** CampaignExtensionSettingOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignExtensionSettingOperation create */
                        create?: (google.ads.googleads.v8.resources.ICampaignExtensionSetting|null);

                        /** CampaignExtensionSettingOperation update */
                        update?: (google.ads.googleads.v8.resources.ICampaignExtensionSetting|null);

                        /** CampaignExtensionSettingOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CampaignExtensionSettingOperation. */
                    class CampaignExtensionSettingOperation implements ICampaignExtensionSettingOperation {

                        /**
                         * Constructs a new CampaignExtensionSettingOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICampaignExtensionSettingOperation);

                        /** CampaignExtensionSettingOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignExtensionSettingOperation create. */
                        public create?: (google.ads.googleads.v8.resources.ICampaignExtensionSetting|null);

                        /** CampaignExtensionSettingOperation update. */
                        public update?: (google.ads.googleads.v8.resources.ICampaignExtensionSetting|null);

                        /** CampaignExtensionSettingOperation remove. */
                        public remove?: (string|null);

                        /** CampaignExtensionSettingOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new CampaignExtensionSettingOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignExtensionSettingOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.ICampaignExtensionSettingOperation): google.ads.googleads.v8.services.CampaignExtensionSettingOperation;

                        /**
                         * Encodes the specified CampaignExtensionSettingOperation message. Does not implicitly {@link google.ads.googleads.v8.services.CampaignExtensionSettingOperation.verify|verify} messages.
                         * @param m CampaignExtensionSettingOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICampaignExtensionSettingOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignExtensionSettingOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.CampaignExtensionSettingOperation.verify|verify} messages.
                         * @param message CampaignExtensionSettingOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.ICampaignExtensionSettingOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignExtensionSettingOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns CampaignExtensionSettingOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.CampaignExtensionSettingOperation;

                        /**
                         * Decodes a CampaignExtensionSettingOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignExtensionSettingOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.CampaignExtensionSettingOperation;

                        /**
                         * Verifies a CampaignExtensionSettingOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignExtensionSettingOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignExtensionSettingOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CampaignExtensionSettingOperation;

                        /**
                         * Creates a plain object from a CampaignExtensionSettingOperation message. Also converts values to other types if specified.
                         * @param m CampaignExtensionSettingOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CampaignExtensionSettingOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignExtensionSettingOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignExtensionSettingsResponse. */
                    interface IMutateCampaignExtensionSettingsResponse {

                        /** MutateCampaignExtensionSettingsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignExtensionSettingsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateCampaignExtensionSettingResult[]|null);
                    }

                    /** Represents a MutateCampaignExtensionSettingsResponse. */
                    class MutateCampaignExtensionSettingsResponse implements IMutateCampaignExtensionSettingsResponse {

                        /**
                         * Constructs a new MutateCampaignExtensionSettingsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignExtensionSettingsResponse);

                        /** MutateCampaignExtensionSettingsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignExtensionSettingsResponse results. */
                        public results: google.ads.googleads.v8.services.IMutateCampaignExtensionSettingResult[];

                        /**
                         * Creates a new MutateCampaignExtensionSettingsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignExtensionSettingsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateCampaignExtensionSettingsResponse): google.ads.googleads.v8.services.MutateCampaignExtensionSettingsResponse;

                        /**
                         * Encodes the specified MutateCampaignExtensionSettingsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignExtensionSettingsResponse.verify|verify} messages.
                         * @param m MutateCampaignExtensionSettingsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignExtensionSettingsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignExtensionSettingsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignExtensionSettingsResponse.verify|verify} messages.
                         * @param message MutateCampaignExtensionSettingsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateCampaignExtensionSettingsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignExtensionSettingsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateCampaignExtensionSettingsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateCampaignExtensionSettingsResponse;

                        /**
                         * Decodes a MutateCampaignExtensionSettingsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignExtensionSettingsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateCampaignExtensionSettingsResponse;

                        /**
                         * Verifies a MutateCampaignExtensionSettingsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignExtensionSettingsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignExtensionSettingsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignExtensionSettingsResponse;

                        /**
                         * Creates a plain object from a MutateCampaignExtensionSettingsResponse message. Also converts values to other types if specified.
                         * @param m MutateCampaignExtensionSettingsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignExtensionSettingsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignExtensionSettingsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignExtensionSettingResult. */
                    interface IMutateCampaignExtensionSettingResult {

                        /** MutateCampaignExtensionSettingResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCampaignExtensionSettingResult campaign_extension_setting */
                        campaign_extension_setting?: (google.ads.googleads.v8.resources.ICampaignExtensionSetting|null);
                    }

                    /** Represents a MutateCampaignExtensionSettingResult. */
                    class MutateCampaignExtensionSettingResult implements IMutateCampaignExtensionSettingResult {

                        /**
                         * Constructs a new MutateCampaignExtensionSettingResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignExtensionSettingResult);

                        /** MutateCampaignExtensionSettingResult resource_name. */
                        public resource_name: string;

                        /** MutateCampaignExtensionSettingResult campaign_extension_setting. */
                        public campaign_extension_setting?: (google.ads.googleads.v8.resources.ICampaignExtensionSetting|null);

                        /**
                         * Creates a new MutateCampaignExtensionSettingResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignExtensionSettingResult instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateCampaignExtensionSettingResult): google.ads.googleads.v8.services.MutateCampaignExtensionSettingResult;

                        /**
                         * Encodes the specified MutateCampaignExtensionSettingResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignExtensionSettingResult.verify|verify} messages.
                         * @param m MutateCampaignExtensionSettingResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignExtensionSettingResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignExtensionSettingResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignExtensionSettingResult.verify|verify} messages.
                         * @param message MutateCampaignExtensionSettingResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateCampaignExtensionSettingResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignExtensionSettingResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateCampaignExtensionSettingResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateCampaignExtensionSettingResult;

                        /**
                         * Decodes a MutateCampaignExtensionSettingResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignExtensionSettingResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateCampaignExtensionSettingResult;

                        /**
                         * Verifies a MutateCampaignExtensionSettingResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignExtensionSettingResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignExtensionSettingResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignExtensionSettingResult;

                        /**
                         * Creates a plain object from a MutateCampaignExtensionSettingResult message. Also converts values to other types if specified.
                         * @param m MutateCampaignExtensionSettingResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignExtensionSettingResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignExtensionSettingResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a CampaignFeedService */
                    class CampaignFeedService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CampaignFeedService 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 CampaignFeedService 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): CampaignFeedService;

                        /**
                         * Calls GetCampaignFeed.
                         * @param request GetCampaignFeedRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CampaignFeed
                         */
                        public getCampaignFeed(request: google.ads.googleads.v8.services.IGetCampaignFeedRequest, callback: google.ads.googleads.v8.services.CampaignFeedService.GetCampaignFeedCallback): void;

                        /**
                         * Calls GetCampaignFeed.
                         * @param request GetCampaignFeedRequest message or plain object
                         * @returns Promise
                         */
                        public getCampaignFeed(request: google.ads.googleads.v8.services.IGetCampaignFeedRequest): Promise<google.ads.googleads.v8.resources.CampaignFeed>;

                        /**
                         * Calls MutateCampaignFeeds.
                         * @param request MutateCampaignFeedsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCampaignFeedsResponse
                         */
                        public mutateCampaignFeeds(request: google.ads.googleads.v8.services.IMutateCampaignFeedsRequest, callback: google.ads.googleads.v8.services.CampaignFeedService.MutateCampaignFeedsCallback): void;

                        /**
                         * Calls MutateCampaignFeeds.
                         * @param request MutateCampaignFeedsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCampaignFeeds(request: google.ads.googleads.v8.services.IMutateCampaignFeedsRequest): Promise<google.ads.googleads.v8.services.MutateCampaignFeedsResponse>;
                    }

                    namespace CampaignFeedService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignFeedService#getCampaignFeed}.
                         * @param error Error, if any
                         * @param [response] CampaignFeed
                         */
                        type GetCampaignFeedCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CampaignFeed) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignFeedService#mutateCampaignFeeds}.
                         * @param error Error, if any
                         * @param [response] MutateCampaignFeedsResponse
                         */
                        type MutateCampaignFeedsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateCampaignFeedsResponse) => void;
                    }

                    /** Properties of a GetCampaignFeedRequest. */
                    interface IGetCampaignFeedRequest {

                        /** GetCampaignFeedRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCampaignFeedRequest. */
                    class GetCampaignFeedRequest implements IGetCampaignFeedRequest {

                        /**
                         * Constructs a new GetCampaignFeedRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCampaignFeedRequest);

                        /** GetCampaignFeedRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCampaignFeedRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCampaignFeedRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCampaignFeedRequest): google.ads.googleads.v8.services.GetCampaignFeedRequest;

                        /**
                         * Encodes the specified GetCampaignFeedRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignFeedRequest.verify|verify} messages.
                         * @param m GetCampaignFeedRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCampaignFeedRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCampaignFeedRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignFeedRequest.verify|verify} messages.
                         * @param message GetCampaignFeedRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCampaignFeedRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCampaignFeedRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCampaignFeedRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCampaignFeedRequest;

                        /**
                         * Decodes a GetCampaignFeedRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCampaignFeedRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCampaignFeedRequest;

                        /**
                         * Verifies a GetCampaignFeedRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCampaignFeedRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCampaignFeedRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCampaignFeedRequest;

                        /**
                         * Creates a plain object from a GetCampaignFeedRequest message. Also converts values to other types if specified.
                         * @param m GetCampaignFeedRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCampaignFeedRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCampaignFeedRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignFeedsRequest. */
                    interface IMutateCampaignFeedsRequest {

                        /** MutateCampaignFeedsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCampaignFeedsRequest operations */
                        operations?: (google.ads.googleads.v8.services.ICampaignFeedOperation[]|null);

                        /** MutateCampaignFeedsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateCampaignFeedsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateCampaignFeedsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCampaignFeedsRequest. */
                    class MutateCampaignFeedsRequest implements IMutateCampaignFeedsRequest {

                        /**
                         * Constructs a new MutateCampaignFeedsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignFeedsRequest);

                        /** MutateCampaignFeedsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCampaignFeedsRequest operations. */
                        public operations: google.ads.googleads.v8.services.ICampaignFeedOperation[];

                        /** MutateCampaignFeedsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateCampaignFeedsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateCampaignFeedsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateCampaignFeedsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignFeedsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateCampaignFeedsRequest): google.ads.googleads.v8.services.MutateCampaignFeedsRequest;

                        /**
                         * Encodes the specified MutateCampaignFeedsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignFeedsRequest.verify|verify} messages.
                         * @param m MutateCampaignFeedsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignFeedsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignFeedsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignFeedsRequest.verify|verify} messages.
                         * @param message MutateCampaignFeedsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateCampaignFeedsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignFeedsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateCampaignFeedsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateCampaignFeedsRequest;

                        /**
                         * Decodes a MutateCampaignFeedsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignFeedsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateCampaignFeedsRequest;

                        /**
                         * Verifies a MutateCampaignFeedsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignFeedsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignFeedsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignFeedsRequest;

                        /**
                         * Creates a plain object from a MutateCampaignFeedsRequest message. Also converts values to other types if specified.
                         * @param m MutateCampaignFeedsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignFeedsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignFeedsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CampaignFeedOperation. */
                    interface ICampaignFeedOperation {

                        /** CampaignFeedOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignFeedOperation create */
                        create?: (google.ads.googleads.v8.resources.ICampaignFeed|null);

                        /** CampaignFeedOperation update */
                        update?: (google.ads.googleads.v8.resources.ICampaignFeed|null);

                        /** CampaignFeedOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CampaignFeedOperation. */
                    class CampaignFeedOperation implements ICampaignFeedOperation {

                        /**
                         * Constructs a new CampaignFeedOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICampaignFeedOperation);

                        /** CampaignFeedOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignFeedOperation create. */
                        public create?: (google.ads.googleads.v8.resources.ICampaignFeed|null);

                        /** CampaignFeedOperation update. */
                        public update?: (google.ads.googleads.v8.resources.ICampaignFeed|null);

                        /** CampaignFeedOperation remove. */
                        public remove?: (string|null);

                        /** CampaignFeedOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new CampaignFeedOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignFeedOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.ICampaignFeedOperation): google.ads.googleads.v8.services.CampaignFeedOperation;

                        /**
                         * Encodes the specified CampaignFeedOperation message. Does not implicitly {@link google.ads.googleads.v8.services.CampaignFeedOperation.verify|verify} messages.
                         * @param m CampaignFeedOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICampaignFeedOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignFeedOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.CampaignFeedOperation.verify|verify} messages.
                         * @param message CampaignFeedOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.ICampaignFeedOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignFeedOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns CampaignFeedOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.CampaignFeedOperation;

                        /**
                         * Decodes a CampaignFeedOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CampaignFeedOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.CampaignFeedOperation;

                        /**
                         * Verifies a CampaignFeedOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignFeedOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignFeedOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CampaignFeedOperation;

                        /**
                         * Creates a plain object from a CampaignFeedOperation message. Also converts values to other types if specified.
                         * @param m CampaignFeedOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CampaignFeedOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignFeedOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignFeedsResponse. */
                    interface IMutateCampaignFeedsResponse {

                        /** MutateCampaignFeedsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignFeedsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateCampaignFeedResult[]|null);
                    }

                    /** Represents a MutateCampaignFeedsResponse. */
                    class MutateCampaignFeedsResponse implements IMutateCampaignFeedsResponse {

                        /**
                         * Constructs a new MutateCampaignFeedsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignFeedsResponse);

                        /** MutateCampaignFeedsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignFeedsResponse results. */
                        public results: google.ads.googleads.v8.services.IMutateCampaignFeedResult[];

                        /**
                         * Creates a new MutateCampaignFeedsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignFeedsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateCampaignFeedsResponse): google.ads.googleads.v8.services.MutateCampaignFeedsResponse;

                        /**
                         * Encodes the specified MutateCampaignFeedsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignFeedsResponse.verify|verify} messages.
                         * @param m MutateCampaignFeedsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignFeedsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignFeedsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignFeedsResponse.verify|verify} messages.
                         * @param message MutateCampaignFeedsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateCampaignFeedsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignFeedsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateCampaignFeedsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateCampaignFeedsResponse;

                        /**
                         * Decodes a MutateCampaignFeedsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignFeedsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateCampaignFeedsResponse;

                        /**
                         * Verifies a MutateCampaignFeedsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignFeedsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignFeedsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignFeedsResponse;

                        /**
                         * Creates a plain object from a MutateCampaignFeedsResponse message. Also converts values to other types if specified.
                         * @param m MutateCampaignFeedsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignFeedsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignFeedsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignFeedResult. */
                    interface IMutateCampaignFeedResult {

                        /** MutateCampaignFeedResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCampaignFeedResult campaign_feed */
                        campaign_feed?: (google.ads.googleads.v8.resources.ICampaignFeed|null);
                    }

                    /** Represents a MutateCampaignFeedResult. */
                    class MutateCampaignFeedResult implements IMutateCampaignFeedResult {

                        /**
                         * Constructs a new MutateCampaignFeedResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignFeedResult);

                        /** MutateCampaignFeedResult resource_name. */
                        public resource_name: string;

                        /** MutateCampaignFeedResult campaign_feed. */
                        public campaign_feed?: (google.ads.googleads.v8.resources.ICampaignFeed|null);

                        /**
                         * Creates a new MutateCampaignFeedResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCampaignFeedResult instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateCampaignFeedResult): google.ads.googleads.v8.services.MutateCampaignFeedResult;

                        /**
                         * Encodes the specified MutateCampaignFeedResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignFeedResult.verify|verify} messages.
                         * @param m MutateCampaignFeedResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignFeedResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignFeedResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignFeedResult.verify|verify} messages.
                         * @param message MutateCampaignFeedResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateCampaignFeedResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignFeedResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateCampaignFeedResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateCampaignFeedResult;

                        /**
                         * Decodes a MutateCampaignFeedResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCampaignFeedResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateCampaignFeedResult;

                        /**
                         * Verifies a MutateCampaignFeedResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignFeedResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignFeedResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignFeedResult;

                        /**
                         * Creates a plain object from a MutateCampaignFeedResult message. Also converts values to other types if specified.
                         * @param m MutateCampaignFeedResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignFeedResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignFeedResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetCampaignLabel.
                         * @param request GetCampaignLabelRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CampaignLabel
                         */
                        public getCampaignLabel(request: google.ads.googleads.v8.services.IGetCampaignLabelRequest, callback: google.ads.googleads.v8.services.CampaignLabelService.GetCampaignLabelCallback): void;

                        /**
                         * Calls GetCampaignLabel.
                         * @param request GetCampaignLabelRequest message or plain object
                         * @returns Promise
                         */
                        public getCampaignLabel(request: google.ads.googleads.v8.services.IGetCampaignLabelRequest): Promise<google.ads.googleads.v8.resources.CampaignLabel>;

                        /**
                         * 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.v8.services.IMutateCampaignLabelsRequest, callback: google.ads.googleads.v8.services.CampaignLabelService.MutateCampaignLabelsCallback): void;

                        /**
                         * Calls MutateCampaignLabels.
                         * @param request MutateCampaignLabelsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCampaignLabels(request: google.ads.googleads.v8.services.IMutateCampaignLabelsRequest): Promise<google.ads.googleads.v8.services.MutateCampaignLabelsResponse>;
                    }

                    namespace CampaignLabelService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignLabelService#getCampaignLabel}.
                         * @param error Error, if any
                         * @param [response] CampaignLabel
                         */
                        type GetCampaignLabelCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CampaignLabel) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignLabelService#mutateCampaignLabels}.
                         * @param error Error, if any
                         * @param [response] MutateCampaignLabelsResponse
                         */
                        type MutateCampaignLabelsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateCampaignLabelsResponse) => void;
                    }

                    /** Properties of a GetCampaignLabelRequest. */
                    interface IGetCampaignLabelRequest {

                        /** GetCampaignLabelRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCampaignLabelRequest. */
                    class GetCampaignLabelRequest implements IGetCampaignLabelRequest {

                        /**
                         * Constructs a new GetCampaignLabelRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCampaignLabelRequest);

                        /** GetCampaignLabelRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCampaignLabelRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCampaignLabelRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCampaignLabelRequest): google.ads.googleads.v8.services.GetCampaignLabelRequest;

                        /**
                         * Encodes the specified GetCampaignLabelRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignLabelRequest.verify|verify} messages.
                         * @param m GetCampaignLabelRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCampaignLabelRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCampaignLabelRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignLabelRequest.verify|verify} messages.
                         * @param message GetCampaignLabelRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCampaignLabelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCampaignLabelRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCampaignLabelRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCampaignLabelRequest;

                        /**
                         * Decodes a GetCampaignLabelRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCampaignLabelRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCampaignLabelRequest;

                        /**
                         * Verifies a GetCampaignLabelRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCampaignLabelRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCampaignLabelRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCampaignLabelRequest;

                        /**
                         * Creates a plain object from a GetCampaignLabelRequest message. Also converts values to other types if specified.
                         * @param m GetCampaignLabelRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCampaignLabelRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCampaignLabelRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignLabelsRequest. */
                    interface IMutateCampaignLabelsRequest {

                        /** MutateCampaignLabelsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCampaignLabelsRequest operations */
                        operations?: (google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignLabelsRequest);

                        /** MutateCampaignLabelsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCampaignLabelsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.services.IMutateCampaignLabelsRequest): google.ads.googleads.v8.services.MutateCampaignLabelsRequest;

                        /**
                         * Encodes the specified MutateCampaignLabelsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignLabelsRequest.verify|verify} messages.
                         * @param m MutateCampaignLabelsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignLabelsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignLabelsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCampaignLabelsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignLabelsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCampaignLabelsRequest;

                        /**
                         * Verifies a MutateCampaignLabelsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignLabelsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignLabelsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignLabelsRequest;

                        /**
                         * Creates a plain object from a MutateCampaignLabelsRequest message. Also converts values to other types if specified.
                         * @param m MutateCampaignLabelsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignLabelsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignLabelsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CampaignLabelOperation. */
                    interface ICampaignLabelOperation {

                        /** CampaignLabelOperation create */
                        create?: (google.ads.googleads.v8.resources.ICampaignLabel|null);

                        /** CampaignLabelOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CampaignLabelOperation. */
                    class CampaignLabelOperation implements ICampaignLabelOperation {

                        /**
                         * Constructs a new CampaignLabelOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICampaignLabelOperation);

                        /** CampaignLabelOperation create. */
                        public create?: (google.ads.googleads.v8.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.v8.services.ICampaignLabelOperation): google.ads.googleads.v8.services.CampaignLabelOperation;

                        /**
                         * Encodes the specified CampaignLabelOperation message. Does not implicitly {@link google.ads.googleads.v8.services.CampaignLabelOperation.verify|verify} messages.
                         * @param m CampaignLabelOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICampaignLabelOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignLabelOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICampaignLabelOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignLabelOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CampaignLabelOperation;

                        /**
                         * Verifies a CampaignLabelOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignLabelOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignLabelOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CampaignLabelOperation;

                        /**
                         * Creates a plain object from a CampaignLabelOperation message. Also converts values to other types if specified.
                         * @param m CampaignLabelOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CampaignLabelOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignLabelOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignLabelsResponse. */
                    interface IMutateCampaignLabelsResponse {

                        /** MutateCampaignLabelsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignLabelsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateCampaignLabelResult[]|null);
                    }

                    /** Represents a MutateCampaignLabelsResponse. */
                    class MutateCampaignLabelsResponse implements IMutateCampaignLabelsResponse {

                        /**
                         * Constructs a new MutateCampaignLabelsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignLabelsResponse);

                        /** MutateCampaignLabelsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignLabelsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateCampaignLabelsResponse): google.ads.googleads.v8.services.MutateCampaignLabelsResponse;

                        /**
                         * Encodes the specified MutateCampaignLabelsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignLabelsResponse.verify|verify} messages.
                         * @param m MutateCampaignLabelsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignLabelsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignLabelsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCampaignLabelsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignLabelsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCampaignLabelsResponse;

                        /**
                         * Verifies a MutateCampaignLabelsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignLabelsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignLabelsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignLabelsResponse;

                        /**
                         * Creates a plain object from a MutateCampaignLabelsResponse message. Also converts values to other types if specified.
                         * @param m MutateCampaignLabelsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignLabelsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignLabelsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IMutateCampaignLabelResult): google.ads.googleads.v8.services.MutateCampaignLabelResult;

                        /**
                         * Encodes the specified MutateCampaignLabelResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignLabelResult.verify|verify} messages.
                         * @param m MutateCampaignLabelResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignLabelResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignLabelResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCampaignLabelResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignLabelResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCampaignLabelResult;

                        /**
                         * Verifies a MutateCampaignLabelResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignLabelResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignLabelResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignLabelResult;

                        /**
                         * Creates a plain object from a MutateCampaignLabelResult message. Also converts values to other types if specified.
                         * @param m MutateCampaignLabelResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignLabelResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignLabelResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetCampaign.
                         * @param request GetCampaignRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Campaign
                         */
                        public getCampaign(request: google.ads.googleads.v8.services.IGetCampaignRequest, callback: google.ads.googleads.v8.services.CampaignService.GetCampaignCallback): void;

                        /**
                         * Calls GetCampaign.
                         * @param request GetCampaignRequest message or plain object
                         * @returns Promise
                         */
                        public getCampaign(request: google.ads.googleads.v8.services.IGetCampaignRequest): Promise<google.ads.googleads.v8.resources.Campaign>;

                        /**
                         * 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.v8.services.IMutateCampaignsRequest, callback: google.ads.googleads.v8.services.CampaignService.MutateCampaignsCallback): void;

                        /**
                         * Calls MutateCampaigns.
                         * @param request MutateCampaignsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCampaigns(request: google.ads.googleads.v8.services.IMutateCampaignsRequest): Promise<google.ads.googleads.v8.services.MutateCampaignsResponse>;
                    }

                    namespace CampaignService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignService#getCampaign}.
                         * @param error Error, if any
                         * @param [response] Campaign
                         */
                        type GetCampaignCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.Campaign) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignService#mutateCampaigns}.
                         * @param error Error, if any
                         * @param [response] MutateCampaignsResponse
                         */
                        type MutateCampaignsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateCampaignsResponse) => void;
                    }

                    /** Properties of a GetCampaignRequest. */
                    interface IGetCampaignRequest {

                        /** GetCampaignRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCampaignRequest. */
                    class GetCampaignRequest implements IGetCampaignRequest {

                        /**
                         * Constructs a new GetCampaignRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCampaignRequest);

                        /** GetCampaignRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCampaignRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCampaignRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCampaignRequest): google.ads.googleads.v8.services.GetCampaignRequest;

                        /**
                         * Encodes the specified GetCampaignRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignRequest.verify|verify} messages.
                         * @param m GetCampaignRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCampaignRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCampaignRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignRequest.verify|verify} messages.
                         * @param message GetCampaignRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCampaignRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCampaignRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCampaignRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCampaignRequest;

                        /**
                         * Decodes a GetCampaignRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCampaignRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCampaignRequest;

                        /**
                         * Verifies a GetCampaignRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCampaignRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCampaignRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCampaignRequest;

                        /**
                         * Creates a plain object from a GetCampaignRequest message. Also converts values to other types if specified.
                         * @param m GetCampaignRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCampaignRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCampaignRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignsRequest. */
                    interface IMutateCampaignsRequest {

                        /** MutateCampaignsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCampaignsRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCampaignsRequest. */
                    class MutateCampaignsRequest implements IMutateCampaignsRequest {

                        /**
                         * Constructs a new MutateCampaignsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignsRequest);

                        /** MutateCampaignsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCampaignsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateCampaignsRequest): google.ads.googleads.v8.services.MutateCampaignsRequest;

                        /**
                         * Encodes the specified MutateCampaignsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignsRequest.verify|verify} messages.
                         * @param m MutateCampaignsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCampaignsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCampaignsRequest;

                        /**
                         * Verifies a MutateCampaignsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignsRequest;

                        /**
                         * Creates a plain object from a MutateCampaignsRequest message. Also converts values to other types if specified.
                         * @param m MutateCampaignsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CampaignOperation. */
                    interface ICampaignOperation {

                        /** CampaignOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignOperation create */
                        create?: (google.ads.googleads.v8.resources.ICampaign|null);

                        /** CampaignOperation update */
                        update?: (google.ads.googleads.v8.resources.ICampaign|null);

                        /** CampaignOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CampaignOperation. */
                    class CampaignOperation implements ICampaignOperation {

                        /**
                         * Constructs a new CampaignOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICampaignOperation);

                        /** CampaignOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CampaignOperation create. */
                        public create?: (google.ads.googleads.v8.resources.ICampaign|null);

                        /** CampaignOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.ICampaignOperation): google.ads.googleads.v8.services.CampaignOperation;

                        /**
                         * Encodes the specified CampaignOperation message. Does not implicitly {@link google.ads.googleads.v8.services.CampaignOperation.verify|verify} messages.
                         * @param m CampaignOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICampaignOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICampaignOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CampaignOperation;

                        /**
                         * Verifies a CampaignOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CampaignOperation;

                        /**
                         * Creates a plain object from a CampaignOperation message. Also converts values to other types if specified.
                         * @param m CampaignOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CampaignOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignsResponse. */
                    interface IMutateCampaignsResponse {

                        /** MutateCampaignsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateCampaignResult[]|null);
                    }

                    /** Represents a MutateCampaignsResponse. */
                    class MutateCampaignsResponse implements IMutateCampaignsResponse {

                        /**
                         * Constructs a new MutateCampaignsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignsResponse);

                        /** MutateCampaignsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateCampaignsResponse): google.ads.googleads.v8.services.MutateCampaignsResponse;

                        /**
                         * Encodes the specified MutateCampaignsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignsResponse.verify|verify} messages.
                         * @param m MutateCampaignsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCampaignsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCampaignsResponse;

                        /**
                         * Verifies a MutateCampaignsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignsResponse;

                        /**
                         * Creates a plain object from a MutateCampaignsResponse message. Also converts values to other types if specified.
                         * @param m MutateCampaignsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignResult. */
                    interface IMutateCampaignResult {

                        /** MutateCampaignResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCampaignResult campaign */
                        campaign?: (google.ads.googleads.v8.resources.ICampaign|null);
                    }

                    /** Represents a MutateCampaignResult. */
                    class MutateCampaignResult implements IMutateCampaignResult {

                        /**
                         * Constructs a new MutateCampaignResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignResult);

                        /** MutateCampaignResult resource_name. */
                        public resource_name: string;

                        /** MutateCampaignResult campaign. */
                        public campaign?: (google.ads.googleads.v8.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.v8.services.IMutateCampaignResult): google.ads.googleads.v8.services.MutateCampaignResult;

                        /**
                         * Encodes the specified MutateCampaignResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignResult.verify|verify} messages.
                         * @param m MutateCampaignResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCampaignResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCampaignResult;

                        /**
                         * Verifies a MutateCampaignResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignResult;

                        /**
                         * Creates a plain object from a MutateCampaignResult message. Also converts values to other types if specified.
                         * @param m MutateCampaignResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetCampaignSharedSet.
                         * @param request GetCampaignSharedSetRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CampaignSharedSet
                         */
                        public getCampaignSharedSet(request: google.ads.googleads.v8.services.IGetCampaignSharedSetRequest, callback: google.ads.googleads.v8.services.CampaignSharedSetService.GetCampaignSharedSetCallback): void;

                        /**
                         * Calls GetCampaignSharedSet.
                         * @param request GetCampaignSharedSetRequest message or plain object
                         * @returns Promise
                         */
                        public getCampaignSharedSet(request: google.ads.googleads.v8.services.IGetCampaignSharedSetRequest): Promise<google.ads.googleads.v8.resources.CampaignSharedSet>;

                        /**
                         * 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.v8.services.IMutateCampaignSharedSetsRequest, callback: google.ads.googleads.v8.services.CampaignSharedSetService.MutateCampaignSharedSetsCallback): void;

                        /**
                         * Calls MutateCampaignSharedSets.
                         * @param request MutateCampaignSharedSetsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCampaignSharedSets(request: google.ads.googleads.v8.services.IMutateCampaignSharedSetsRequest): Promise<google.ads.googleads.v8.services.MutateCampaignSharedSetsResponse>;
                    }

                    namespace CampaignSharedSetService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignSharedSetService#getCampaignSharedSet}.
                         * @param error Error, if any
                         * @param [response] CampaignSharedSet
                         */
                        type GetCampaignSharedSetCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CampaignSharedSet) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignSharedSetService#mutateCampaignSharedSets}.
                         * @param error Error, if any
                         * @param [response] MutateCampaignSharedSetsResponse
                         */
                        type MutateCampaignSharedSetsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateCampaignSharedSetsResponse) => void;
                    }

                    /** Properties of a GetCampaignSharedSetRequest. */
                    interface IGetCampaignSharedSetRequest {

                        /** GetCampaignSharedSetRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCampaignSharedSetRequest. */
                    class GetCampaignSharedSetRequest implements IGetCampaignSharedSetRequest {

                        /**
                         * Constructs a new GetCampaignSharedSetRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCampaignSharedSetRequest);

                        /** GetCampaignSharedSetRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCampaignSharedSetRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCampaignSharedSetRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCampaignSharedSetRequest): google.ads.googleads.v8.services.GetCampaignSharedSetRequest;

                        /**
                         * Encodes the specified GetCampaignSharedSetRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignSharedSetRequest.verify|verify} messages.
                         * @param m GetCampaignSharedSetRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCampaignSharedSetRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCampaignSharedSetRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignSharedSetRequest.verify|verify} messages.
                         * @param message GetCampaignSharedSetRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCampaignSharedSetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCampaignSharedSetRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCampaignSharedSetRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCampaignSharedSetRequest;

                        /**
                         * Decodes a GetCampaignSharedSetRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCampaignSharedSetRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCampaignSharedSetRequest;

                        /**
                         * Verifies a GetCampaignSharedSetRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCampaignSharedSetRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCampaignSharedSetRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCampaignSharedSetRequest;

                        /**
                         * Creates a plain object from a GetCampaignSharedSetRequest message. Also converts values to other types if specified.
                         * @param m GetCampaignSharedSetRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCampaignSharedSetRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCampaignSharedSetRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignSharedSetsRequest. */
                    interface IMutateCampaignSharedSetsRequest {

                        /** MutateCampaignSharedSetsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCampaignSharedSetsRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCampaignSharedSetsRequest. */
                    class MutateCampaignSharedSetsRequest implements IMutateCampaignSharedSetsRequest {

                        /**
                         * Constructs a new MutateCampaignSharedSetsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignSharedSetsRequest);

                        /** MutateCampaignSharedSetsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCampaignSharedSetsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateCampaignSharedSetsRequest): google.ads.googleads.v8.services.MutateCampaignSharedSetsRequest;

                        /**
                         * Encodes the specified MutateCampaignSharedSetsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignSharedSetsRequest.verify|verify} messages.
                         * @param m MutateCampaignSharedSetsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignSharedSetsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignSharedSetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCampaignSharedSetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignSharedSetsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCampaignSharedSetsRequest;

                        /**
                         * Verifies a MutateCampaignSharedSetsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignSharedSetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignSharedSetsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignSharedSetsRequest;

                        /**
                         * Creates a plain object from a MutateCampaignSharedSetsRequest message. Also converts values to other types if specified.
                         * @param m MutateCampaignSharedSetsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignSharedSetsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignSharedSetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CampaignSharedSetOperation. */
                    interface ICampaignSharedSetOperation {

                        /** CampaignSharedSetOperation create */
                        create?: (google.ads.googleads.v8.resources.ICampaignSharedSet|null);

                        /** CampaignSharedSetOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CampaignSharedSetOperation. */
                    class CampaignSharedSetOperation implements ICampaignSharedSetOperation {

                        /**
                         * Constructs a new CampaignSharedSetOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICampaignSharedSetOperation);

                        /** CampaignSharedSetOperation create. */
                        public create?: (google.ads.googleads.v8.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.v8.services.ICampaignSharedSetOperation): google.ads.googleads.v8.services.CampaignSharedSetOperation;

                        /**
                         * Encodes the specified CampaignSharedSetOperation message. Does not implicitly {@link google.ads.googleads.v8.services.CampaignSharedSetOperation.verify|verify} messages.
                         * @param m CampaignSharedSetOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICampaignSharedSetOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignSharedSetOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICampaignSharedSetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignSharedSetOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CampaignSharedSetOperation;

                        /**
                         * Verifies a CampaignSharedSetOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignSharedSetOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignSharedSetOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CampaignSharedSetOperation;

                        /**
                         * Creates a plain object from a CampaignSharedSetOperation message. Also converts values to other types if specified.
                         * @param m CampaignSharedSetOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CampaignSharedSetOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignSharedSetOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignSharedSetsResponse. */
                    interface IMutateCampaignSharedSetsResponse {

                        /** MutateCampaignSharedSetsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignSharedSetsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateCampaignSharedSetResult[]|null);
                    }

                    /** Represents a MutateCampaignSharedSetsResponse. */
                    class MutateCampaignSharedSetsResponse implements IMutateCampaignSharedSetsResponse {

                        /**
                         * Constructs a new MutateCampaignSharedSetsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignSharedSetsResponse);

                        /** MutateCampaignSharedSetsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCampaignSharedSetsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateCampaignSharedSetsResponse): google.ads.googleads.v8.services.MutateCampaignSharedSetsResponse;

                        /**
                         * Encodes the specified MutateCampaignSharedSetsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignSharedSetsResponse.verify|verify} messages.
                         * @param m MutateCampaignSharedSetsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignSharedSetsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignSharedSetsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCampaignSharedSetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignSharedSetsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCampaignSharedSetsResponse;

                        /**
                         * Verifies a MutateCampaignSharedSetsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignSharedSetsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignSharedSetsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignSharedSetsResponse;

                        /**
                         * Creates a plain object from a MutateCampaignSharedSetsResponse message. Also converts values to other types if specified.
                         * @param m MutateCampaignSharedSetsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignSharedSetsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignSharedSetsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCampaignSharedSetResult. */
                    interface IMutateCampaignSharedSetResult {

                        /** MutateCampaignSharedSetResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCampaignSharedSetResult campaign_shared_set */
                        campaign_shared_set?: (google.ads.googleads.v8.resources.ICampaignSharedSet|null);
                    }

                    /** Represents a MutateCampaignSharedSetResult. */
                    class MutateCampaignSharedSetResult implements IMutateCampaignSharedSetResult {

                        /**
                         * Constructs a new MutateCampaignSharedSetResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCampaignSharedSetResult);

                        /** MutateCampaignSharedSetResult resource_name. */
                        public resource_name: string;

                        /** MutateCampaignSharedSetResult campaign_shared_set. */
                        public campaign_shared_set?: (google.ads.googleads.v8.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.v8.services.IMutateCampaignSharedSetResult): google.ads.googleads.v8.services.MutateCampaignSharedSetResult;

                        /**
                         * Encodes the specified MutateCampaignSharedSetResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCampaignSharedSetResult.verify|verify} messages.
                         * @param m MutateCampaignSharedSetResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCampaignSharedSetResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCampaignSharedSetResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCampaignSharedSetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCampaignSharedSetResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCampaignSharedSetResult;

                        /**
                         * Verifies a MutateCampaignSharedSetResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCampaignSharedSetResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCampaignSharedSetResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCampaignSharedSetResult;

                        /**
                         * Creates a plain object from a MutateCampaignSharedSetResult message. Also converts values to other types if specified.
                         * @param m MutateCampaignSharedSetResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCampaignSharedSetResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCampaignSharedSetResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetConversionAction.
                         * @param request GetConversionActionRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ConversionAction
                         */
                        public getConversionAction(request: google.ads.googleads.v8.services.IGetConversionActionRequest, callback: google.ads.googleads.v8.services.ConversionActionService.GetConversionActionCallback): void;

                        /**
                         * Calls GetConversionAction.
                         * @param request GetConversionActionRequest message or plain object
                         * @returns Promise
                         */
                        public getConversionAction(request: google.ads.googleads.v8.services.IGetConversionActionRequest): Promise<google.ads.googleads.v8.resources.ConversionAction>;

                        /**
                         * 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.v8.services.IMutateConversionActionsRequest, callback: google.ads.googleads.v8.services.ConversionActionService.MutateConversionActionsCallback): void;

                        /**
                         * Calls MutateConversionActions.
                         * @param request MutateConversionActionsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateConversionActions(request: google.ads.googleads.v8.services.IMutateConversionActionsRequest): Promise<google.ads.googleads.v8.services.MutateConversionActionsResponse>;
                    }

                    namespace ConversionActionService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ConversionActionService#getConversionAction}.
                         * @param error Error, if any
                         * @param [response] ConversionAction
                         */
                        type GetConversionActionCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.ConversionAction) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ConversionActionService#mutateConversionActions}.
                         * @param error Error, if any
                         * @param [response] MutateConversionActionsResponse
                         */
                        type MutateConversionActionsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateConversionActionsResponse) => void;
                    }

                    /** Properties of a GetConversionActionRequest. */
                    interface IGetConversionActionRequest {

                        /** GetConversionActionRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetConversionActionRequest. */
                    class GetConversionActionRequest implements IGetConversionActionRequest {

                        /**
                         * Constructs a new GetConversionActionRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetConversionActionRequest);

                        /** GetConversionActionRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetConversionActionRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetConversionActionRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetConversionActionRequest): google.ads.googleads.v8.services.GetConversionActionRequest;

                        /**
                         * Encodes the specified GetConversionActionRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetConversionActionRequest.verify|verify} messages.
                         * @param m GetConversionActionRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetConversionActionRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetConversionActionRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetConversionActionRequest.verify|verify} messages.
                         * @param message GetConversionActionRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetConversionActionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetConversionActionRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetConversionActionRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetConversionActionRequest;

                        /**
                         * Decodes a GetConversionActionRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetConversionActionRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetConversionActionRequest;

                        /**
                         * Verifies a GetConversionActionRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetConversionActionRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetConversionActionRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetConversionActionRequest;

                        /**
                         * Creates a plain object from a GetConversionActionRequest message. Also converts values to other types if specified.
                         * @param m GetConversionActionRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetConversionActionRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetConversionActionRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateConversionActionsRequest. */
                    interface IMutateConversionActionsRequest {

                        /** MutateConversionActionsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateConversionActionsRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateConversionActionsRequest. */
                    class MutateConversionActionsRequest implements IMutateConversionActionsRequest {

                        /**
                         * Constructs a new MutateConversionActionsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateConversionActionsRequest);

                        /** MutateConversionActionsRequest customer_id. */
                        public customer_id: string;

                        /** MutateConversionActionsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateConversionActionsRequest): google.ads.googleads.v8.services.MutateConversionActionsRequest;

                        /**
                         * Encodes the specified MutateConversionActionsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateConversionActionsRequest.verify|verify} messages.
                         * @param m MutateConversionActionsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateConversionActionsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionActionsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateConversionActionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionActionsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateConversionActionsRequest;

                        /**
                         * Verifies a MutateConversionActionsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionActionsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateConversionActionsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateConversionActionsRequest;

                        /**
                         * Creates a plain object from a MutateConversionActionsRequest message. Also converts values to other types if specified.
                         * @param m MutateConversionActionsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateConversionActionsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionActionsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ConversionActionOperation. */
                    interface IConversionActionOperation {

                        /** ConversionActionOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** ConversionActionOperation create */
                        create?: (google.ads.googleads.v8.resources.IConversionAction|null);

                        /** ConversionActionOperation update */
                        update?: (google.ads.googleads.v8.resources.IConversionAction|null);

                        /** ConversionActionOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a ConversionActionOperation. */
                    class ConversionActionOperation implements IConversionActionOperation {

                        /**
                         * Constructs a new ConversionActionOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IConversionActionOperation);

                        /** ConversionActionOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** ConversionActionOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IConversionAction|null);

                        /** ConversionActionOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.IConversionActionOperation): google.ads.googleads.v8.services.ConversionActionOperation;

                        /**
                         * Encodes the specified ConversionActionOperation message. Does not implicitly {@link google.ads.googleads.v8.services.ConversionActionOperation.verify|verify} messages.
                         * @param m ConversionActionOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IConversionActionOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionActionOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IConversionActionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionActionOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ConversionActionOperation;

                        /**
                         * Verifies a ConversionActionOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionActionOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionActionOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ConversionActionOperation;

                        /**
                         * Creates a plain object from a ConversionActionOperation message. Also converts values to other types if specified.
                         * @param m ConversionActionOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ConversionActionOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionActionOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateConversionActionsResponse. */
                    interface IMutateConversionActionsResponse {

                        /** MutateConversionActionsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateConversionActionsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateConversionActionResult[]|null);
                    }

                    /** Represents a MutateConversionActionsResponse. */
                    class MutateConversionActionsResponse implements IMutateConversionActionsResponse {

                        /**
                         * Constructs a new MutateConversionActionsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateConversionActionsResponse);

                        /** MutateConversionActionsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateConversionActionsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateConversionActionsResponse): google.ads.googleads.v8.services.MutateConversionActionsResponse;

                        /**
                         * Encodes the specified MutateConversionActionsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateConversionActionsResponse.verify|verify} messages.
                         * @param m MutateConversionActionsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateConversionActionsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionActionsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateConversionActionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionActionsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateConversionActionsResponse;

                        /**
                         * Verifies a MutateConversionActionsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionActionsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateConversionActionsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateConversionActionsResponse;

                        /**
                         * Creates a plain object from a MutateConversionActionsResponse message. Also converts values to other types if specified.
                         * @param m MutateConversionActionsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateConversionActionsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionActionsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateConversionActionResult. */
                    interface IMutateConversionActionResult {

                        /** MutateConversionActionResult resource_name */
                        resource_name?: (string|null);

                        /** MutateConversionActionResult conversion_action */
                        conversion_action?: (google.ads.googleads.v8.resources.IConversionAction|null);
                    }

                    /** Represents a MutateConversionActionResult. */
                    class MutateConversionActionResult implements IMutateConversionActionResult {

                        /**
                         * Constructs a new MutateConversionActionResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateConversionActionResult);

                        /** MutateConversionActionResult resource_name. */
                        public resource_name: string;

                        /** MutateConversionActionResult conversion_action. */
                        public conversion_action?: (google.ads.googleads.v8.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.v8.services.IMutateConversionActionResult): google.ads.googleads.v8.services.MutateConversionActionResult;

                        /**
                         * Encodes the specified MutateConversionActionResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateConversionActionResult.verify|verify} messages.
                         * @param m MutateConversionActionResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateConversionActionResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionActionResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateConversionActionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionActionResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateConversionActionResult;

                        /**
                         * Verifies a MutateConversionActionResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionActionResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateConversionActionResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateConversionActionResult;

                        /**
                         * Creates a plain object from a MutateConversionActionResult message. Also converts values to other types if specified.
                         * @param m MutateConversionActionResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateConversionActionResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionActionResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetConversionCustomVariable.
                         * @param request GetConversionCustomVariableRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ConversionCustomVariable
                         */
                        public getConversionCustomVariable(request: google.ads.googleads.v8.services.IGetConversionCustomVariableRequest, callback: google.ads.googleads.v8.services.ConversionCustomVariableService.GetConversionCustomVariableCallback): void;

                        /**
                         * Calls GetConversionCustomVariable.
                         * @param request GetConversionCustomVariableRequest message or plain object
                         * @returns Promise
                         */
                        public getConversionCustomVariable(request: google.ads.googleads.v8.services.IGetConversionCustomVariableRequest): Promise<google.ads.googleads.v8.resources.ConversionCustomVariable>;

                        /**
                         * 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.v8.services.IMutateConversionCustomVariablesRequest, callback: google.ads.googleads.v8.services.ConversionCustomVariableService.MutateConversionCustomVariablesCallback): void;

                        /**
                         * Calls MutateConversionCustomVariables.
                         * @param request MutateConversionCustomVariablesRequest message or plain object
                         * @returns Promise
                         */
                        public mutateConversionCustomVariables(request: google.ads.googleads.v8.services.IMutateConversionCustomVariablesRequest): Promise<google.ads.googleads.v8.services.MutateConversionCustomVariablesResponse>;
                    }

                    namespace ConversionCustomVariableService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ConversionCustomVariableService#getConversionCustomVariable}.
                         * @param error Error, if any
                         * @param [response] ConversionCustomVariable
                         */
                        type GetConversionCustomVariableCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.ConversionCustomVariable) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ConversionCustomVariableService#mutateConversionCustomVariables}.
                         * @param error Error, if any
                         * @param [response] MutateConversionCustomVariablesResponse
                         */
                        type MutateConversionCustomVariablesCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateConversionCustomVariablesResponse) => void;
                    }

                    /** Properties of a GetConversionCustomVariableRequest. */
                    interface IGetConversionCustomVariableRequest {

                        /** GetConversionCustomVariableRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetConversionCustomVariableRequest. */
                    class GetConversionCustomVariableRequest implements IGetConversionCustomVariableRequest {

                        /**
                         * Constructs a new GetConversionCustomVariableRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetConversionCustomVariableRequest);

                        /** GetConversionCustomVariableRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetConversionCustomVariableRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetConversionCustomVariableRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetConversionCustomVariableRequest): google.ads.googleads.v8.services.GetConversionCustomVariableRequest;

                        /**
                         * Encodes the specified GetConversionCustomVariableRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetConversionCustomVariableRequest.verify|verify} messages.
                         * @param m GetConversionCustomVariableRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetConversionCustomVariableRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetConversionCustomVariableRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetConversionCustomVariableRequest.verify|verify} messages.
                         * @param message GetConversionCustomVariableRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetConversionCustomVariableRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetConversionCustomVariableRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetConversionCustomVariableRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetConversionCustomVariableRequest;

                        /**
                         * Decodes a GetConversionCustomVariableRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetConversionCustomVariableRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetConversionCustomVariableRequest;

                        /**
                         * Verifies a GetConversionCustomVariableRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetConversionCustomVariableRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetConversionCustomVariableRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetConversionCustomVariableRequest;

                        /**
                         * Creates a plain object from a GetConversionCustomVariableRequest message. Also converts values to other types if specified.
                         * @param m GetConversionCustomVariableRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetConversionCustomVariableRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetConversionCustomVariableRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateConversionCustomVariablesRequest. */
                    interface IMutateConversionCustomVariablesRequest {

                        /** MutateConversionCustomVariablesRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateConversionCustomVariablesRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateConversionCustomVariablesRequest. */
                    class MutateConversionCustomVariablesRequest implements IMutateConversionCustomVariablesRequest {

                        /**
                         * Constructs a new MutateConversionCustomVariablesRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateConversionCustomVariablesRequest);

                        /** MutateConversionCustomVariablesRequest customer_id. */
                        public customer_id: string;

                        /** MutateConversionCustomVariablesRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateConversionCustomVariablesRequest): google.ads.googleads.v8.services.MutateConversionCustomVariablesRequest;

                        /**
                         * Encodes the specified MutateConversionCustomVariablesRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateConversionCustomVariablesRequest.verify|verify} messages.
                         * @param m MutateConversionCustomVariablesRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateConversionCustomVariablesRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionCustomVariablesRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateConversionCustomVariablesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionCustomVariablesRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateConversionCustomVariablesRequest;

                        /**
                         * Verifies a MutateConversionCustomVariablesRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionCustomVariablesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateConversionCustomVariablesRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateConversionCustomVariablesRequest;

                        /**
                         * Creates a plain object from a MutateConversionCustomVariablesRequest message. Also converts values to other types if specified.
                         * @param m MutateConversionCustomVariablesRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateConversionCustomVariablesRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionCustomVariablesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ConversionCustomVariableOperation. */
                    interface IConversionCustomVariableOperation {

                        /** ConversionCustomVariableOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** ConversionCustomVariableOperation create */
                        create?: (google.ads.googleads.v8.resources.IConversionCustomVariable|null);

                        /** ConversionCustomVariableOperation update */
                        update?: (google.ads.googleads.v8.resources.IConversionCustomVariable|null);
                    }

                    /** Represents a ConversionCustomVariableOperation. */
                    class ConversionCustomVariableOperation implements IConversionCustomVariableOperation {

                        /**
                         * Constructs a new ConversionCustomVariableOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IConversionCustomVariableOperation);

                        /** ConversionCustomVariableOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** ConversionCustomVariableOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IConversionCustomVariable|null);

                        /** ConversionCustomVariableOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.IConversionCustomVariableOperation): google.ads.googleads.v8.services.ConversionCustomVariableOperation;

                        /**
                         * Encodes the specified ConversionCustomVariableOperation message. Does not implicitly {@link google.ads.googleads.v8.services.ConversionCustomVariableOperation.verify|verify} messages.
                         * @param m ConversionCustomVariableOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IConversionCustomVariableOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionCustomVariableOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IConversionCustomVariableOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionCustomVariableOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ConversionCustomVariableOperation;

                        /**
                         * Verifies a ConversionCustomVariableOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionCustomVariableOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionCustomVariableOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ConversionCustomVariableOperation;

                        /**
                         * Creates a plain object from a ConversionCustomVariableOperation message. Also converts values to other types if specified.
                         * @param m ConversionCustomVariableOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ConversionCustomVariableOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionCustomVariableOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateConversionCustomVariablesResponse. */
                    interface IMutateConversionCustomVariablesResponse {

                        /** MutateConversionCustomVariablesResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateConversionCustomVariablesResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateConversionCustomVariableResult[]|null);
                    }

                    /** Represents a MutateConversionCustomVariablesResponse. */
                    class MutateConversionCustomVariablesResponse implements IMutateConversionCustomVariablesResponse {

                        /**
                         * Constructs a new MutateConversionCustomVariablesResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateConversionCustomVariablesResponse);

                        /** MutateConversionCustomVariablesResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateConversionCustomVariablesResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateConversionCustomVariablesResponse): google.ads.googleads.v8.services.MutateConversionCustomVariablesResponse;

                        /**
                         * Encodes the specified MutateConversionCustomVariablesResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateConversionCustomVariablesResponse.verify|verify} messages.
                         * @param m MutateConversionCustomVariablesResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateConversionCustomVariablesResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionCustomVariablesResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateConversionCustomVariablesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionCustomVariablesResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateConversionCustomVariablesResponse;

                        /**
                         * Verifies a MutateConversionCustomVariablesResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionCustomVariablesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateConversionCustomVariablesResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateConversionCustomVariablesResponse;

                        /**
                         * Creates a plain object from a MutateConversionCustomVariablesResponse message. Also converts values to other types if specified.
                         * @param m MutateConversionCustomVariablesResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateConversionCustomVariablesResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionCustomVariablesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateConversionCustomVariableResult. */
                    interface IMutateConversionCustomVariableResult {

                        /** MutateConversionCustomVariableResult resource_name */
                        resource_name?: (string|null);

                        /** MutateConversionCustomVariableResult conversion_custom_variable */
                        conversion_custom_variable?: (google.ads.googleads.v8.resources.IConversionCustomVariable|null);
                    }

                    /** Represents a MutateConversionCustomVariableResult. */
                    class MutateConversionCustomVariableResult implements IMutateConversionCustomVariableResult {

                        /**
                         * Constructs a new MutateConversionCustomVariableResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateConversionCustomVariableResult);

                        /** MutateConversionCustomVariableResult resource_name. */
                        public resource_name: string;

                        /** MutateConversionCustomVariableResult conversion_custom_variable. */
                        public conversion_custom_variable?: (google.ads.googleads.v8.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.v8.services.IMutateConversionCustomVariableResult): google.ads.googleads.v8.services.MutateConversionCustomVariableResult;

                        /**
                         * Encodes the specified MutateConversionCustomVariableResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateConversionCustomVariableResult.verify|verify} messages.
                         * @param m MutateConversionCustomVariableResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateConversionCustomVariableResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionCustomVariableResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateConversionCustomVariableResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionCustomVariableResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateConversionCustomVariableResult;

                        /**
                         * Verifies a MutateConversionCustomVariableResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionCustomVariableResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateConversionCustomVariableResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateConversionCustomVariableResult;

                        /**
                         * Creates a plain object from a MutateConversionCustomVariableResult message. Also converts values to other types if specified.
                         * @param m MutateConversionCustomVariableResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateConversionCustomVariableResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionCustomVariableResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetConversionValueRule.
                         * @param request GetConversionValueRuleRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ConversionValueRule
                         */
                        public getConversionValueRule(request: google.ads.googleads.v8.services.IGetConversionValueRuleRequest, callback: google.ads.googleads.v8.services.ConversionValueRuleService.GetConversionValueRuleCallback): void;

                        /**
                         * Calls GetConversionValueRule.
                         * @param request GetConversionValueRuleRequest message or plain object
                         * @returns Promise
                         */
                        public getConversionValueRule(request: google.ads.googleads.v8.services.IGetConversionValueRuleRequest): Promise<google.ads.googleads.v8.resources.ConversionValueRule>;

                        /**
                         * 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.v8.services.IMutateConversionValueRulesRequest, callback: google.ads.googleads.v8.services.ConversionValueRuleService.MutateConversionValueRulesCallback): void;

                        /**
                         * Calls MutateConversionValueRules.
                         * @param request MutateConversionValueRulesRequest message or plain object
                         * @returns Promise
                         */
                        public mutateConversionValueRules(request: google.ads.googleads.v8.services.IMutateConversionValueRulesRequest): Promise<google.ads.googleads.v8.services.MutateConversionValueRulesResponse>;
                    }

                    namespace ConversionValueRuleService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ConversionValueRuleService#getConversionValueRule}.
                         * @param error Error, if any
                         * @param [response] ConversionValueRule
                         */
                        type GetConversionValueRuleCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.ConversionValueRule) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ConversionValueRuleService#mutateConversionValueRules}.
                         * @param error Error, if any
                         * @param [response] MutateConversionValueRulesResponse
                         */
                        type MutateConversionValueRulesCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateConversionValueRulesResponse) => void;
                    }

                    /** Properties of a GetConversionValueRuleRequest. */
                    interface IGetConversionValueRuleRequest {

                        /** GetConversionValueRuleRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetConversionValueRuleRequest. */
                    class GetConversionValueRuleRequest implements IGetConversionValueRuleRequest {

                        /**
                         * Constructs a new GetConversionValueRuleRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetConversionValueRuleRequest);

                        /** GetConversionValueRuleRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetConversionValueRuleRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetConversionValueRuleRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetConversionValueRuleRequest): google.ads.googleads.v8.services.GetConversionValueRuleRequest;

                        /**
                         * Encodes the specified GetConversionValueRuleRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetConversionValueRuleRequest.verify|verify} messages.
                         * @param m GetConversionValueRuleRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetConversionValueRuleRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetConversionValueRuleRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetConversionValueRuleRequest.verify|verify} messages.
                         * @param message GetConversionValueRuleRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetConversionValueRuleRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetConversionValueRuleRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetConversionValueRuleRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetConversionValueRuleRequest;

                        /**
                         * Decodes a GetConversionValueRuleRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetConversionValueRuleRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetConversionValueRuleRequest;

                        /**
                         * Verifies a GetConversionValueRuleRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetConversionValueRuleRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetConversionValueRuleRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetConversionValueRuleRequest;

                        /**
                         * Creates a plain object from a GetConversionValueRuleRequest message. Also converts values to other types if specified.
                         * @param m GetConversionValueRuleRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetConversionValueRuleRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetConversionValueRuleRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateConversionValueRulesRequest. */
                    interface IMutateConversionValueRulesRequest {

                        /** MutateConversionValueRulesRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateConversionValueRulesRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateConversionValueRulesRequest. */
                    class MutateConversionValueRulesRequest implements IMutateConversionValueRulesRequest {

                        /**
                         * Constructs a new MutateConversionValueRulesRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateConversionValueRulesRequest);

                        /** MutateConversionValueRulesRequest customer_id. */
                        public customer_id: string;

                        /** MutateConversionValueRulesRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateConversionValueRulesRequest): google.ads.googleads.v8.services.MutateConversionValueRulesRequest;

                        /**
                         * Encodes the specified MutateConversionValueRulesRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateConversionValueRulesRequest.verify|verify} messages.
                         * @param m MutateConversionValueRulesRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateConversionValueRulesRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionValueRulesRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateConversionValueRulesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionValueRulesRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateConversionValueRulesRequest;

                        /**
                         * Verifies a MutateConversionValueRulesRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionValueRulesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateConversionValueRulesRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateConversionValueRulesRequest;

                        /**
                         * Creates a plain object from a MutateConversionValueRulesRequest message. Also converts values to other types if specified.
                         * @param m MutateConversionValueRulesRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateConversionValueRulesRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionValueRulesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ConversionValueRuleOperation. */
                    interface IConversionValueRuleOperation {

                        /** ConversionValueRuleOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** ConversionValueRuleOperation create */
                        create?: (google.ads.googleads.v8.resources.IConversionValueRule|null);

                        /** ConversionValueRuleOperation update */
                        update?: (google.ads.googleads.v8.resources.IConversionValueRule|null);

                        /** ConversionValueRuleOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a ConversionValueRuleOperation. */
                    class ConversionValueRuleOperation implements IConversionValueRuleOperation {

                        /**
                         * Constructs a new ConversionValueRuleOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IConversionValueRuleOperation);

                        /** ConversionValueRuleOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** ConversionValueRuleOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IConversionValueRule|null);

                        /** ConversionValueRuleOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.IConversionValueRuleOperation): google.ads.googleads.v8.services.ConversionValueRuleOperation;

                        /**
                         * Encodes the specified ConversionValueRuleOperation message. Does not implicitly {@link google.ads.googleads.v8.services.ConversionValueRuleOperation.verify|verify} messages.
                         * @param m ConversionValueRuleOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IConversionValueRuleOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionValueRuleOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IConversionValueRuleOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionValueRuleOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ConversionValueRuleOperation;

                        /**
                         * Verifies a ConversionValueRuleOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionValueRuleOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionValueRuleOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ConversionValueRuleOperation;

                        /**
                         * Creates a plain object from a ConversionValueRuleOperation message. Also converts values to other types if specified.
                         * @param m ConversionValueRuleOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ConversionValueRuleOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionValueRuleOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateConversionValueRulesResponse. */
                    interface IMutateConversionValueRulesResponse {

                        /** MutateConversionValueRulesResponse results */
                        results?: (google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateConversionValueRulesResponse);

                        /** MutateConversionValueRulesResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateConversionValueRulesResponse): google.ads.googleads.v8.services.MutateConversionValueRulesResponse;

                        /**
                         * Encodes the specified MutateConversionValueRulesResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateConversionValueRulesResponse.verify|verify} messages.
                         * @param m MutateConversionValueRulesResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateConversionValueRulesResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionValueRulesResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateConversionValueRulesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionValueRulesResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateConversionValueRulesResponse;

                        /**
                         * Verifies a MutateConversionValueRulesResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionValueRulesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateConversionValueRulesResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateConversionValueRulesResponse;

                        /**
                         * Creates a plain object from a MutateConversionValueRulesResponse message. Also converts values to other types if specified.
                         * @param m MutateConversionValueRulesResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateConversionValueRulesResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionValueRulesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateConversionValueRuleResult. */
                    interface IMutateConversionValueRuleResult {

                        /** MutateConversionValueRuleResult resource_name */
                        resource_name?: (string|null);

                        /** MutateConversionValueRuleResult conversion_value_rule */
                        conversion_value_rule?: (google.ads.googleads.v8.resources.IConversionValueRule|null);
                    }

                    /** Represents a MutateConversionValueRuleResult. */
                    class MutateConversionValueRuleResult implements IMutateConversionValueRuleResult {

                        /**
                         * Constructs a new MutateConversionValueRuleResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateConversionValueRuleResult);

                        /** MutateConversionValueRuleResult resource_name. */
                        public resource_name: string;

                        /** MutateConversionValueRuleResult conversion_value_rule. */
                        public conversion_value_rule?: (google.ads.googleads.v8.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.v8.services.IMutateConversionValueRuleResult): google.ads.googleads.v8.services.MutateConversionValueRuleResult;

                        /**
                         * Encodes the specified MutateConversionValueRuleResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateConversionValueRuleResult.verify|verify} messages.
                         * @param m MutateConversionValueRuleResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateConversionValueRuleResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionValueRuleResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateConversionValueRuleResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionValueRuleResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateConversionValueRuleResult;

                        /**
                         * Verifies a MutateConversionValueRuleResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionValueRuleResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateConversionValueRuleResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateConversionValueRuleResult;

                        /**
                         * Creates a plain object from a MutateConversionValueRuleResult message. Also converts values to other types if specified.
                         * @param m MutateConversionValueRuleResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateConversionValueRuleResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionValueRuleResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetConversionValueRuleSet.
                         * @param request GetConversionValueRuleSetRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ConversionValueRuleSet
                         */
                        public getConversionValueRuleSet(request: google.ads.googleads.v8.services.IGetConversionValueRuleSetRequest, callback: google.ads.googleads.v8.services.ConversionValueRuleSetService.GetConversionValueRuleSetCallback): void;

                        /**
                         * Calls GetConversionValueRuleSet.
                         * @param request GetConversionValueRuleSetRequest message or plain object
                         * @returns Promise
                         */
                        public getConversionValueRuleSet(request: google.ads.googleads.v8.services.IGetConversionValueRuleSetRequest): Promise<google.ads.googleads.v8.resources.ConversionValueRuleSet>;

                        /**
                         * 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.v8.services.IMutateConversionValueRuleSetsRequest, callback: google.ads.googleads.v8.services.ConversionValueRuleSetService.MutateConversionValueRuleSetsCallback): void;

                        /**
                         * Calls MutateConversionValueRuleSets.
                         * @param request MutateConversionValueRuleSetsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateConversionValueRuleSets(request: google.ads.googleads.v8.services.IMutateConversionValueRuleSetsRequest): Promise<google.ads.googleads.v8.services.MutateConversionValueRuleSetsResponse>;
                    }

                    namespace ConversionValueRuleSetService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ConversionValueRuleSetService#getConversionValueRuleSet}.
                         * @param error Error, if any
                         * @param [response] ConversionValueRuleSet
                         */
                        type GetConversionValueRuleSetCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.ConversionValueRuleSet) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ConversionValueRuleSetService#mutateConversionValueRuleSets}.
                         * @param error Error, if any
                         * @param [response] MutateConversionValueRuleSetsResponse
                         */
                        type MutateConversionValueRuleSetsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateConversionValueRuleSetsResponse) => void;
                    }

                    /** Properties of a GetConversionValueRuleSetRequest. */
                    interface IGetConversionValueRuleSetRequest {

                        /** GetConversionValueRuleSetRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetConversionValueRuleSetRequest. */
                    class GetConversionValueRuleSetRequest implements IGetConversionValueRuleSetRequest {

                        /**
                         * Constructs a new GetConversionValueRuleSetRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetConversionValueRuleSetRequest);

                        /** GetConversionValueRuleSetRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetConversionValueRuleSetRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetConversionValueRuleSetRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetConversionValueRuleSetRequest): google.ads.googleads.v8.services.GetConversionValueRuleSetRequest;

                        /**
                         * Encodes the specified GetConversionValueRuleSetRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetConversionValueRuleSetRequest.verify|verify} messages.
                         * @param m GetConversionValueRuleSetRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetConversionValueRuleSetRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetConversionValueRuleSetRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetConversionValueRuleSetRequest.verify|verify} messages.
                         * @param message GetConversionValueRuleSetRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetConversionValueRuleSetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetConversionValueRuleSetRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetConversionValueRuleSetRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetConversionValueRuleSetRequest;

                        /**
                         * Decodes a GetConversionValueRuleSetRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetConversionValueRuleSetRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetConversionValueRuleSetRequest;

                        /**
                         * Verifies a GetConversionValueRuleSetRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetConversionValueRuleSetRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetConversionValueRuleSetRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetConversionValueRuleSetRequest;

                        /**
                         * Creates a plain object from a GetConversionValueRuleSetRequest message. Also converts values to other types if specified.
                         * @param m GetConversionValueRuleSetRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetConversionValueRuleSetRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetConversionValueRuleSetRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateConversionValueRuleSetsRequest. */
                    interface IMutateConversionValueRuleSetsRequest {

                        /** MutateConversionValueRuleSetsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateConversionValueRuleSetsRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateConversionValueRuleSetsRequest. */
                    class MutateConversionValueRuleSetsRequest implements IMutateConversionValueRuleSetsRequest {

                        /**
                         * Constructs a new MutateConversionValueRuleSetsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateConversionValueRuleSetsRequest);

                        /** MutateConversionValueRuleSetsRequest customer_id. */
                        public customer_id: string;

                        /** MutateConversionValueRuleSetsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateConversionValueRuleSetsRequest): google.ads.googleads.v8.services.MutateConversionValueRuleSetsRequest;

                        /**
                         * Encodes the specified MutateConversionValueRuleSetsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateConversionValueRuleSetsRequest.verify|verify} messages.
                         * @param m MutateConversionValueRuleSetsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateConversionValueRuleSetsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionValueRuleSetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateConversionValueRuleSetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionValueRuleSetsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateConversionValueRuleSetsRequest;

                        /**
                         * Verifies a MutateConversionValueRuleSetsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionValueRuleSetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateConversionValueRuleSetsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateConversionValueRuleSetsRequest;

                        /**
                         * Creates a plain object from a MutateConversionValueRuleSetsRequest message. Also converts values to other types if specified.
                         * @param m MutateConversionValueRuleSetsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateConversionValueRuleSetsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionValueRuleSetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ConversionValueRuleSetOperation. */
                    interface IConversionValueRuleSetOperation {

                        /** ConversionValueRuleSetOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** ConversionValueRuleSetOperation create */
                        create?: (google.ads.googleads.v8.resources.IConversionValueRuleSet|null);

                        /** ConversionValueRuleSetOperation update */
                        update?: (google.ads.googleads.v8.resources.IConversionValueRuleSet|null);

                        /** ConversionValueRuleSetOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a ConversionValueRuleSetOperation. */
                    class ConversionValueRuleSetOperation implements IConversionValueRuleSetOperation {

                        /**
                         * Constructs a new ConversionValueRuleSetOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IConversionValueRuleSetOperation);

                        /** ConversionValueRuleSetOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** ConversionValueRuleSetOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IConversionValueRuleSet|null);

                        /** ConversionValueRuleSetOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.IConversionValueRuleSetOperation): google.ads.googleads.v8.services.ConversionValueRuleSetOperation;

                        /**
                         * Encodes the specified ConversionValueRuleSetOperation message. Does not implicitly {@link google.ads.googleads.v8.services.ConversionValueRuleSetOperation.verify|verify} messages.
                         * @param m ConversionValueRuleSetOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IConversionValueRuleSetOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionValueRuleSetOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IConversionValueRuleSetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionValueRuleSetOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ConversionValueRuleSetOperation;

                        /**
                         * Verifies a ConversionValueRuleSetOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionValueRuleSetOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionValueRuleSetOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ConversionValueRuleSetOperation;

                        /**
                         * Creates a plain object from a ConversionValueRuleSetOperation message. Also converts values to other types if specified.
                         * @param m ConversionValueRuleSetOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ConversionValueRuleSetOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionValueRuleSetOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateConversionValueRuleSetsResponse. */
                    interface IMutateConversionValueRuleSetsResponse {

                        /** MutateConversionValueRuleSetsResponse results */
                        results?: (google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateConversionValueRuleSetsResponse);

                        /** MutateConversionValueRuleSetsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateConversionValueRuleSetsResponse): google.ads.googleads.v8.services.MutateConversionValueRuleSetsResponse;

                        /**
                         * Encodes the specified MutateConversionValueRuleSetsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateConversionValueRuleSetsResponse.verify|verify} messages.
                         * @param m MutateConversionValueRuleSetsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateConversionValueRuleSetsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionValueRuleSetsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateConversionValueRuleSetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionValueRuleSetsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateConversionValueRuleSetsResponse;

                        /**
                         * Verifies a MutateConversionValueRuleSetsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionValueRuleSetsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateConversionValueRuleSetsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateConversionValueRuleSetsResponse;

                        /**
                         * Creates a plain object from a MutateConversionValueRuleSetsResponse message. Also converts values to other types if specified.
                         * @param m MutateConversionValueRuleSetsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateConversionValueRuleSetsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionValueRuleSetsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.resources.IConversionValueRuleSet|null);
                    }

                    /** Represents a MutateConversionValueRuleSetResult. */
                    class MutateConversionValueRuleSetResult implements IMutateConversionValueRuleSetResult {

                        /**
                         * Constructs a new MutateConversionValueRuleSetResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateConversionValueRuleSetResult);

                        /** MutateConversionValueRuleSetResult resource_name. */
                        public resource_name: string;

                        /** MutateConversionValueRuleSetResult conversion_value_rule_set. */
                        public conversion_value_rule_set?: (google.ads.googleads.v8.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.v8.services.IMutateConversionValueRuleSetResult): google.ads.googleads.v8.services.MutateConversionValueRuleSetResult;

                        /**
                         * Encodes the specified MutateConversionValueRuleSetResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateConversionValueRuleSetResult.verify|verify} messages.
                         * @param m MutateConversionValueRuleSetResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateConversionValueRuleSetResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateConversionValueRuleSetResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateConversionValueRuleSetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateConversionValueRuleSetResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateConversionValueRuleSetResult;

                        /**
                         * Verifies a MutateConversionValueRuleSetResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateConversionValueRuleSetResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateConversionValueRuleSetResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateConversionValueRuleSetResult;

                        /**
                         * Creates a plain object from a MutateConversionValueRuleSetResult message. Also converts values to other types if specified.
                         * @param m MutateConversionValueRuleSetResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateConversionValueRuleSetResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateConversionValueRuleSetResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetCustomerAsset.
                         * @param request GetCustomerAssetRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CustomerAsset
                         */
                        public getCustomerAsset(request: google.ads.googleads.v8.services.IGetCustomerAssetRequest, callback: google.ads.googleads.v8.services.CustomerAssetService.GetCustomerAssetCallback): void;

                        /**
                         * Calls GetCustomerAsset.
                         * @param request GetCustomerAssetRequest message or plain object
                         * @returns Promise
                         */
                        public getCustomerAsset(request: google.ads.googleads.v8.services.IGetCustomerAssetRequest): Promise<google.ads.googleads.v8.resources.CustomerAsset>;

                        /**
                         * 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.v8.services.IMutateCustomerAssetsRequest, callback: google.ads.googleads.v8.services.CustomerAssetService.MutateCustomerAssetsCallback): void;

                        /**
                         * Calls MutateCustomerAssets.
                         * @param request MutateCustomerAssetsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomerAssets(request: google.ads.googleads.v8.services.IMutateCustomerAssetsRequest): Promise<google.ads.googleads.v8.services.MutateCustomerAssetsResponse>;
                    }

                    namespace CustomerAssetService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomerAssetService#getCustomerAsset}.
                         * @param error Error, if any
                         * @param [response] CustomerAsset
                         */
                        type GetCustomerAssetCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CustomerAsset) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomerAssetService#mutateCustomerAssets}.
                         * @param error Error, if any
                         * @param [response] MutateCustomerAssetsResponse
                         */
                        type MutateCustomerAssetsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateCustomerAssetsResponse) => void;
                    }

                    /** Properties of a GetCustomerAssetRequest. */
                    interface IGetCustomerAssetRequest {

                        /** GetCustomerAssetRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCustomerAssetRequest. */
                    class GetCustomerAssetRequest implements IGetCustomerAssetRequest {

                        /**
                         * Constructs a new GetCustomerAssetRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCustomerAssetRequest);

                        /** GetCustomerAssetRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCustomerAssetRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCustomerAssetRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCustomerAssetRequest): google.ads.googleads.v8.services.GetCustomerAssetRequest;

                        /**
                         * Encodes the specified GetCustomerAssetRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomerAssetRequest.verify|verify} messages.
                         * @param m GetCustomerAssetRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCustomerAssetRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCustomerAssetRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomerAssetRequest.verify|verify} messages.
                         * @param message GetCustomerAssetRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCustomerAssetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCustomerAssetRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCustomerAssetRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCustomerAssetRequest;

                        /**
                         * Decodes a GetCustomerAssetRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCustomerAssetRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCustomerAssetRequest;

                        /**
                         * Verifies a GetCustomerAssetRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCustomerAssetRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCustomerAssetRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCustomerAssetRequest;

                        /**
                         * Creates a plain object from a GetCustomerAssetRequest message. Also converts values to other types if specified.
                         * @param m GetCustomerAssetRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCustomerAssetRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCustomerAssetRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomerAssetsRequest. */
                    interface IMutateCustomerAssetsRequest {

                        /** MutateCustomerAssetsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomerAssetsRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCustomerAssetsRequest. */
                    class MutateCustomerAssetsRequest implements IMutateCustomerAssetsRequest {

                        /**
                         * Constructs a new MutateCustomerAssetsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomerAssetsRequest);

                        /** MutateCustomerAssetsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomerAssetsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateCustomerAssetsRequest): google.ads.googleads.v8.services.MutateCustomerAssetsRequest;

                        /**
                         * Encodes the specified MutateCustomerAssetsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerAssetsRequest.verify|verify} messages.
                         * @param m MutateCustomerAssetsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerAssetsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerAssetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomerAssetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerAssetsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomerAssetsRequest;

                        /**
                         * Verifies a MutateCustomerAssetsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerAssetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerAssetsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerAssetsRequest;

                        /**
                         * Creates a plain object from a MutateCustomerAssetsRequest message. Also converts values to other types if specified.
                         * @param m MutateCustomerAssetsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerAssetsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerAssetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CustomerAssetOperation. */
                    interface ICustomerAssetOperation {

                        /** CustomerAssetOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomerAssetOperation create */
                        create?: (google.ads.googleads.v8.resources.ICustomerAsset|null);

                        /** CustomerAssetOperation update */
                        update?: (google.ads.googleads.v8.resources.ICustomerAsset|null);

                        /** CustomerAssetOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CustomerAssetOperation. */
                    class CustomerAssetOperation implements ICustomerAssetOperation {

                        /**
                         * Constructs a new CustomerAssetOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICustomerAssetOperation);

                        /** CustomerAssetOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomerAssetOperation create. */
                        public create?: (google.ads.googleads.v8.resources.ICustomerAsset|null);

                        /** CustomerAssetOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.ICustomerAssetOperation): google.ads.googleads.v8.services.CustomerAssetOperation;

                        /**
                         * Encodes the specified CustomerAssetOperation message. Does not implicitly {@link google.ads.googleads.v8.services.CustomerAssetOperation.verify|verify} messages.
                         * @param m CustomerAssetOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICustomerAssetOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerAssetOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICustomerAssetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerAssetOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CustomerAssetOperation;

                        /**
                         * Verifies a CustomerAssetOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerAssetOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerAssetOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CustomerAssetOperation;

                        /**
                         * Creates a plain object from a CustomerAssetOperation message. Also converts values to other types if specified.
                         * @param m CustomerAssetOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CustomerAssetOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerAssetOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomerAssetsResponse. */
                    interface IMutateCustomerAssetsResponse {

                        /** MutateCustomerAssetsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCustomerAssetsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateCustomerAssetResult[]|null);
                    }

                    /** Represents a MutateCustomerAssetsResponse. */
                    class MutateCustomerAssetsResponse implements IMutateCustomerAssetsResponse {

                        /**
                         * Constructs a new MutateCustomerAssetsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomerAssetsResponse);

                        /** MutateCustomerAssetsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCustomerAssetsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateCustomerAssetsResponse): google.ads.googleads.v8.services.MutateCustomerAssetsResponse;

                        /**
                         * Encodes the specified MutateCustomerAssetsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerAssetsResponse.verify|verify} messages.
                         * @param m MutateCustomerAssetsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerAssetsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerAssetsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomerAssetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerAssetsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomerAssetsResponse;

                        /**
                         * Verifies a MutateCustomerAssetsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerAssetsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerAssetsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerAssetsResponse;

                        /**
                         * Creates a plain object from a MutateCustomerAssetsResponse message. Also converts values to other types if specified.
                         * @param m MutateCustomerAssetsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerAssetsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerAssetsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomerAssetResult. */
                    interface IMutateCustomerAssetResult {

                        /** MutateCustomerAssetResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCustomerAssetResult customer_asset */
                        customer_asset?: (google.ads.googleads.v8.resources.ICustomerAsset|null);
                    }

                    /** Represents a MutateCustomerAssetResult. */
                    class MutateCustomerAssetResult implements IMutateCustomerAssetResult {

                        /**
                         * Constructs a new MutateCustomerAssetResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomerAssetResult);

                        /** MutateCustomerAssetResult resource_name. */
                        public resource_name: string;

                        /** MutateCustomerAssetResult customer_asset. */
                        public customer_asset?: (google.ads.googleads.v8.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.v8.services.IMutateCustomerAssetResult): google.ads.googleads.v8.services.MutateCustomerAssetResult;

                        /**
                         * Encodes the specified MutateCustomerAssetResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerAssetResult.verify|verify} messages.
                         * @param m MutateCustomerAssetResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerAssetResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerAssetResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomerAssetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerAssetResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomerAssetResult;

                        /**
                         * Verifies a MutateCustomerAssetResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerAssetResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerAssetResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerAssetResult;

                        /**
                         * Creates a plain object from a MutateCustomerAssetResult message. Also converts values to other types if specified.
                         * @param m MutateCustomerAssetResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerAssetResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerAssetResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a CustomerExtensionSettingService */
                    class CustomerExtensionSettingService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CustomerExtensionSettingService 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 CustomerExtensionSettingService 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): CustomerExtensionSettingService;

                        /**
                         * Calls GetCustomerExtensionSetting.
                         * @param request GetCustomerExtensionSettingRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CustomerExtensionSetting
                         */
                        public getCustomerExtensionSetting(request: google.ads.googleads.v8.services.IGetCustomerExtensionSettingRequest, callback: google.ads.googleads.v8.services.CustomerExtensionSettingService.GetCustomerExtensionSettingCallback): void;

                        /**
                         * Calls GetCustomerExtensionSetting.
                         * @param request GetCustomerExtensionSettingRequest message or plain object
                         * @returns Promise
                         */
                        public getCustomerExtensionSetting(request: google.ads.googleads.v8.services.IGetCustomerExtensionSettingRequest): Promise<google.ads.googleads.v8.resources.CustomerExtensionSetting>;

                        /**
                         * Calls MutateCustomerExtensionSettings.
                         * @param request MutateCustomerExtensionSettingsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCustomerExtensionSettingsResponse
                         */
                        public mutateCustomerExtensionSettings(request: google.ads.googleads.v8.services.IMutateCustomerExtensionSettingsRequest, callback: google.ads.googleads.v8.services.CustomerExtensionSettingService.MutateCustomerExtensionSettingsCallback): void;

                        /**
                         * Calls MutateCustomerExtensionSettings.
                         * @param request MutateCustomerExtensionSettingsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomerExtensionSettings(request: google.ads.googleads.v8.services.IMutateCustomerExtensionSettingsRequest): Promise<google.ads.googleads.v8.services.MutateCustomerExtensionSettingsResponse>;
                    }

                    namespace CustomerExtensionSettingService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomerExtensionSettingService#getCustomerExtensionSetting}.
                         * @param error Error, if any
                         * @param [response] CustomerExtensionSetting
                         */
                        type GetCustomerExtensionSettingCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CustomerExtensionSetting) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomerExtensionSettingService#mutateCustomerExtensionSettings}.
                         * @param error Error, if any
                         * @param [response] MutateCustomerExtensionSettingsResponse
                         */
                        type MutateCustomerExtensionSettingsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateCustomerExtensionSettingsResponse) => void;
                    }

                    /** Properties of a GetCustomerExtensionSettingRequest. */
                    interface IGetCustomerExtensionSettingRequest {

                        /** GetCustomerExtensionSettingRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCustomerExtensionSettingRequest. */
                    class GetCustomerExtensionSettingRequest implements IGetCustomerExtensionSettingRequest {

                        /**
                         * Constructs a new GetCustomerExtensionSettingRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCustomerExtensionSettingRequest);

                        /** GetCustomerExtensionSettingRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCustomerExtensionSettingRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCustomerExtensionSettingRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCustomerExtensionSettingRequest): google.ads.googleads.v8.services.GetCustomerExtensionSettingRequest;

                        /**
                         * Encodes the specified GetCustomerExtensionSettingRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomerExtensionSettingRequest.verify|verify} messages.
                         * @param m GetCustomerExtensionSettingRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCustomerExtensionSettingRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCustomerExtensionSettingRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomerExtensionSettingRequest.verify|verify} messages.
                         * @param message GetCustomerExtensionSettingRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCustomerExtensionSettingRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCustomerExtensionSettingRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCustomerExtensionSettingRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCustomerExtensionSettingRequest;

                        /**
                         * Decodes a GetCustomerExtensionSettingRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCustomerExtensionSettingRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCustomerExtensionSettingRequest;

                        /**
                         * Verifies a GetCustomerExtensionSettingRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCustomerExtensionSettingRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCustomerExtensionSettingRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCustomerExtensionSettingRequest;

                        /**
                         * Creates a plain object from a GetCustomerExtensionSettingRequest message. Also converts values to other types if specified.
                         * @param m GetCustomerExtensionSettingRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCustomerExtensionSettingRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCustomerExtensionSettingRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomerExtensionSettingsRequest. */
                    interface IMutateCustomerExtensionSettingsRequest {

                        /** MutateCustomerExtensionSettingsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomerExtensionSettingsRequest operations */
                        operations?: (google.ads.googleads.v8.services.ICustomerExtensionSettingOperation[]|null);

                        /** MutateCustomerExtensionSettingsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateCustomerExtensionSettingsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateCustomerExtensionSettingsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCustomerExtensionSettingsRequest. */
                    class MutateCustomerExtensionSettingsRequest implements IMutateCustomerExtensionSettingsRequest {

                        /**
                         * Constructs a new MutateCustomerExtensionSettingsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomerExtensionSettingsRequest);

                        /** MutateCustomerExtensionSettingsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomerExtensionSettingsRequest operations. */
                        public operations: google.ads.googleads.v8.services.ICustomerExtensionSettingOperation[];

                        /** MutateCustomerExtensionSettingsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateCustomerExtensionSettingsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateCustomerExtensionSettingsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateCustomerExtensionSettingsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerExtensionSettingsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateCustomerExtensionSettingsRequest): google.ads.googleads.v8.services.MutateCustomerExtensionSettingsRequest;

                        /**
                         * Encodes the specified MutateCustomerExtensionSettingsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerExtensionSettingsRequest.verify|verify} messages.
                         * @param m MutateCustomerExtensionSettingsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerExtensionSettingsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerExtensionSettingsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerExtensionSettingsRequest.verify|verify} messages.
                         * @param message MutateCustomerExtensionSettingsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateCustomerExtensionSettingsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerExtensionSettingsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateCustomerExtensionSettingsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateCustomerExtensionSettingsRequest;

                        /**
                         * Decodes a MutateCustomerExtensionSettingsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerExtensionSettingsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateCustomerExtensionSettingsRequest;

                        /**
                         * Verifies a MutateCustomerExtensionSettingsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerExtensionSettingsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerExtensionSettingsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerExtensionSettingsRequest;

                        /**
                         * Creates a plain object from a MutateCustomerExtensionSettingsRequest message. Also converts values to other types if specified.
                         * @param m MutateCustomerExtensionSettingsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerExtensionSettingsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerExtensionSettingsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CustomerExtensionSettingOperation. */
                    interface ICustomerExtensionSettingOperation {

                        /** CustomerExtensionSettingOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomerExtensionSettingOperation create */
                        create?: (google.ads.googleads.v8.resources.ICustomerExtensionSetting|null);

                        /** CustomerExtensionSettingOperation update */
                        update?: (google.ads.googleads.v8.resources.ICustomerExtensionSetting|null);

                        /** CustomerExtensionSettingOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CustomerExtensionSettingOperation. */
                    class CustomerExtensionSettingOperation implements ICustomerExtensionSettingOperation {

                        /**
                         * Constructs a new CustomerExtensionSettingOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICustomerExtensionSettingOperation);

                        /** CustomerExtensionSettingOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomerExtensionSettingOperation create. */
                        public create?: (google.ads.googleads.v8.resources.ICustomerExtensionSetting|null);

                        /** CustomerExtensionSettingOperation update. */
                        public update?: (google.ads.googleads.v8.resources.ICustomerExtensionSetting|null);

                        /** CustomerExtensionSettingOperation remove. */
                        public remove?: (string|null);

                        /** CustomerExtensionSettingOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new CustomerExtensionSettingOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerExtensionSettingOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.ICustomerExtensionSettingOperation): google.ads.googleads.v8.services.CustomerExtensionSettingOperation;

                        /**
                         * Encodes the specified CustomerExtensionSettingOperation message. Does not implicitly {@link google.ads.googleads.v8.services.CustomerExtensionSettingOperation.verify|verify} messages.
                         * @param m CustomerExtensionSettingOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICustomerExtensionSettingOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerExtensionSettingOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.CustomerExtensionSettingOperation.verify|verify} messages.
                         * @param message CustomerExtensionSettingOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.ICustomerExtensionSettingOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerExtensionSettingOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns CustomerExtensionSettingOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.CustomerExtensionSettingOperation;

                        /**
                         * Decodes a CustomerExtensionSettingOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerExtensionSettingOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.CustomerExtensionSettingOperation;

                        /**
                         * Verifies a CustomerExtensionSettingOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerExtensionSettingOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerExtensionSettingOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CustomerExtensionSettingOperation;

                        /**
                         * Creates a plain object from a CustomerExtensionSettingOperation message. Also converts values to other types if specified.
                         * @param m CustomerExtensionSettingOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CustomerExtensionSettingOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerExtensionSettingOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomerExtensionSettingsResponse. */
                    interface IMutateCustomerExtensionSettingsResponse {

                        /** MutateCustomerExtensionSettingsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCustomerExtensionSettingsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateCustomerExtensionSettingResult[]|null);
                    }

                    /** Represents a MutateCustomerExtensionSettingsResponse. */
                    class MutateCustomerExtensionSettingsResponse implements IMutateCustomerExtensionSettingsResponse {

                        /**
                         * Constructs a new MutateCustomerExtensionSettingsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomerExtensionSettingsResponse);

                        /** MutateCustomerExtensionSettingsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCustomerExtensionSettingsResponse results. */
                        public results: google.ads.googleads.v8.services.IMutateCustomerExtensionSettingResult[];

                        /**
                         * Creates a new MutateCustomerExtensionSettingsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerExtensionSettingsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateCustomerExtensionSettingsResponse): google.ads.googleads.v8.services.MutateCustomerExtensionSettingsResponse;

                        /**
                         * Encodes the specified MutateCustomerExtensionSettingsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerExtensionSettingsResponse.verify|verify} messages.
                         * @param m MutateCustomerExtensionSettingsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerExtensionSettingsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerExtensionSettingsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerExtensionSettingsResponse.verify|verify} messages.
                         * @param message MutateCustomerExtensionSettingsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateCustomerExtensionSettingsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerExtensionSettingsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateCustomerExtensionSettingsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateCustomerExtensionSettingsResponse;

                        /**
                         * Decodes a MutateCustomerExtensionSettingsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerExtensionSettingsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateCustomerExtensionSettingsResponse;

                        /**
                         * Verifies a MutateCustomerExtensionSettingsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerExtensionSettingsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerExtensionSettingsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerExtensionSettingsResponse;

                        /**
                         * Creates a plain object from a MutateCustomerExtensionSettingsResponse message. Also converts values to other types if specified.
                         * @param m MutateCustomerExtensionSettingsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerExtensionSettingsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerExtensionSettingsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomerExtensionSettingResult. */
                    interface IMutateCustomerExtensionSettingResult {

                        /** MutateCustomerExtensionSettingResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCustomerExtensionSettingResult customer_extension_setting */
                        customer_extension_setting?: (google.ads.googleads.v8.resources.ICustomerExtensionSetting|null);
                    }

                    /** Represents a MutateCustomerExtensionSettingResult. */
                    class MutateCustomerExtensionSettingResult implements IMutateCustomerExtensionSettingResult {

                        /**
                         * Constructs a new MutateCustomerExtensionSettingResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomerExtensionSettingResult);

                        /** MutateCustomerExtensionSettingResult resource_name. */
                        public resource_name: string;

                        /** MutateCustomerExtensionSettingResult customer_extension_setting. */
                        public customer_extension_setting?: (google.ads.googleads.v8.resources.ICustomerExtensionSetting|null);

                        /**
                         * Creates a new MutateCustomerExtensionSettingResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerExtensionSettingResult instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateCustomerExtensionSettingResult): google.ads.googleads.v8.services.MutateCustomerExtensionSettingResult;

                        /**
                         * Encodes the specified MutateCustomerExtensionSettingResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerExtensionSettingResult.verify|verify} messages.
                         * @param m MutateCustomerExtensionSettingResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerExtensionSettingResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerExtensionSettingResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerExtensionSettingResult.verify|verify} messages.
                         * @param message MutateCustomerExtensionSettingResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateCustomerExtensionSettingResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerExtensionSettingResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateCustomerExtensionSettingResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateCustomerExtensionSettingResult;

                        /**
                         * Decodes a MutateCustomerExtensionSettingResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerExtensionSettingResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateCustomerExtensionSettingResult;

                        /**
                         * Verifies a MutateCustomerExtensionSettingResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerExtensionSettingResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerExtensionSettingResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerExtensionSettingResult;

                        /**
                         * Creates a plain object from a MutateCustomerExtensionSettingResult message. Also converts values to other types if specified.
                         * @param m MutateCustomerExtensionSettingResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerExtensionSettingResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerExtensionSettingResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a CustomerFeedService */
                    class CustomerFeedService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CustomerFeedService 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 CustomerFeedService 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): CustomerFeedService;

                        /**
                         * Calls GetCustomerFeed.
                         * @param request GetCustomerFeedRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CustomerFeed
                         */
                        public getCustomerFeed(request: google.ads.googleads.v8.services.IGetCustomerFeedRequest, callback: google.ads.googleads.v8.services.CustomerFeedService.GetCustomerFeedCallback): void;

                        /**
                         * Calls GetCustomerFeed.
                         * @param request GetCustomerFeedRequest message or plain object
                         * @returns Promise
                         */
                        public getCustomerFeed(request: google.ads.googleads.v8.services.IGetCustomerFeedRequest): Promise<google.ads.googleads.v8.resources.CustomerFeed>;

                        /**
                         * Calls MutateCustomerFeeds.
                         * @param request MutateCustomerFeedsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateCustomerFeedsResponse
                         */
                        public mutateCustomerFeeds(request: google.ads.googleads.v8.services.IMutateCustomerFeedsRequest, callback: google.ads.googleads.v8.services.CustomerFeedService.MutateCustomerFeedsCallback): void;

                        /**
                         * Calls MutateCustomerFeeds.
                         * @param request MutateCustomerFeedsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomerFeeds(request: google.ads.googleads.v8.services.IMutateCustomerFeedsRequest): Promise<google.ads.googleads.v8.services.MutateCustomerFeedsResponse>;
                    }

                    namespace CustomerFeedService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomerFeedService#getCustomerFeed}.
                         * @param error Error, if any
                         * @param [response] CustomerFeed
                         */
                        type GetCustomerFeedCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CustomerFeed) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomerFeedService#mutateCustomerFeeds}.
                         * @param error Error, if any
                         * @param [response] MutateCustomerFeedsResponse
                         */
                        type MutateCustomerFeedsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateCustomerFeedsResponse) => void;
                    }

                    /** Properties of a GetCustomerFeedRequest. */
                    interface IGetCustomerFeedRequest {

                        /** GetCustomerFeedRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCustomerFeedRequest. */
                    class GetCustomerFeedRequest implements IGetCustomerFeedRequest {

                        /**
                         * Constructs a new GetCustomerFeedRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCustomerFeedRequest);

                        /** GetCustomerFeedRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCustomerFeedRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCustomerFeedRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCustomerFeedRequest): google.ads.googleads.v8.services.GetCustomerFeedRequest;

                        /**
                         * Encodes the specified GetCustomerFeedRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomerFeedRequest.verify|verify} messages.
                         * @param m GetCustomerFeedRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCustomerFeedRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCustomerFeedRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomerFeedRequest.verify|verify} messages.
                         * @param message GetCustomerFeedRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCustomerFeedRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCustomerFeedRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCustomerFeedRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCustomerFeedRequest;

                        /**
                         * Decodes a GetCustomerFeedRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCustomerFeedRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCustomerFeedRequest;

                        /**
                         * Verifies a GetCustomerFeedRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCustomerFeedRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCustomerFeedRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCustomerFeedRequest;

                        /**
                         * Creates a plain object from a GetCustomerFeedRequest message. Also converts values to other types if specified.
                         * @param m GetCustomerFeedRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCustomerFeedRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCustomerFeedRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomerFeedsRequest. */
                    interface IMutateCustomerFeedsRequest {

                        /** MutateCustomerFeedsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomerFeedsRequest operations */
                        operations?: (google.ads.googleads.v8.services.ICustomerFeedOperation[]|null);

                        /** MutateCustomerFeedsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateCustomerFeedsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateCustomerFeedsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCustomerFeedsRequest. */
                    class MutateCustomerFeedsRequest implements IMutateCustomerFeedsRequest {

                        /**
                         * Constructs a new MutateCustomerFeedsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomerFeedsRequest);

                        /** MutateCustomerFeedsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomerFeedsRequest operations. */
                        public operations: google.ads.googleads.v8.services.ICustomerFeedOperation[];

                        /** MutateCustomerFeedsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateCustomerFeedsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateCustomerFeedsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateCustomerFeedsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerFeedsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateCustomerFeedsRequest): google.ads.googleads.v8.services.MutateCustomerFeedsRequest;

                        /**
                         * Encodes the specified MutateCustomerFeedsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerFeedsRequest.verify|verify} messages.
                         * @param m MutateCustomerFeedsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerFeedsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerFeedsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerFeedsRequest.verify|verify} messages.
                         * @param message MutateCustomerFeedsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateCustomerFeedsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerFeedsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateCustomerFeedsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateCustomerFeedsRequest;

                        /**
                         * Decodes a MutateCustomerFeedsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerFeedsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateCustomerFeedsRequest;

                        /**
                         * Verifies a MutateCustomerFeedsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerFeedsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerFeedsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerFeedsRequest;

                        /**
                         * Creates a plain object from a MutateCustomerFeedsRequest message. Also converts values to other types if specified.
                         * @param m MutateCustomerFeedsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerFeedsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerFeedsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CustomerFeedOperation. */
                    interface ICustomerFeedOperation {

                        /** CustomerFeedOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomerFeedOperation create */
                        create?: (google.ads.googleads.v8.resources.ICustomerFeed|null);

                        /** CustomerFeedOperation update */
                        update?: (google.ads.googleads.v8.resources.ICustomerFeed|null);

                        /** CustomerFeedOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CustomerFeedOperation. */
                    class CustomerFeedOperation implements ICustomerFeedOperation {

                        /**
                         * Constructs a new CustomerFeedOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICustomerFeedOperation);

                        /** CustomerFeedOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomerFeedOperation create. */
                        public create?: (google.ads.googleads.v8.resources.ICustomerFeed|null);

                        /** CustomerFeedOperation update. */
                        public update?: (google.ads.googleads.v8.resources.ICustomerFeed|null);

                        /** CustomerFeedOperation remove. */
                        public remove?: (string|null);

                        /** CustomerFeedOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new CustomerFeedOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CustomerFeedOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.ICustomerFeedOperation): google.ads.googleads.v8.services.CustomerFeedOperation;

                        /**
                         * Encodes the specified CustomerFeedOperation message. Does not implicitly {@link google.ads.googleads.v8.services.CustomerFeedOperation.verify|verify} messages.
                         * @param m CustomerFeedOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICustomerFeedOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerFeedOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.CustomerFeedOperation.verify|verify} messages.
                         * @param message CustomerFeedOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.ICustomerFeedOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerFeedOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns CustomerFeedOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.CustomerFeedOperation;

                        /**
                         * Decodes a CustomerFeedOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CustomerFeedOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.CustomerFeedOperation;

                        /**
                         * Verifies a CustomerFeedOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerFeedOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerFeedOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CustomerFeedOperation;

                        /**
                         * Creates a plain object from a CustomerFeedOperation message. Also converts values to other types if specified.
                         * @param m CustomerFeedOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CustomerFeedOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerFeedOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomerFeedsResponse. */
                    interface IMutateCustomerFeedsResponse {

                        /** MutateCustomerFeedsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCustomerFeedsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateCustomerFeedResult[]|null);
                    }

                    /** Represents a MutateCustomerFeedsResponse. */
                    class MutateCustomerFeedsResponse implements IMutateCustomerFeedsResponse {

                        /**
                         * Constructs a new MutateCustomerFeedsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomerFeedsResponse);

                        /** MutateCustomerFeedsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCustomerFeedsResponse results. */
                        public results: google.ads.googleads.v8.services.IMutateCustomerFeedResult[];

                        /**
                         * Creates a new MutateCustomerFeedsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerFeedsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateCustomerFeedsResponse): google.ads.googleads.v8.services.MutateCustomerFeedsResponse;

                        /**
                         * Encodes the specified MutateCustomerFeedsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerFeedsResponse.verify|verify} messages.
                         * @param m MutateCustomerFeedsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerFeedsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerFeedsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerFeedsResponse.verify|verify} messages.
                         * @param message MutateCustomerFeedsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateCustomerFeedsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerFeedsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateCustomerFeedsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateCustomerFeedsResponse;

                        /**
                         * Decodes a MutateCustomerFeedsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerFeedsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateCustomerFeedsResponse;

                        /**
                         * Verifies a MutateCustomerFeedsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerFeedsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerFeedsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerFeedsResponse;

                        /**
                         * Creates a plain object from a MutateCustomerFeedsResponse message. Also converts values to other types if specified.
                         * @param m MutateCustomerFeedsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerFeedsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerFeedsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomerFeedResult. */
                    interface IMutateCustomerFeedResult {

                        /** MutateCustomerFeedResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCustomerFeedResult customer_feed */
                        customer_feed?: (google.ads.googleads.v8.resources.ICustomerFeed|null);
                    }

                    /** Represents a MutateCustomerFeedResult. */
                    class MutateCustomerFeedResult implements IMutateCustomerFeedResult {

                        /**
                         * Constructs a new MutateCustomerFeedResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomerFeedResult);

                        /** MutateCustomerFeedResult resource_name. */
                        public resource_name: string;

                        /** MutateCustomerFeedResult customer_feed. */
                        public customer_feed?: (google.ads.googleads.v8.resources.ICustomerFeed|null);

                        /**
                         * Creates a new MutateCustomerFeedResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateCustomerFeedResult instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateCustomerFeedResult): google.ads.googleads.v8.services.MutateCustomerFeedResult;

                        /**
                         * Encodes the specified MutateCustomerFeedResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerFeedResult.verify|verify} messages.
                         * @param m MutateCustomerFeedResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerFeedResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerFeedResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerFeedResult.verify|verify} messages.
                         * @param message MutateCustomerFeedResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateCustomerFeedResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerFeedResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateCustomerFeedResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateCustomerFeedResult;

                        /**
                         * Decodes a MutateCustomerFeedResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateCustomerFeedResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateCustomerFeedResult;

                        /**
                         * Verifies a MutateCustomerFeedResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerFeedResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerFeedResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerFeedResult;

                        /**
                         * Creates a plain object from a MutateCustomerFeedResult message. Also converts values to other types if specified.
                         * @param m MutateCustomerFeedResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerFeedResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerFeedResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetCustomerLabel.
                         * @param request GetCustomerLabelRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CustomerLabel
                         */
                        public getCustomerLabel(request: google.ads.googleads.v8.services.IGetCustomerLabelRequest, callback: google.ads.googleads.v8.services.CustomerLabelService.GetCustomerLabelCallback): void;

                        /**
                         * Calls GetCustomerLabel.
                         * @param request GetCustomerLabelRequest message or plain object
                         * @returns Promise
                         */
                        public getCustomerLabel(request: google.ads.googleads.v8.services.IGetCustomerLabelRequest): Promise<google.ads.googleads.v8.resources.CustomerLabel>;

                        /**
                         * 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.v8.services.IMutateCustomerLabelsRequest, callback: google.ads.googleads.v8.services.CustomerLabelService.MutateCustomerLabelsCallback): void;

                        /**
                         * Calls MutateCustomerLabels.
                         * @param request MutateCustomerLabelsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomerLabels(request: google.ads.googleads.v8.services.IMutateCustomerLabelsRequest): Promise<google.ads.googleads.v8.services.MutateCustomerLabelsResponse>;
                    }

                    namespace CustomerLabelService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomerLabelService#getCustomerLabel}.
                         * @param error Error, if any
                         * @param [response] CustomerLabel
                         */
                        type GetCustomerLabelCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CustomerLabel) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomerLabelService#mutateCustomerLabels}.
                         * @param error Error, if any
                         * @param [response] MutateCustomerLabelsResponse
                         */
                        type MutateCustomerLabelsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateCustomerLabelsResponse) => void;
                    }

                    /** Properties of a GetCustomerLabelRequest. */
                    interface IGetCustomerLabelRequest {

                        /** GetCustomerLabelRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCustomerLabelRequest. */
                    class GetCustomerLabelRequest implements IGetCustomerLabelRequest {

                        /**
                         * Constructs a new GetCustomerLabelRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCustomerLabelRequest);

                        /** GetCustomerLabelRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCustomerLabelRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCustomerLabelRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCustomerLabelRequest): google.ads.googleads.v8.services.GetCustomerLabelRequest;

                        /**
                         * Encodes the specified GetCustomerLabelRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomerLabelRequest.verify|verify} messages.
                         * @param m GetCustomerLabelRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCustomerLabelRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCustomerLabelRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomerLabelRequest.verify|verify} messages.
                         * @param message GetCustomerLabelRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCustomerLabelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCustomerLabelRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCustomerLabelRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCustomerLabelRequest;

                        /**
                         * Decodes a GetCustomerLabelRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCustomerLabelRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCustomerLabelRequest;

                        /**
                         * Verifies a GetCustomerLabelRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCustomerLabelRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCustomerLabelRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCustomerLabelRequest;

                        /**
                         * Creates a plain object from a GetCustomerLabelRequest message. Also converts values to other types if specified.
                         * @param m GetCustomerLabelRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCustomerLabelRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCustomerLabelRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomerLabelsRequest. */
                    interface IMutateCustomerLabelsRequest {

                        /** MutateCustomerLabelsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomerLabelsRequest operations */
                        operations?: (google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomerLabelsRequest);

                        /** MutateCustomerLabelsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomerLabelsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.services.IMutateCustomerLabelsRequest): google.ads.googleads.v8.services.MutateCustomerLabelsRequest;

                        /**
                         * Encodes the specified MutateCustomerLabelsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerLabelsRequest.verify|verify} messages.
                         * @param m MutateCustomerLabelsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerLabelsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerLabelsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomerLabelsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerLabelsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomerLabelsRequest;

                        /**
                         * Verifies a MutateCustomerLabelsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerLabelsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerLabelsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerLabelsRequest;

                        /**
                         * Creates a plain object from a MutateCustomerLabelsRequest message. Also converts values to other types if specified.
                         * @param m MutateCustomerLabelsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerLabelsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerLabelsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CustomerLabelOperation. */
                    interface ICustomerLabelOperation {

                        /** CustomerLabelOperation create */
                        create?: (google.ads.googleads.v8.resources.ICustomerLabel|null);

                        /** CustomerLabelOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CustomerLabelOperation. */
                    class CustomerLabelOperation implements ICustomerLabelOperation {

                        /**
                         * Constructs a new CustomerLabelOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICustomerLabelOperation);

                        /** CustomerLabelOperation create. */
                        public create?: (google.ads.googleads.v8.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.v8.services.ICustomerLabelOperation): google.ads.googleads.v8.services.CustomerLabelOperation;

                        /**
                         * Encodes the specified CustomerLabelOperation message. Does not implicitly {@link google.ads.googleads.v8.services.CustomerLabelOperation.verify|verify} messages.
                         * @param m CustomerLabelOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICustomerLabelOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerLabelOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICustomerLabelOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerLabelOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CustomerLabelOperation;

                        /**
                         * Verifies a CustomerLabelOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerLabelOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerLabelOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CustomerLabelOperation;

                        /**
                         * Creates a plain object from a CustomerLabelOperation message. Also converts values to other types if specified.
                         * @param m CustomerLabelOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CustomerLabelOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerLabelOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomerLabelsResponse. */
                    interface IMutateCustomerLabelsResponse {

                        /** MutateCustomerLabelsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCustomerLabelsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateCustomerLabelResult[]|null);
                    }

                    /** Represents a MutateCustomerLabelsResponse. */
                    class MutateCustomerLabelsResponse implements IMutateCustomerLabelsResponse {

                        /**
                         * Constructs a new MutateCustomerLabelsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomerLabelsResponse);

                        /** MutateCustomerLabelsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCustomerLabelsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateCustomerLabelsResponse): google.ads.googleads.v8.services.MutateCustomerLabelsResponse;

                        /**
                         * Encodes the specified MutateCustomerLabelsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerLabelsResponse.verify|verify} messages.
                         * @param m MutateCustomerLabelsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerLabelsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerLabelsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomerLabelsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerLabelsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomerLabelsResponse;

                        /**
                         * Verifies a MutateCustomerLabelsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerLabelsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerLabelsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerLabelsResponse;

                        /**
                         * Creates a plain object from a MutateCustomerLabelsResponse message. Also converts values to other types if specified.
                         * @param m MutateCustomerLabelsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerLabelsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerLabelsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IMutateCustomerLabelResult): google.ads.googleads.v8.services.MutateCustomerLabelResult;

                        /**
                         * Encodes the specified MutateCustomerLabelResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerLabelResult.verify|verify} messages.
                         * @param m MutateCustomerLabelResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerLabelResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerLabelResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomerLabelResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerLabelResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomerLabelResult;

                        /**
                         * Verifies a MutateCustomerLabelResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerLabelResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerLabelResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerLabelResult;

                        /**
                         * Creates a plain object from a MutateCustomerLabelResult message. Also converts values to other types if specified.
                         * @param m MutateCustomerLabelResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerLabelResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerLabelResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetCustomerNegativeCriterion.
                         * @param request GetCustomerNegativeCriterionRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CustomerNegativeCriterion
                         */
                        public getCustomerNegativeCriterion(request: google.ads.googleads.v8.services.IGetCustomerNegativeCriterionRequest, callback: google.ads.googleads.v8.services.CustomerNegativeCriterionService.GetCustomerNegativeCriterionCallback): void;

                        /**
                         * Calls GetCustomerNegativeCriterion.
                         * @param request GetCustomerNegativeCriterionRequest message or plain object
                         * @returns Promise
                         */
                        public getCustomerNegativeCriterion(request: google.ads.googleads.v8.services.IGetCustomerNegativeCriterionRequest): Promise<google.ads.googleads.v8.resources.CustomerNegativeCriterion>;

                        /**
                         * 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.v8.services.IMutateCustomerNegativeCriteriaRequest, callback: google.ads.googleads.v8.services.CustomerNegativeCriterionService.MutateCustomerNegativeCriteriaCallback): void;

                        /**
                         * Calls MutateCustomerNegativeCriteria.
                         * @param request MutateCustomerNegativeCriteriaRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomerNegativeCriteria(request: google.ads.googleads.v8.services.IMutateCustomerNegativeCriteriaRequest): Promise<google.ads.googleads.v8.services.MutateCustomerNegativeCriteriaResponse>;
                    }

                    namespace CustomerNegativeCriterionService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomerNegativeCriterionService#getCustomerNegativeCriterion}.
                         * @param error Error, if any
                         * @param [response] CustomerNegativeCriterion
                         */
                        type GetCustomerNegativeCriterionCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CustomerNegativeCriterion) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomerNegativeCriterionService#mutateCustomerNegativeCriteria}.
                         * @param error Error, if any
                         * @param [response] MutateCustomerNegativeCriteriaResponse
                         */
                        type MutateCustomerNegativeCriteriaCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateCustomerNegativeCriteriaResponse) => void;
                    }

                    /** Properties of a GetCustomerNegativeCriterionRequest. */
                    interface IGetCustomerNegativeCriterionRequest {

                        /** GetCustomerNegativeCriterionRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCustomerNegativeCriterionRequest. */
                    class GetCustomerNegativeCriterionRequest implements IGetCustomerNegativeCriterionRequest {

                        /**
                         * Constructs a new GetCustomerNegativeCriterionRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCustomerNegativeCriterionRequest);

                        /** GetCustomerNegativeCriterionRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCustomerNegativeCriterionRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCustomerNegativeCriterionRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCustomerNegativeCriterionRequest): google.ads.googleads.v8.services.GetCustomerNegativeCriterionRequest;

                        /**
                         * Encodes the specified GetCustomerNegativeCriterionRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomerNegativeCriterionRequest.verify|verify} messages.
                         * @param m GetCustomerNegativeCriterionRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCustomerNegativeCriterionRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCustomerNegativeCriterionRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomerNegativeCriterionRequest.verify|verify} messages.
                         * @param message GetCustomerNegativeCriterionRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCustomerNegativeCriterionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCustomerNegativeCriterionRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCustomerNegativeCriterionRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCustomerNegativeCriterionRequest;

                        /**
                         * Decodes a GetCustomerNegativeCriterionRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCustomerNegativeCriterionRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCustomerNegativeCriterionRequest;

                        /**
                         * Verifies a GetCustomerNegativeCriterionRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCustomerNegativeCriterionRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCustomerNegativeCriterionRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCustomerNegativeCriterionRequest;

                        /**
                         * Creates a plain object from a GetCustomerNegativeCriterionRequest message. Also converts values to other types if specified.
                         * @param m GetCustomerNegativeCriterionRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCustomerNegativeCriterionRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCustomerNegativeCriterionRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomerNegativeCriteriaRequest. */
                    interface IMutateCustomerNegativeCriteriaRequest {

                        /** MutateCustomerNegativeCriteriaRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomerNegativeCriteriaRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCustomerNegativeCriteriaRequest. */
                    class MutateCustomerNegativeCriteriaRequest implements IMutateCustomerNegativeCriteriaRequest {

                        /**
                         * Constructs a new MutateCustomerNegativeCriteriaRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomerNegativeCriteriaRequest);

                        /** MutateCustomerNegativeCriteriaRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomerNegativeCriteriaRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateCustomerNegativeCriteriaRequest): google.ads.googleads.v8.services.MutateCustomerNegativeCriteriaRequest;

                        /**
                         * Encodes the specified MutateCustomerNegativeCriteriaRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerNegativeCriteriaRequest.verify|verify} messages.
                         * @param m MutateCustomerNegativeCriteriaRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerNegativeCriteriaRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerNegativeCriteriaRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomerNegativeCriteriaRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerNegativeCriteriaRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomerNegativeCriteriaRequest;

                        /**
                         * Verifies a MutateCustomerNegativeCriteriaRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerNegativeCriteriaRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerNegativeCriteriaRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerNegativeCriteriaRequest;

                        /**
                         * Creates a plain object from a MutateCustomerNegativeCriteriaRequest message. Also converts values to other types if specified.
                         * @param m MutateCustomerNegativeCriteriaRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerNegativeCriteriaRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerNegativeCriteriaRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CustomerNegativeCriterionOperation. */
                    interface ICustomerNegativeCriterionOperation {

                        /** CustomerNegativeCriterionOperation create */
                        create?: (google.ads.googleads.v8.resources.ICustomerNegativeCriterion|null);

                        /** CustomerNegativeCriterionOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CustomerNegativeCriterionOperation. */
                    class CustomerNegativeCriterionOperation implements ICustomerNegativeCriterionOperation {

                        /**
                         * Constructs a new CustomerNegativeCriterionOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICustomerNegativeCriterionOperation);

                        /** CustomerNegativeCriterionOperation create. */
                        public create?: (google.ads.googleads.v8.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.v8.services.ICustomerNegativeCriterionOperation): google.ads.googleads.v8.services.CustomerNegativeCriterionOperation;

                        /**
                         * Encodes the specified CustomerNegativeCriterionOperation message. Does not implicitly {@link google.ads.googleads.v8.services.CustomerNegativeCriterionOperation.verify|verify} messages.
                         * @param m CustomerNegativeCriterionOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICustomerNegativeCriterionOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerNegativeCriterionOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICustomerNegativeCriterionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerNegativeCriterionOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CustomerNegativeCriterionOperation;

                        /**
                         * Verifies a CustomerNegativeCriterionOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerNegativeCriterionOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerNegativeCriterionOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CustomerNegativeCriterionOperation;

                        /**
                         * Creates a plain object from a CustomerNegativeCriterionOperation message. Also converts values to other types if specified.
                         * @param m CustomerNegativeCriterionOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CustomerNegativeCriterionOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerNegativeCriterionOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomerNegativeCriteriaResponse. */
                    interface IMutateCustomerNegativeCriteriaResponse {

                        /** MutateCustomerNegativeCriteriaResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCustomerNegativeCriteriaResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateCustomerNegativeCriteriaResult[]|null);
                    }

                    /** Represents a MutateCustomerNegativeCriteriaResponse. */
                    class MutateCustomerNegativeCriteriaResponse implements IMutateCustomerNegativeCriteriaResponse {

                        /**
                         * Constructs a new MutateCustomerNegativeCriteriaResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomerNegativeCriteriaResponse);

                        /** MutateCustomerNegativeCriteriaResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateCustomerNegativeCriteriaResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateCustomerNegativeCriteriaResponse): google.ads.googleads.v8.services.MutateCustomerNegativeCriteriaResponse;

                        /**
                         * Encodes the specified MutateCustomerNegativeCriteriaResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerNegativeCriteriaResponse.verify|verify} messages.
                         * @param m MutateCustomerNegativeCriteriaResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerNegativeCriteriaResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerNegativeCriteriaResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomerNegativeCriteriaResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerNegativeCriteriaResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomerNegativeCriteriaResponse;

                        /**
                         * Verifies a MutateCustomerNegativeCriteriaResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerNegativeCriteriaResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerNegativeCriteriaResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerNegativeCriteriaResponse;

                        /**
                         * Creates a plain object from a MutateCustomerNegativeCriteriaResponse message. Also converts values to other types if specified.
                         * @param m MutateCustomerNegativeCriteriaResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerNegativeCriteriaResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerNegativeCriteriaResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomerNegativeCriteriaResult. */
                    interface IMutateCustomerNegativeCriteriaResult {

                        /** MutateCustomerNegativeCriteriaResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCustomerNegativeCriteriaResult customer_negative_criterion */
                        customer_negative_criterion?: (google.ads.googleads.v8.resources.ICustomerNegativeCriterion|null);
                    }

                    /** Represents a MutateCustomerNegativeCriteriaResult. */
                    class MutateCustomerNegativeCriteriaResult implements IMutateCustomerNegativeCriteriaResult {

                        /**
                         * Constructs a new MutateCustomerNegativeCriteriaResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomerNegativeCriteriaResult);

                        /** MutateCustomerNegativeCriteriaResult resource_name. */
                        public resource_name: string;

                        /** MutateCustomerNegativeCriteriaResult customer_negative_criterion. */
                        public customer_negative_criterion?: (google.ads.googleads.v8.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.v8.services.IMutateCustomerNegativeCriteriaResult): google.ads.googleads.v8.services.MutateCustomerNegativeCriteriaResult;

                        /**
                         * Encodes the specified MutateCustomerNegativeCriteriaResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerNegativeCriteriaResult.verify|verify} messages.
                         * @param m MutateCustomerNegativeCriteriaResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerNegativeCriteriaResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerNegativeCriteriaResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomerNegativeCriteriaResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerNegativeCriteriaResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomerNegativeCriteriaResult;

                        /**
                         * Verifies a MutateCustomerNegativeCriteriaResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerNegativeCriteriaResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerNegativeCriteriaResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerNegativeCriteriaResult;

                        /**
                         * Creates a plain object from a MutateCustomerNegativeCriteriaResult message. Also converts values to other types if specified.
                         * @param m MutateCustomerNegativeCriteriaResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerNegativeCriteriaResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerNegativeCriteriaResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetCustomer.
                         * @param request GetCustomerRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Customer
                         */
                        public getCustomer(request: google.ads.googleads.v8.services.IGetCustomerRequest, callback: google.ads.googleads.v8.services.CustomerService.GetCustomerCallback): void;

                        /**
                         * Calls GetCustomer.
                         * @param request GetCustomerRequest message or plain object
                         * @returns Promise
                         */
                        public getCustomer(request: google.ads.googleads.v8.services.IGetCustomerRequest): Promise<google.ads.googleads.v8.resources.Customer>;

                        /**
                         * 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.v8.services.IMutateCustomerRequest, callback: google.ads.googleads.v8.services.CustomerService.MutateCustomerCallback): void;

                        /**
                         * Calls MutateCustomer.
                         * @param request MutateCustomerRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomer(request: google.ads.googleads.v8.services.IMutateCustomerRequest): Promise<google.ads.googleads.v8.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.v8.services.IListAccessibleCustomersRequest, callback: google.ads.googleads.v8.services.CustomerService.ListAccessibleCustomersCallback): void;

                        /**
                         * Calls ListAccessibleCustomers.
                         * @param request ListAccessibleCustomersRequest message or plain object
                         * @returns Promise
                         */
                        public listAccessibleCustomers(request: google.ads.googleads.v8.services.IListAccessibleCustomersRequest): Promise<google.ads.googleads.v8.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.v8.services.ICreateCustomerClientRequest, callback: google.ads.googleads.v8.services.CustomerService.CreateCustomerClientCallback): void;

                        /**
                         * Calls CreateCustomerClient.
                         * @param request CreateCustomerClientRequest message or plain object
                         * @returns Promise
                         */
                        public createCustomerClient(request: google.ads.googleads.v8.services.ICreateCustomerClientRequest): Promise<google.ads.googleads.v8.services.CreateCustomerClientResponse>;
                    }

                    namespace CustomerService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomerService#getCustomer}.
                         * @param error Error, if any
                         * @param [response] Customer
                         */
                        type GetCustomerCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.Customer) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomerService#mutateCustomer}.
                         * @param error Error, if any
                         * @param [response] MutateCustomerResponse
                         */
                        type MutateCustomerCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateCustomerResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomerService#listAccessibleCustomers}.
                         * @param error Error, if any
                         * @param [response] ListAccessibleCustomersResponse
                         */
                        type ListAccessibleCustomersCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.ListAccessibleCustomersResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomerService#createCustomerClient}.
                         * @param error Error, if any
                         * @param [response] CreateCustomerClientResponse
                         */
                        type CreateCustomerClientCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.CreateCustomerClientResponse) => void;
                    }

                    /** Properties of a GetCustomerRequest. */
                    interface IGetCustomerRequest {

                        /** GetCustomerRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCustomerRequest. */
                    class GetCustomerRequest implements IGetCustomerRequest {

                        /**
                         * Constructs a new GetCustomerRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCustomerRequest);

                        /** GetCustomerRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCustomerRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCustomerRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCustomerRequest): google.ads.googleads.v8.services.GetCustomerRequest;

                        /**
                         * Encodes the specified GetCustomerRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomerRequest.verify|verify} messages.
                         * @param m GetCustomerRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCustomerRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCustomerRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomerRequest.verify|verify} messages.
                         * @param message GetCustomerRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCustomerRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCustomerRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCustomerRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCustomerRequest;

                        /**
                         * Decodes a GetCustomerRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCustomerRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCustomerRequest;

                        /**
                         * Verifies a GetCustomerRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCustomerRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCustomerRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCustomerRequest;

                        /**
                         * Creates a plain object from a GetCustomerRequest message. Also converts values to other types if specified.
                         * @param m GetCustomerRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCustomerRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCustomerRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomerRequest. */
                    interface IMutateCustomerRequest {

                        /** MutateCustomerRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomerRequest operation */
                        operation?: (google.ads.googleads.v8.services.ICustomerOperation|null);

                        /** MutateCustomerRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateCustomerRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateCustomerRequest. */
                    class MutateCustomerRequest implements IMutateCustomerRequest {

                        /**
                         * Constructs a new MutateCustomerRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomerRequest);

                        /** MutateCustomerRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomerRequest operation. */
                        public operation?: (google.ads.googleads.v8.services.ICustomerOperation|null);

                        /** MutateCustomerRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateCustomerRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateCustomerRequest): google.ads.googleads.v8.services.MutateCustomerRequest;

                        /**
                         * Encodes the specified MutateCustomerRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerRequest.verify|verify} messages.
                         * @param m MutateCustomerRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomerRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomerRequest;

                        /**
                         * Verifies a MutateCustomerRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerRequest;

                        /**
                         * Creates a plain object from a MutateCustomerRequest message. Also converts values to other types if specified.
                         * @param m MutateCustomerRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CreateCustomerClientRequest. */
                    interface ICreateCustomerClientRequest {

                        /** CreateCustomerClientRequest customer_id */
                        customer_id?: (string|null);

                        /** CreateCustomerClientRequest customer_client */
                        customer_client?: (google.ads.googleads.v8.resources.ICustomer|null);

                        /** CreateCustomerClientRequest email_address */
                        email_address?: (string|null);

                        /** CreateCustomerClientRequest access_role */
                        access_role?: (google.ads.googleads.v8.enums.AccessRoleEnum.AccessRole|keyof typeof google.ads.googleads.v8.enums.AccessRoleEnum.AccessRole|null);

                        /** CreateCustomerClientRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a CreateCustomerClientRequest. */
                    class CreateCustomerClientRequest implements ICreateCustomerClientRequest {

                        /**
                         * Constructs a new CreateCustomerClientRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICreateCustomerClientRequest);

                        /** CreateCustomerClientRequest customer_id. */
                        public customer_id: string;

                        /** CreateCustomerClientRequest customer_client. */
                        public customer_client?: (google.ads.googleads.v8.resources.ICustomer|null);

                        /** CreateCustomerClientRequest email_address. */
                        public email_address?: (string|null);

                        /** CreateCustomerClientRequest access_role. */
                        public access_role: (google.ads.googleads.v8.enums.AccessRoleEnum.AccessRole|keyof typeof google.ads.googleads.v8.enums.AccessRoleEnum.AccessRole);

                        /** CreateCustomerClientRequest validate_only. */
                        public validate_only: boolean;

                        /** CreateCustomerClientRequest _email_address. */
                        public _email_address?: "email_address";

                        /**
                         * Creates a new CreateCustomerClientRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CreateCustomerClientRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.ICreateCustomerClientRequest): google.ads.googleads.v8.services.CreateCustomerClientRequest;

                        /**
                         * Encodes the specified CreateCustomerClientRequest message. Does not implicitly {@link google.ads.googleads.v8.services.CreateCustomerClientRequest.verify|verify} messages.
                         * @param m CreateCustomerClientRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICreateCustomerClientRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateCustomerClientRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICreateCustomerClientRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateCustomerClientRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CreateCustomerClientRequest;

                        /**
                         * Verifies a CreateCustomerClientRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CreateCustomerClientRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CreateCustomerClientRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CreateCustomerClientRequest;

                        /**
                         * Creates a plain object from a CreateCustomerClientRequest message. Also converts values to other types if specified.
                         * @param m CreateCustomerClientRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CreateCustomerClientRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateCustomerClientRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CustomerOperation. */
                    interface ICustomerOperation {

                        /** CustomerOperation update */
                        update?: (google.ads.googleads.v8.resources.ICustomer|null);

                        /** CustomerOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);
                    }

                    /** Represents a CustomerOperation. */
                    class CustomerOperation implements ICustomerOperation {

                        /**
                         * Constructs a new CustomerOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICustomerOperation);

                        /** CustomerOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.ICustomerOperation): google.ads.googleads.v8.services.CustomerOperation;

                        /**
                         * Encodes the specified CustomerOperation message. Does not implicitly {@link google.ads.googleads.v8.services.CustomerOperation.verify|verify} messages.
                         * @param m CustomerOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICustomerOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICustomerOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CustomerOperation;

                        /**
                         * Verifies a CustomerOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CustomerOperation;

                        /**
                         * Creates a plain object from a CustomerOperation message. Also converts values to other types if specified.
                         * @param m CustomerOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CustomerOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.ICreateCustomerClientResponse): google.ads.googleads.v8.services.CreateCustomerClientResponse;

                        /**
                         * Encodes the specified CreateCustomerClientResponse message. Does not implicitly {@link google.ads.googleads.v8.services.CreateCustomerClientResponse.verify|verify} messages.
                         * @param m CreateCustomerClientResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICreateCustomerClientResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateCustomerClientResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICreateCustomerClientResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateCustomerClientResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CreateCustomerClientResponse;

                        /**
                         * Verifies a CreateCustomerClientResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CreateCustomerClientResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CreateCustomerClientResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CreateCustomerClientResponse;

                        /**
                         * Creates a plain object from a CreateCustomerClientResponse message. Also converts values to other types if specified.
                         * @param m CreateCustomerClientResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CreateCustomerClientResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateCustomerClientResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomerResponse. */
                    interface IMutateCustomerResponse {

                        /** MutateCustomerResponse result */
                        result?: (google.ads.googleads.v8.services.IMutateCustomerResult|null);
                    }

                    /** Represents a MutateCustomerResponse. */
                    class MutateCustomerResponse implements IMutateCustomerResponse {

                        /**
                         * Constructs a new MutateCustomerResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomerResponse);

                        /** MutateCustomerResponse result. */
                        public result?: (google.ads.googleads.v8.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.v8.services.IMutateCustomerResponse): google.ads.googleads.v8.services.MutateCustomerResponse;

                        /**
                         * Encodes the specified MutateCustomerResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerResponse.verify|verify} messages.
                         * @param m MutateCustomerResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomerResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomerResponse;

                        /**
                         * Verifies a MutateCustomerResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerResponse;

                        /**
                         * Creates a plain object from a MutateCustomerResponse message. Also converts values to other types if specified.
                         * @param m MutateCustomerResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomerResult. */
                    interface IMutateCustomerResult {

                        /** MutateCustomerResult resource_name */
                        resource_name?: (string|null);

                        /** MutateCustomerResult customer */
                        customer?: (google.ads.googleads.v8.resources.ICustomer|null);
                    }

                    /** Represents a MutateCustomerResult. */
                    class MutateCustomerResult implements IMutateCustomerResult {

                        /**
                         * Constructs a new MutateCustomerResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomerResult);

                        /** MutateCustomerResult resource_name. */
                        public resource_name: string;

                        /** MutateCustomerResult customer. */
                        public customer?: (google.ads.googleads.v8.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.v8.services.IMutateCustomerResult): google.ads.googleads.v8.services.MutateCustomerResult;

                        /**
                         * Encodes the specified MutateCustomerResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerResult.verify|verify} messages.
                         * @param m MutateCustomerResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomerResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomerResult;

                        /**
                         * Verifies a MutateCustomerResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerResult;

                        /**
                         * Creates a plain object from a MutateCustomerResult message. Also converts values to other types if specified.
                         * @param m MutateCustomerResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ListAccessibleCustomersRequest. */
                    interface IListAccessibleCustomersRequest {
                    }

                    /** Represents a ListAccessibleCustomersRequest. */
                    class ListAccessibleCustomersRequest implements IListAccessibleCustomersRequest {

                        /**
                         * Constructs a new ListAccessibleCustomersRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IListAccessibleCustomersRequest): google.ads.googleads.v8.services.ListAccessibleCustomersRequest;

                        /**
                         * Encodes the specified ListAccessibleCustomersRequest message. Does not implicitly {@link google.ads.googleads.v8.services.ListAccessibleCustomersRequest.verify|verify} messages.
                         * @param m ListAccessibleCustomersRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IListAccessibleCustomersRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListAccessibleCustomersRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IListAccessibleCustomersRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListAccessibleCustomersRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ListAccessibleCustomersRequest;

                        /**
                         * Verifies a ListAccessibleCustomersRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListAccessibleCustomersRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ListAccessibleCustomersRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ListAccessibleCustomersRequest;

                        /**
                         * Creates a plain object from a ListAccessibleCustomersRequest message. Also converts values to other types if specified.
                         * @param m ListAccessibleCustomersRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ListAccessibleCustomersRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListAccessibleCustomersRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IListAccessibleCustomersResponse): google.ads.googleads.v8.services.ListAccessibleCustomersResponse;

                        /**
                         * Encodes the specified ListAccessibleCustomersResponse message. Does not implicitly {@link google.ads.googleads.v8.services.ListAccessibleCustomersResponse.verify|verify} messages.
                         * @param m ListAccessibleCustomersResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IListAccessibleCustomersResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListAccessibleCustomersResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IListAccessibleCustomersResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListAccessibleCustomersResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ListAccessibleCustomersResponse;

                        /**
                         * Verifies a ListAccessibleCustomersResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListAccessibleCustomersResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ListAccessibleCustomersResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ListAccessibleCustomersResponse;

                        /**
                         * Creates a plain object from a ListAccessibleCustomersResponse message. Also converts values to other types if specified.
                         * @param m ListAccessibleCustomersResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ListAccessibleCustomersResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListAccessibleCustomersResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents an ExtensionFeedItemService */
                    class ExtensionFeedItemService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new ExtensionFeedItemService 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 ExtensionFeedItemService 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): ExtensionFeedItemService;

                        /**
                         * Calls GetExtensionFeedItem.
                         * @param request GetExtensionFeedItemRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ExtensionFeedItem
                         */
                        public getExtensionFeedItem(request: google.ads.googleads.v8.services.IGetExtensionFeedItemRequest, callback: google.ads.googleads.v8.services.ExtensionFeedItemService.GetExtensionFeedItemCallback): void;

                        /**
                         * Calls GetExtensionFeedItem.
                         * @param request GetExtensionFeedItemRequest message or plain object
                         * @returns Promise
                         */
                        public getExtensionFeedItem(request: google.ads.googleads.v8.services.IGetExtensionFeedItemRequest): Promise<google.ads.googleads.v8.resources.ExtensionFeedItem>;

                        /**
                         * Calls MutateExtensionFeedItems.
                         * @param request MutateExtensionFeedItemsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateExtensionFeedItemsResponse
                         */
                        public mutateExtensionFeedItems(request: google.ads.googleads.v8.services.IMutateExtensionFeedItemsRequest, callback: google.ads.googleads.v8.services.ExtensionFeedItemService.MutateExtensionFeedItemsCallback): void;

                        /**
                         * Calls MutateExtensionFeedItems.
                         * @param request MutateExtensionFeedItemsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateExtensionFeedItems(request: google.ads.googleads.v8.services.IMutateExtensionFeedItemsRequest): Promise<google.ads.googleads.v8.services.MutateExtensionFeedItemsResponse>;
                    }

                    namespace ExtensionFeedItemService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ExtensionFeedItemService#getExtensionFeedItem}.
                         * @param error Error, if any
                         * @param [response] ExtensionFeedItem
                         */
                        type GetExtensionFeedItemCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.ExtensionFeedItem) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ExtensionFeedItemService#mutateExtensionFeedItems}.
                         * @param error Error, if any
                         * @param [response] MutateExtensionFeedItemsResponse
                         */
                        type MutateExtensionFeedItemsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateExtensionFeedItemsResponse) => void;
                    }

                    /** Properties of a GetExtensionFeedItemRequest. */
                    interface IGetExtensionFeedItemRequest {

                        /** GetExtensionFeedItemRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetExtensionFeedItemRequest. */
                    class GetExtensionFeedItemRequest implements IGetExtensionFeedItemRequest {

                        /**
                         * Constructs a new GetExtensionFeedItemRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetExtensionFeedItemRequest);

                        /** GetExtensionFeedItemRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetExtensionFeedItemRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetExtensionFeedItemRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetExtensionFeedItemRequest): google.ads.googleads.v8.services.GetExtensionFeedItemRequest;

                        /**
                         * Encodes the specified GetExtensionFeedItemRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetExtensionFeedItemRequest.verify|verify} messages.
                         * @param m GetExtensionFeedItemRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetExtensionFeedItemRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetExtensionFeedItemRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetExtensionFeedItemRequest.verify|verify} messages.
                         * @param message GetExtensionFeedItemRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetExtensionFeedItemRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetExtensionFeedItemRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetExtensionFeedItemRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetExtensionFeedItemRequest;

                        /**
                         * Decodes a GetExtensionFeedItemRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetExtensionFeedItemRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetExtensionFeedItemRequest;

                        /**
                         * Verifies a GetExtensionFeedItemRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetExtensionFeedItemRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetExtensionFeedItemRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetExtensionFeedItemRequest;

                        /**
                         * Creates a plain object from a GetExtensionFeedItemRequest message. Also converts values to other types if specified.
                         * @param m GetExtensionFeedItemRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetExtensionFeedItemRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetExtensionFeedItemRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateExtensionFeedItemsRequest. */
                    interface IMutateExtensionFeedItemsRequest {

                        /** MutateExtensionFeedItemsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateExtensionFeedItemsRequest operations */
                        operations?: (google.ads.googleads.v8.services.IExtensionFeedItemOperation[]|null);

                        /** MutateExtensionFeedItemsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateExtensionFeedItemsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateExtensionFeedItemsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateExtensionFeedItemsRequest. */
                    class MutateExtensionFeedItemsRequest implements IMutateExtensionFeedItemsRequest {

                        /**
                         * Constructs a new MutateExtensionFeedItemsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateExtensionFeedItemsRequest);

                        /** MutateExtensionFeedItemsRequest customer_id. */
                        public customer_id: string;

                        /** MutateExtensionFeedItemsRequest operations. */
                        public operations: google.ads.googleads.v8.services.IExtensionFeedItemOperation[];

                        /** MutateExtensionFeedItemsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateExtensionFeedItemsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateExtensionFeedItemsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateExtensionFeedItemsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateExtensionFeedItemsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateExtensionFeedItemsRequest): google.ads.googleads.v8.services.MutateExtensionFeedItemsRequest;

                        /**
                         * Encodes the specified MutateExtensionFeedItemsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateExtensionFeedItemsRequest.verify|verify} messages.
                         * @param m MutateExtensionFeedItemsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateExtensionFeedItemsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateExtensionFeedItemsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateExtensionFeedItemsRequest.verify|verify} messages.
                         * @param message MutateExtensionFeedItemsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateExtensionFeedItemsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateExtensionFeedItemsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateExtensionFeedItemsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateExtensionFeedItemsRequest;

                        /**
                         * Decodes a MutateExtensionFeedItemsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateExtensionFeedItemsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateExtensionFeedItemsRequest;

                        /**
                         * Verifies a MutateExtensionFeedItemsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateExtensionFeedItemsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateExtensionFeedItemsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateExtensionFeedItemsRequest;

                        /**
                         * Creates a plain object from a MutateExtensionFeedItemsRequest message. Also converts values to other types if specified.
                         * @param m MutateExtensionFeedItemsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateExtensionFeedItemsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateExtensionFeedItemsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an ExtensionFeedItemOperation. */
                    interface IExtensionFeedItemOperation {

                        /** ExtensionFeedItemOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** ExtensionFeedItemOperation create */
                        create?: (google.ads.googleads.v8.resources.IExtensionFeedItem|null);

                        /** ExtensionFeedItemOperation update */
                        update?: (google.ads.googleads.v8.resources.IExtensionFeedItem|null);

                        /** ExtensionFeedItemOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents an ExtensionFeedItemOperation. */
                    class ExtensionFeedItemOperation implements IExtensionFeedItemOperation {

                        /**
                         * Constructs a new ExtensionFeedItemOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IExtensionFeedItemOperation);

                        /** ExtensionFeedItemOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** ExtensionFeedItemOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IExtensionFeedItem|null);

                        /** ExtensionFeedItemOperation update. */
                        public update?: (google.ads.googleads.v8.resources.IExtensionFeedItem|null);

                        /** ExtensionFeedItemOperation remove. */
                        public remove?: (string|null);

                        /** ExtensionFeedItemOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new ExtensionFeedItemOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExtensionFeedItemOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IExtensionFeedItemOperation): google.ads.googleads.v8.services.ExtensionFeedItemOperation;

                        /**
                         * Encodes the specified ExtensionFeedItemOperation message. Does not implicitly {@link google.ads.googleads.v8.services.ExtensionFeedItemOperation.verify|verify} messages.
                         * @param m ExtensionFeedItemOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IExtensionFeedItemOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExtensionFeedItemOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.ExtensionFeedItemOperation.verify|verify} messages.
                         * @param message ExtensionFeedItemOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IExtensionFeedItemOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExtensionFeedItemOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns ExtensionFeedItemOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.ExtensionFeedItemOperation;

                        /**
                         * Decodes an ExtensionFeedItemOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ExtensionFeedItemOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.ExtensionFeedItemOperation;

                        /**
                         * Verifies an ExtensionFeedItemOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an ExtensionFeedItemOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ExtensionFeedItemOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ExtensionFeedItemOperation;

                        /**
                         * Creates a plain object from an ExtensionFeedItemOperation message. Also converts values to other types if specified.
                         * @param m ExtensionFeedItemOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ExtensionFeedItemOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExtensionFeedItemOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateExtensionFeedItemsResponse. */
                    interface IMutateExtensionFeedItemsResponse {

                        /** MutateExtensionFeedItemsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateExtensionFeedItemsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateExtensionFeedItemResult[]|null);
                    }

                    /** Represents a MutateExtensionFeedItemsResponse. */
                    class MutateExtensionFeedItemsResponse implements IMutateExtensionFeedItemsResponse {

                        /**
                         * Constructs a new MutateExtensionFeedItemsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateExtensionFeedItemsResponse);

                        /** MutateExtensionFeedItemsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateExtensionFeedItemsResponse results. */
                        public results: google.ads.googleads.v8.services.IMutateExtensionFeedItemResult[];

                        /**
                         * Creates a new MutateExtensionFeedItemsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateExtensionFeedItemsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateExtensionFeedItemsResponse): google.ads.googleads.v8.services.MutateExtensionFeedItemsResponse;

                        /**
                         * Encodes the specified MutateExtensionFeedItemsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateExtensionFeedItemsResponse.verify|verify} messages.
                         * @param m MutateExtensionFeedItemsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateExtensionFeedItemsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateExtensionFeedItemsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateExtensionFeedItemsResponse.verify|verify} messages.
                         * @param message MutateExtensionFeedItemsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateExtensionFeedItemsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateExtensionFeedItemsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateExtensionFeedItemsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateExtensionFeedItemsResponse;

                        /**
                         * Decodes a MutateExtensionFeedItemsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateExtensionFeedItemsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateExtensionFeedItemsResponse;

                        /**
                         * Verifies a MutateExtensionFeedItemsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateExtensionFeedItemsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateExtensionFeedItemsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateExtensionFeedItemsResponse;

                        /**
                         * Creates a plain object from a MutateExtensionFeedItemsResponse message. Also converts values to other types if specified.
                         * @param m MutateExtensionFeedItemsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateExtensionFeedItemsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateExtensionFeedItemsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateExtensionFeedItemResult. */
                    interface IMutateExtensionFeedItemResult {

                        /** MutateExtensionFeedItemResult resource_name */
                        resource_name?: (string|null);

                        /** MutateExtensionFeedItemResult extension_feed_item */
                        extension_feed_item?: (google.ads.googleads.v8.resources.IExtensionFeedItem|null);
                    }

                    /** Represents a MutateExtensionFeedItemResult. */
                    class MutateExtensionFeedItemResult implements IMutateExtensionFeedItemResult {

                        /**
                         * Constructs a new MutateExtensionFeedItemResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateExtensionFeedItemResult);

                        /** MutateExtensionFeedItemResult resource_name. */
                        public resource_name: string;

                        /** MutateExtensionFeedItemResult extension_feed_item. */
                        public extension_feed_item?: (google.ads.googleads.v8.resources.IExtensionFeedItem|null);

                        /**
                         * Creates a new MutateExtensionFeedItemResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateExtensionFeedItemResult instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateExtensionFeedItemResult): google.ads.googleads.v8.services.MutateExtensionFeedItemResult;

                        /**
                         * Encodes the specified MutateExtensionFeedItemResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateExtensionFeedItemResult.verify|verify} messages.
                         * @param m MutateExtensionFeedItemResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateExtensionFeedItemResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateExtensionFeedItemResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateExtensionFeedItemResult.verify|verify} messages.
                         * @param message MutateExtensionFeedItemResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateExtensionFeedItemResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateExtensionFeedItemResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateExtensionFeedItemResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateExtensionFeedItemResult;

                        /**
                         * Decodes a MutateExtensionFeedItemResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateExtensionFeedItemResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateExtensionFeedItemResult;

                        /**
                         * Verifies a MutateExtensionFeedItemResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateExtensionFeedItemResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateExtensionFeedItemResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateExtensionFeedItemResult;

                        /**
                         * Creates a plain object from a MutateExtensionFeedItemResult message. Also converts values to other types if specified.
                         * @param m MutateExtensionFeedItemResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateExtensionFeedItemResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateExtensionFeedItemResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a FeedItemService */
                    class FeedItemService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new FeedItemService 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 FeedItemService 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): FeedItemService;

                        /**
                         * Calls GetFeedItem.
                         * @param request GetFeedItemRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and FeedItem
                         */
                        public getFeedItem(request: google.ads.googleads.v8.services.IGetFeedItemRequest, callback: google.ads.googleads.v8.services.FeedItemService.GetFeedItemCallback): void;

                        /**
                         * Calls GetFeedItem.
                         * @param request GetFeedItemRequest message or plain object
                         * @returns Promise
                         */
                        public getFeedItem(request: google.ads.googleads.v8.services.IGetFeedItemRequest): Promise<google.ads.googleads.v8.resources.FeedItem>;

                        /**
                         * Calls MutateFeedItems.
                         * @param request MutateFeedItemsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateFeedItemsResponse
                         */
                        public mutateFeedItems(request: google.ads.googleads.v8.services.IMutateFeedItemsRequest, callback: google.ads.googleads.v8.services.FeedItemService.MutateFeedItemsCallback): void;

                        /**
                         * Calls MutateFeedItems.
                         * @param request MutateFeedItemsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateFeedItems(request: google.ads.googleads.v8.services.IMutateFeedItemsRequest): Promise<google.ads.googleads.v8.services.MutateFeedItemsResponse>;
                    }

                    namespace FeedItemService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.FeedItemService#getFeedItem}.
                         * @param error Error, if any
                         * @param [response] FeedItem
                         */
                        type GetFeedItemCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.FeedItem) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.FeedItemService#mutateFeedItems}.
                         * @param error Error, if any
                         * @param [response] MutateFeedItemsResponse
                         */
                        type MutateFeedItemsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateFeedItemsResponse) => void;
                    }

                    /** Properties of a GetFeedItemRequest. */
                    interface IGetFeedItemRequest {

                        /** GetFeedItemRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetFeedItemRequest. */
                    class GetFeedItemRequest implements IGetFeedItemRequest {

                        /**
                         * Constructs a new GetFeedItemRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetFeedItemRequest);

                        /** GetFeedItemRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetFeedItemRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetFeedItemRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetFeedItemRequest): google.ads.googleads.v8.services.GetFeedItemRequest;

                        /**
                         * Encodes the specified GetFeedItemRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetFeedItemRequest.verify|verify} messages.
                         * @param m GetFeedItemRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetFeedItemRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetFeedItemRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetFeedItemRequest.verify|verify} messages.
                         * @param message GetFeedItemRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetFeedItemRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetFeedItemRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetFeedItemRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetFeedItemRequest;

                        /**
                         * Decodes a GetFeedItemRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetFeedItemRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetFeedItemRequest;

                        /**
                         * Verifies a GetFeedItemRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetFeedItemRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetFeedItemRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetFeedItemRequest;

                        /**
                         * Creates a plain object from a GetFeedItemRequest message. Also converts values to other types if specified.
                         * @param m GetFeedItemRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetFeedItemRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetFeedItemRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateFeedItemsRequest. */
                    interface IMutateFeedItemsRequest {

                        /** MutateFeedItemsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateFeedItemsRequest operations */
                        operations?: (google.ads.googleads.v8.services.IFeedItemOperation[]|null);

                        /** MutateFeedItemsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateFeedItemsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateFeedItemsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateFeedItemsRequest. */
                    class MutateFeedItemsRequest implements IMutateFeedItemsRequest {

                        /**
                         * Constructs a new MutateFeedItemsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateFeedItemsRequest);

                        /** MutateFeedItemsRequest customer_id. */
                        public customer_id: string;

                        /** MutateFeedItemsRequest operations. */
                        public operations: google.ads.googleads.v8.services.IFeedItemOperation[];

                        /** MutateFeedItemsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateFeedItemsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateFeedItemsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateFeedItemsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateFeedItemsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateFeedItemsRequest): google.ads.googleads.v8.services.MutateFeedItemsRequest;

                        /**
                         * Encodes the specified MutateFeedItemsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedItemsRequest.verify|verify} messages.
                         * @param m MutateFeedItemsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateFeedItemsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateFeedItemsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedItemsRequest.verify|verify} messages.
                         * @param message MutateFeedItemsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateFeedItemsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateFeedItemsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateFeedItemsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateFeedItemsRequest;

                        /**
                         * Decodes a MutateFeedItemsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateFeedItemsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateFeedItemsRequest;

                        /**
                         * Verifies a MutateFeedItemsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateFeedItemsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateFeedItemsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateFeedItemsRequest;

                        /**
                         * Creates a plain object from a MutateFeedItemsRequest message. Also converts values to other types if specified.
                         * @param m MutateFeedItemsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateFeedItemsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateFeedItemsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a FeedItemOperation. */
                    interface IFeedItemOperation {

                        /** FeedItemOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** FeedItemOperation create */
                        create?: (google.ads.googleads.v8.resources.IFeedItem|null);

                        /** FeedItemOperation update */
                        update?: (google.ads.googleads.v8.resources.IFeedItem|null);

                        /** FeedItemOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a FeedItemOperation. */
                    class FeedItemOperation implements IFeedItemOperation {

                        /**
                         * Constructs a new FeedItemOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IFeedItemOperation);

                        /** FeedItemOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** FeedItemOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IFeedItem|null);

                        /** FeedItemOperation update. */
                        public update?: (google.ads.googleads.v8.resources.IFeedItem|null);

                        /** FeedItemOperation remove. */
                        public remove?: (string|null);

                        /** FeedItemOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new FeedItemOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedItemOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IFeedItemOperation): google.ads.googleads.v8.services.FeedItemOperation;

                        /**
                         * Encodes the specified FeedItemOperation message. Does not implicitly {@link google.ads.googleads.v8.services.FeedItemOperation.verify|verify} messages.
                         * @param m FeedItemOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IFeedItemOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.FeedItemOperation.verify|verify} messages.
                         * @param message FeedItemOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IFeedItemOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedItemOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.FeedItemOperation;

                        /**
                         * Decodes a FeedItemOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedItemOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.FeedItemOperation;

                        /**
                         * Verifies a FeedItemOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedItemOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.FeedItemOperation;

                        /**
                         * Creates a plain object from a FeedItemOperation message. Also converts values to other types if specified.
                         * @param m FeedItemOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.FeedItemOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateFeedItemsResponse. */
                    interface IMutateFeedItemsResponse {

                        /** MutateFeedItemsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateFeedItemsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateFeedItemResult[]|null);
                    }

                    /** Represents a MutateFeedItemsResponse. */
                    class MutateFeedItemsResponse implements IMutateFeedItemsResponse {

                        /**
                         * Constructs a new MutateFeedItemsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateFeedItemsResponse);

                        /** MutateFeedItemsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateFeedItemsResponse results. */
                        public results: google.ads.googleads.v8.services.IMutateFeedItemResult[];

                        /**
                         * Creates a new MutateFeedItemsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateFeedItemsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateFeedItemsResponse): google.ads.googleads.v8.services.MutateFeedItemsResponse;

                        /**
                         * Encodes the specified MutateFeedItemsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedItemsResponse.verify|verify} messages.
                         * @param m MutateFeedItemsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateFeedItemsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateFeedItemsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedItemsResponse.verify|verify} messages.
                         * @param message MutateFeedItemsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateFeedItemsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateFeedItemsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateFeedItemsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateFeedItemsResponse;

                        /**
                         * Decodes a MutateFeedItemsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateFeedItemsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateFeedItemsResponse;

                        /**
                         * Verifies a MutateFeedItemsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateFeedItemsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateFeedItemsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateFeedItemsResponse;

                        /**
                         * Creates a plain object from a MutateFeedItemsResponse message. Also converts values to other types if specified.
                         * @param m MutateFeedItemsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateFeedItemsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateFeedItemsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateFeedItemResult. */
                    interface IMutateFeedItemResult {

                        /** MutateFeedItemResult resource_name */
                        resource_name?: (string|null);

                        /** MutateFeedItemResult feed_item */
                        feed_item?: (google.ads.googleads.v8.resources.IFeedItem|null);
                    }

                    /** Represents a MutateFeedItemResult. */
                    class MutateFeedItemResult implements IMutateFeedItemResult {

                        /**
                         * Constructs a new MutateFeedItemResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateFeedItemResult);

                        /** MutateFeedItemResult resource_name. */
                        public resource_name: string;

                        /** MutateFeedItemResult feed_item. */
                        public feed_item?: (google.ads.googleads.v8.resources.IFeedItem|null);

                        /**
                         * Creates a new MutateFeedItemResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateFeedItemResult instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateFeedItemResult): google.ads.googleads.v8.services.MutateFeedItemResult;

                        /**
                         * Encodes the specified MutateFeedItemResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedItemResult.verify|verify} messages.
                         * @param m MutateFeedItemResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateFeedItemResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateFeedItemResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedItemResult.verify|verify} messages.
                         * @param message MutateFeedItemResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateFeedItemResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateFeedItemResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateFeedItemResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateFeedItemResult;

                        /**
                         * Decodes a MutateFeedItemResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateFeedItemResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateFeedItemResult;

                        /**
                         * Verifies a MutateFeedItemResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateFeedItemResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateFeedItemResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateFeedItemResult;

                        /**
                         * Creates a plain object from a MutateFeedItemResult message. Also converts values to other types if specified.
                         * @param m MutateFeedItemResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateFeedItemResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateFeedItemResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a FeedItemSetLinkService */
                    class FeedItemSetLinkService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new FeedItemSetLinkService 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 FeedItemSetLinkService 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): FeedItemSetLinkService;

                        /**
                         * Calls GetFeedItemSetLink.
                         * @param request GetFeedItemSetLinkRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and FeedItemSetLink
                         */
                        public getFeedItemSetLink(request: google.ads.googleads.v8.services.IGetFeedItemSetLinkRequest, callback: google.ads.googleads.v8.services.FeedItemSetLinkService.GetFeedItemSetLinkCallback): void;

                        /**
                         * Calls GetFeedItemSetLink.
                         * @param request GetFeedItemSetLinkRequest message or plain object
                         * @returns Promise
                         */
                        public getFeedItemSetLink(request: google.ads.googleads.v8.services.IGetFeedItemSetLinkRequest): Promise<google.ads.googleads.v8.resources.FeedItemSetLink>;

                        /**
                         * Calls MutateFeedItemSetLinks.
                         * @param request MutateFeedItemSetLinksRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateFeedItemSetLinksResponse
                         */
                        public mutateFeedItemSetLinks(request: google.ads.googleads.v8.services.IMutateFeedItemSetLinksRequest, callback: google.ads.googleads.v8.services.FeedItemSetLinkService.MutateFeedItemSetLinksCallback): void;

                        /**
                         * Calls MutateFeedItemSetLinks.
                         * @param request MutateFeedItemSetLinksRequest message or plain object
                         * @returns Promise
                         */
                        public mutateFeedItemSetLinks(request: google.ads.googleads.v8.services.IMutateFeedItemSetLinksRequest): Promise<google.ads.googleads.v8.services.MutateFeedItemSetLinksResponse>;
                    }

                    namespace FeedItemSetLinkService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.FeedItemSetLinkService#getFeedItemSetLink}.
                         * @param error Error, if any
                         * @param [response] FeedItemSetLink
                         */
                        type GetFeedItemSetLinkCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.FeedItemSetLink) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.FeedItemSetLinkService#mutateFeedItemSetLinks}.
                         * @param error Error, if any
                         * @param [response] MutateFeedItemSetLinksResponse
                         */
                        type MutateFeedItemSetLinksCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateFeedItemSetLinksResponse) => void;
                    }

                    /** Properties of a GetFeedItemSetLinkRequest. */
                    interface IGetFeedItemSetLinkRequest {

                        /** GetFeedItemSetLinkRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetFeedItemSetLinkRequest. */
                    class GetFeedItemSetLinkRequest implements IGetFeedItemSetLinkRequest {

                        /**
                         * Constructs a new GetFeedItemSetLinkRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetFeedItemSetLinkRequest);

                        /** GetFeedItemSetLinkRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetFeedItemSetLinkRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetFeedItemSetLinkRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetFeedItemSetLinkRequest): google.ads.googleads.v8.services.GetFeedItemSetLinkRequest;

                        /**
                         * Encodes the specified GetFeedItemSetLinkRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetFeedItemSetLinkRequest.verify|verify} messages.
                         * @param m GetFeedItemSetLinkRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetFeedItemSetLinkRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetFeedItemSetLinkRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetFeedItemSetLinkRequest.verify|verify} messages.
                         * @param message GetFeedItemSetLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetFeedItemSetLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetFeedItemSetLinkRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetFeedItemSetLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetFeedItemSetLinkRequest;

                        /**
                         * Decodes a GetFeedItemSetLinkRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetFeedItemSetLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetFeedItemSetLinkRequest;

                        /**
                         * Verifies a GetFeedItemSetLinkRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetFeedItemSetLinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetFeedItemSetLinkRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetFeedItemSetLinkRequest;

                        /**
                         * Creates a plain object from a GetFeedItemSetLinkRequest message. Also converts values to other types if specified.
                         * @param m GetFeedItemSetLinkRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetFeedItemSetLinkRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetFeedItemSetLinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateFeedItemSetLinksRequest. */
                    interface IMutateFeedItemSetLinksRequest {

                        /** MutateFeedItemSetLinksRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateFeedItemSetLinksRequest operations */
                        operations?: (google.ads.googleads.v8.services.IFeedItemSetLinkOperation[]|null);

                        /** MutateFeedItemSetLinksRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateFeedItemSetLinksRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateFeedItemSetLinksRequest. */
                    class MutateFeedItemSetLinksRequest implements IMutateFeedItemSetLinksRequest {

                        /**
                         * Constructs a new MutateFeedItemSetLinksRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateFeedItemSetLinksRequest);

                        /** MutateFeedItemSetLinksRequest customer_id. */
                        public customer_id: string;

                        /** MutateFeedItemSetLinksRequest operations. */
                        public operations: google.ads.googleads.v8.services.IFeedItemSetLinkOperation[];

                        /** MutateFeedItemSetLinksRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateFeedItemSetLinksRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateFeedItemSetLinksRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateFeedItemSetLinksRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateFeedItemSetLinksRequest): google.ads.googleads.v8.services.MutateFeedItemSetLinksRequest;

                        /**
                         * Encodes the specified MutateFeedItemSetLinksRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedItemSetLinksRequest.verify|verify} messages.
                         * @param m MutateFeedItemSetLinksRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateFeedItemSetLinksRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateFeedItemSetLinksRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedItemSetLinksRequest.verify|verify} messages.
                         * @param message MutateFeedItemSetLinksRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateFeedItemSetLinksRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateFeedItemSetLinksRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateFeedItemSetLinksRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateFeedItemSetLinksRequest;

                        /**
                         * Decodes a MutateFeedItemSetLinksRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateFeedItemSetLinksRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateFeedItemSetLinksRequest;

                        /**
                         * Verifies a MutateFeedItemSetLinksRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateFeedItemSetLinksRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateFeedItemSetLinksRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateFeedItemSetLinksRequest;

                        /**
                         * Creates a plain object from a MutateFeedItemSetLinksRequest message. Also converts values to other types if specified.
                         * @param m MutateFeedItemSetLinksRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateFeedItemSetLinksRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateFeedItemSetLinksRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a FeedItemSetLinkOperation. */
                    interface IFeedItemSetLinkOperation {

                        /** FeedItemSetLinkOperation create */
                        create?: (google.ads.googleads.v8.resources.IFeedItemSetLink|null);

                        /** FeedItemSetLinkOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a FeedItemSetLinkOperation. */
                    class FeedItemSetLinkOperation implements IFeedItemSetLinkOperation {

                        /**
                         * Constructs a new FeedItemSetLinkOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IFeedItemSetLinkOperation);

                        /** FeedItemSetLinkOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IFeedItemSetLink|null);

                        /** FeedItemSetLinkOperation remove. */
                        public remove?: (string|null);

                        /** FeedItemSetLinkOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new FeedItemSetLinkOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedItemSetLinkOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IFeedItemSetLinkOperation): google.ads.googleads.v8.services.FeedItemSetLinkOperation;

                        /**
                         * Encodes the specified FeedItemSetLinkOperation message. Does not implicitly {@link google.ads.googleads.v8.services.FeedItemSetLinkOperation.verify|verify} messages.
                         * @param m FeedItemSetLinkOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IFeedItemSetLinkOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemSetLinkOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.FeedItemSetLinkOperation.verify|verify} messages.
                         * @param message FeedItemSetLinkOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IFeedItemSetLinkOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemSetLinkOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedItemSetLinkOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.FeedItemSetLinkOperation;

                        /**
                         * Decodes a FeedItemSetLinkOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedItemSetLinkOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.FeedItemSetLinkOperation;

                        /**
                         * Verifies a FeedItemSetLinkOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemSetLinkOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedItemSetLinkOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.FeedItemSetLinkOperation;

                        /**
                         * Creates a plain object from a FeedItemSetLinkOperation message. Also converts values to other types if specified.
                         * @param m FeedItemSetLinkOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.FeedItemSetLinkOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemSetLinkOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateFeedItemSetLinksResponse. */
                    interface IMutateFeedItemSetLinksResponse {

                        /** MutateFeedItemSetLinksResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateFeedItemSetLinkResult[]|null);
                    }

                    /** Represents a MutateFeedItemSetLinksResponse. */
                    class MutateFeedItemSetLinksResponse implements IMutateFeedItemSetLinksResponse {

                        /**
                         * Constructs a new MutateFeedItemSetLinksResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateFeedItemSetLinksResponse);

                        /** MutateFeedItemSetLinksResponse results. */
                        public results: google.ads.googleads.v8.services.IMutateFeedItemSetLinkResult[];

                        /**
                         * Creates a new MutateFeedItemSetLinksResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateFeedItemSetLinksResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateFeedItemSetLinksResponse): google.ads.googleads.v8.services.MutateFeedItemSetLinksResponse;

                        /**
                         * Encodes the specified MutateFeedItemSetLinksResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedItemSetLinksResponse.verify|verify} messages.
                         * @param m MutateFeedItemSetLinksResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateFeedItemSetLinksResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateFeedItemSetLinksResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedItemSetLinksResponse.verify|verify} messages.
                         * @param message MutateFeedItemSetLinksResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateFeedItemSetLinksResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateFeedItemSetLinksResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateFeedItemSetLinksResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateFeedItemSetLinksResponse;

                        /**
                         * Decodes a MutateFeedItemSetLinksResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateFeedItemSetLinksResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateFeedItemSetLinksResponse;

                        /**
                         * Verifies a MutateFeedItemSetLinksResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateFeedItemSetLinksResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateFeedItemSetLinksResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateFeedItemSetLinksResponse;

                        /**
                         * Creates a plain object from a MutateFeedItemSetLinksResponse message. Also converts values to other types if specified.
                         * @param m MutateFeedItemSetLinksResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateFeedItemSetLinksResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateFeedItemSetLinksResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateFeedItemSetLinkResult. */
                    interface IMutateFeedItemSetLinkResult {

                        /** MutateFeedItemSetLinkResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateFeedItemSetLinkResult. */
                    class MutateFeedItemSetLinkResult implements IMutateFeedItemSetLinkResult {

                        /**
                         * Constructs a new MutateFeedItemSetLinkResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateFeedItemSetLinkResult);

                        /** MutateFeedItemSetLinkResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateFeedItemSetLinkResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateFeedItemSetLinkResult instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateFeedItemSetLinkResult): google.ads.googleads.v8.services.MutateFeedItemSetLinkResult;

                        /**
                         * Encodes the specified MutateFeedItemSetLinkResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedItemSetLinkResult.verify|verify} messages.
                         * @param m MutateFeedItemSetLinkResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateFeedItemSetLinkResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateFeedItemSetLinkResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedItemSetLinkResult.verify|verify} messages.
                         * @param message MutateFeedItemSetLinkResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateFeedItemSetLinkResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateFeedItemSetLinkResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateFeedItemSetLinkResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateFeedItemSetLinkResult;

                        /**
                         * Decodes a MutateFeedItemSetLinkResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateFeedItemSetLinkResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateFeedItemSetLinkResult;

                        /**
                         * Verifies a MutateFeedItemSetLinkResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateFeedItemSetLinkResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateFeedItemSetLinkResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateFeedItemSetLinkResult;

                        /**
                         * Creates a plain object from a MutateFeedItemSetLinkResult message. Also converts values to other types if specified.
                         * @param m MutateFeedItemSetLinkResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateFeedItemSetLinkResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateFeedItemSetLinkResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a FeedItemSetService */
                    class FeedItemSetService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new FeedItemSetService 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 FeedItemSetService 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): FeedItemSetService;

                        /**
                         * Calls GetFeedItemSet.
                         * @param request GetFeedItemSetRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and FeedItemSet
                         */
                        public getFeedItemSet(request: google.ads.googleads.v8.services.IGetFeedItemSetRequest, callback: google.ads.googleads.v8.services.FeedItemSetService.GetFeedItemSetCallback): void;

                        /**
                         * Calls GetFeedItemSet.
                         * @param request GetFeedItemSetRequest message or plain object
                         * @returns Promise
                         */
                        public getFeedItemSet(request: google.ads.googleads.v8.services.IGetFeedItemSetRequest): Promise<google.ads.googleads.v8.resources.FeedItemSet>;

                        /**
                         * Calls MutateFeedItemSets.
                         * @param request MutateFeedItemSetsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateFeedItemSetsResponse
                         */
                        public mutateFeedItemSets(request: google.ads.googleads.v8.services.IMutateFeedItemSetsRequest, callback: google.ads.googleads.v8.services.FeedItemSetService.MutateFeedItemSetsCallback): void;

                        /**
                         * Calls MutateFeedItemSets.
                         * @param request MutateFeedItemSetsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateFeedItemSets(request: google.ads.googleads.v8.services.IMutateFeedItemSetsRequest): Promise<google.ads.googleads.v8.services.MutateFeedItemSetsResponse>;
                    }

                    namespace FeedItemSetService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.FeedItemSetService#getFeedItemSet}.
                         * @param error Error, if any
                         * @param [response] FeedItemSet
                         */
                        type GetFeedItemSetCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.FeedItemSet) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.FeedItemSetService#mutateFeedItemSets}.
                         * @param error Error, if any
                         * @param [response] MutateFeedItemSetsResponse
                         */
                        type MutateFeedItemSetsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateFeedItemSetsResponse) => void;
                    }

                    /** Properties of a GetFeedItemSetRequest. */
                    interface IGetFeedItemSetRequest {

                        /** GetFeedItemSetRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetFeedItemSetRequest. */
                    class GetFeedItemSetRequest implements IGetFeedItemSetRequest {

                        /**
                         * Constructs a new GetFeedItemSetRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetFeedItemSetRequest);

                        /** GetFeedItemSetRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetFeedItemSetRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetFeedItemSetRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetFeedItemSetRequest): google.ads.googleads.v8.services.GetFeedItemSetRequest;

                        /**
                         * Encodes the specified GetFeedItemSetRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetFeedItemSetRequest.verify|verify} messages.
                         * @param m GetFeedItemSetRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetFeedItemSetRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetFeedItemSetRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetFeedItemSetRequest.verify|verify} messages.
                         * @param message GetFeedItemSetRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetFeedItemSetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetFeedItemSetRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetFeedItemSetRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetFeedItemSetRequest;

                        /**
                         * Decodes a GetFeedItemSetRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetFeedItemSetRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetFeedItemSetRequest;

                        /**
                         * Verifies a GetFeedItemSetRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetFeedItemSetRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetFeedItemSetRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetFeedItemSetRequest;

                        /**
                         * Creates a plain object from a GetFeedItemSetRequest message. Also converts values to other types if specified.
                         * @param m GetFeedItemSetRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetFeedItemSetRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetFeedItemSetRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateFeedItemSetsRequest. */
                    interface IMutateFeedItemSetsRequest {

                        /** MutateFeedItemSetsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateFeedItemSetsRequest operations */
                        operations?: (google.ads.googleads.v8.services.IFeedItemSetOperation[]|null);

                        /** MutateFeedItemSetsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateFeedItemSetsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateFeedItemSetsRequest. */
                    class MutateFeedItemSetsRequest implements IMutateFeedItemSetsRequest {

                        /**
                         * Constructs a new MutateFeedItemSetsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateFeedItemSetsRequest);

                        /** MutateFeedItemSetsRequest customer_id. */
                        public customer_id: string;

                        /** MutateFeedItemSetsRequest operations. */
                        public operations: google.ads.googleads.v8.services.IFeedItemSetOperation[];

                        /** MutateFeedItemSetsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateFeedItemSetsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateFeedItemSetsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateFeedItemSetsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateFeedItemSetsRequest): google.ads.googleads.v8.services.MutateFeedItemSetsRequest;

                        /**
                         * Encodes the specified MutateFeedItemSetsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedItemSetsRequest.verify|verify} messages.
                         * @param m MutateFeedItemSetsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateFeedItemSetsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateFeedItemSetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedItemSetsRequest.verify|verify} messages.
                         * @param message MutateFeedItemSetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateFeedItemSetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateFeedItemSetsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateFeedItemSetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateFeedItemSetsRequest;

                        /**
                         * Decodes a MutateFeedItemSetsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateFeedItemSetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateFeedItemSetsRequest;

                        /**
                         * Verifies a MutateFeedItemSetsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateFeedItemSetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateFeedItemSetsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateFeedItemSetsRequest;

                        /**
                         * Creates a plain object from a MutateFeedItemSetsRequest message. Also converts values to other types if specified.
                         * @param m MutateFeedItemSetsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateFeedItemSetsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateFeedItemSetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a FeedItemSetOperation. */
                    interface IFeedItemSetOperation {

                        /** FeedItemSetOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** FeedItemSetOperation create */
                        create?: (google.ads.googleads.v8.resources.IFeedItemSet|null);

                        /** FeedItemSetOperation update */
                        update?: (google.ads.googleads.v8.resources.IFeedItemSet|null);

                        /** FeedItemSetOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a FeedItemSetOperation. */
                    class FeedItemSetOperation implements IFeedItemSetOperation {

                        /**
                         * Constructs a new FeedItemSetOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IFeedItemSetOperation);

                        /** FeedItemSetOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** FeedItemSetOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IFeedItemSet|null);

                        /** FeedItemSetOperation update. */
                        public update?: (google.ads.googleads.v8.resources.IFeedItemSet|null);

                        /** FeedItemSetOperation remove. */
                        public remove?: (string|null);

                        /** FeedItemSetOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new FeedItemSetOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedItemSetOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IFeedItemSetOperation): google.ads.googleads.v8.services.FeedItemSetOperation;

                        /**
                         * Encodes the specified FeedItemSetOperation message. Does not implicitly {@link google.ads.googleads.v8.services.FeedItemSetOperation.verify|verify} messages.
                         * @param m FeedItemSetOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IFeedItemSetOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemSetOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.FeedItemSetOperation.verify|verify} messages.
                         * @param message FeedItemSetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IFeedItemSetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemSetOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedItemSetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.FeedItemSetOperation;

                        /**
                         * Decodes a FeedItemSetOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedItemSetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.FeedItemSetOperation;

                        /**
                         * Verifies a FeedItemSetOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemSetOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedItemSetOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.FeedItemSetOperation;

                        /**
                         * Creates a plain object from a FeedItemSetOperation message. Also converts values to other types if specified.
                         * @param m FeedItemSetOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.FeedItemSetOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemSetOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateFeedItemSetsResponse. */
                    interface IMutateFeedItemSetsResponse {

                        /** MutateFeedItemSetsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateFeedItemSetResult[]|null);
                    }

                    /** Represents a MutateFeedItemSetsResponse. */
                    class MutateFeedItemSetsResponse implements IMutateFeedItemSetsResponse {

                        /**
                         * Constructs a new MutateFeedItemSetsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateFeedItemSetsResponse);

                        /** MutateFeedItemSetsResponse results. */
                        public results: google.ads.googleads.v8.services.IMutateFeedItemSetResult[];

                        /**
                         * Creates a new MutateFeedItemSetsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateFeedItemSetsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateFeedItemSetsResponse): google.ads.googleads.v8.services.MutateFeedItemSetsResponse;

                        /**
                         * Encodes the specified MutateFeedItemSetsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedItemSetsResponse.verify|verify} messages.
                         * @param m MutateFeedItemSetsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateFeedItemSetsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateFeedItemSetsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedItemSetsResponse.verify|verify} messages.
                         * @param message MutateFeedItemSetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateFeedItemSetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateFeedItemSetsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateFeedItemSetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateFeedItemSetsResponse;

                        /**
                         * Decodes a MutateFeedItemSetsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateFeedItemSetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateFeedItemSetsResponse;

                        /**
                         * Verifies a MutateFeedItemSetsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateFeedItemSetsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateFeedItemSetsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateFeedItemSetsResponse;

                        /**
                         * Creates a plain object from a MutateFeedItemSetsResponse message. Also converts values to other types if specified.
                         * @param m MutateFeedItemSetsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateFeedItemSetsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateFeedItemSetsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateFeedItemSetResult. */
                    interface IMutateFeedItemSetResult {

                        /** MutateFeedItemSetResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateFeedItemSetResult. */
                    class MutateFeedItemSetResult implements IMutateFeedItemSetResult {

                        /**
                         * Constructs a new MutateFeedItemSetResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateFeedItemSetResult);

                        /** MutateFeedItemSetResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateFeedItemSetResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateFeedItemSetResult instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateFeedItemSetResult): google.ads.googleads.v8.services.MutateFeedItemSetResult;

                        /**
                         * Encodes the specified MutateFeedItemSetResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedItemSetResult.verify|verify} messages.
                         * @param m MutateFeedItemSetResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateFeedItemSetResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateFeedItemSetResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedItemSetResult.verify|verify} messages.
                         * @param message MutateFeedItemSetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateFeedItemSetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateFeedItemSetResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateFeedItemSetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateFeedItemSetResult;

                        /**
                         * Decodes a MutateFeedItemSetResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateFeedItemSetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateFeedItemSetResult;

                        /**
                         * Verifies a MutateFeedItemSetResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateFeedItemSetResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateFeedItemSetResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateFeedItemSetResult;

                        /**
                         * Creates a plain object from a MutateFeedItemSetResult message. Also converts values to other types if specified.
                         * @param m MutateFeedItemSetResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateFeedItemSetResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateFeedItemSetResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a FeedItemTargetService */
                    class FeedItemTargetService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new FeedItemTargetService 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 FeedItemTargetService 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): FeedItemTargetService;

                        /**
                         * Calls GetFeedItemTarget.
                         * @param request GetFeedItemTargetRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and FeedItemTarget
                         */
                        public getFeedItemTarget(request: google.ads.googleads.v8.services.IGetFeedItemTargetRequest, callback: google.ads.googleads.v8.services.FeedItemTargetService.GetFeedItemTargetCallback): void;

                        /**
                         * Calls GetFeedItemTarget.
                         * @param request GetFeedItemTargetRequest message or plain object
                         * @returns Promise
                         */
                        public getFeedItemTarget(request: google.ads.googleads.v8.services.IGetFeedItemTargetRequest): Promise<google.ads.googleads.v8.resources.FeedItemTarget>;

                        /**
                         * Calls MutateFeedItemTargets.
                         * @param request MutateFeedItemTargetsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateFeedItemTargetsResponse
                         */
                        public mutateFeedItemTargets(request: google.ads.googleads.v8.services.IMutateFeedItemTargetsRequest, callback: google.ads.googleads.v8.services.FeedItemTargetService.MutateFeedItemTargetsCallback): void;

                        /**
                         * Calls MutateFeedItemTargets.
                         * @param request MutateFeedItemTargetsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateFeedItemTargets(request: google.ads.googleads.v8.services.IMutateFeedItemTargetsRequest): Promise<google.ads.googleads.v8.services.MutateFeedItemTargetsResponse>;
                    }

                    namespace FeedItemTargetService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.FeedItemTargetService#getFeedItemTarget}.
                         * @param error Error, if any
                         * @param [response] FeedItemTarget
                         */
                        type GetFeedItemTargetCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.FeedItemTarget) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.FeedItemTargetService#mutateFeedItemTargets}.
                         * @param error Error, if any
                         * @param [response] MutateFeedItemTargetsResponse
                         */
                        type MutateFeedItemTargetsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateFeedItemTargetsResponse) => void;
                    }

                    /** Properties of a GetFeedItemTargetRequest. */
                    interface IGetFeedItemTargetRequest {

                        /** GetFeedItemTargetRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetFeedItemTargetRequest. */
                    class GetFeedItemTargetRequest implements IGetFeedItemTargetRequest {

                        /**
                         * Constructs a new GetFeedItemTargetRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetFeedItemTargetRequest);

                        /** GetFeedItemTargetRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetFeedItemTargetRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetFeedItemTargetRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetFeedItemTargetRequest): google.ads.googleads.v8.services.GetFeedItemTargetRequest;

                        /**
                         * Encodes the specified GetFeedItemTargetRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetFeedItemTargetRequest.verify|verify} messages.
                         * @param m GetFeedItemTargetRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetFeedItemTargetRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetFeedItemTargetRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetFeedItemTargetRequest.verify|verify} messages.
                         * @param message GetFeedItemTargetRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetFeedItemTargetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetFeedItemTargetRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetFeedItemTargetRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetFeedItemTargetRequest;

                        /**
                         * Decodes a GetFeedItemTargetRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetFeedItemTargetRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetFeedItemTargetRequest;

                        /**
                         * Verifies a GetFeedItemTargetRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetFeedItemTargetRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetFeedItemTargetRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetFeedItemTargetRequest;

                        /**
                         * Creates a plain object from a GetFeedItemTargetRequest message. Also converts values to other types if specified.
                         * @param m GetFeedItemTargetRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetFeedItemTargetRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetFeedItemTargetRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateFeedItemTargetsRequest. */
                    interface IMutateFeedItemTargetsRequest {

                        /** MutateFeedItemTargetsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateFeedItemTargetsRequest operations */
                        operations?: (google.ads.googleads.v8.services.IFeedItemTargetOperation[]|null);

                        /** MutateFeedItemTargetsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateFeedItemTargetsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);

                        /** MutateFeedItemTargetsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateFeedItemTargetsRequest. */
                    class MutateFeedItemTargetsRequest implements IMutateFeedItemTargetsRequest {

                        /**
                         * Constructs a new MutateFeedItemTargetsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateFeedItemTargetsRequest);

                        /** MutateFeedItemTargetsRequest customer_id. */
                        public customer_id: string;

                        /** MutateFeedItemTargetsRequest operations. */
                        public operations: google.ads.googleads.v8.services.IFeedItemTargetOperation[];

                        /** MutateFeedItemTargetsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateFeedItemTargetsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType);

                        /** MutateFeedItemTargetsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateFeedItemTargetsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateFeedItemTargetsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateFeedItemTargetsRequest): google.ads.googleads.v8.services.MutateFeedItemTargetsRequest;

                        /**
                         * Encodes the specified MutateFeedItemTargetsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedItemTargetsRequest.verify|verify} messages.
                         * @param m MutateFeedItemTargetsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateFeedItemTargetsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateFeedItemTargetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedItemTargetsRequest.verify|verify} messages.
                         * @param message MutateFeedItemTargetsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateFeedItemTargetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateFeedItemTargetsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateFeedItemTargetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateFeedItemTargetsRequest;

                        /**
                         * Decodes a MutateFeedItemTargetsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateFeedItemTargetsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateFeedItemTargetsRequest;

                        /**
                         * Verifies a MutateFeedItemTargetsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateFeedItemTargetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateFeedItemTargetsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateFeedItemTargetsRequest;

                        /**
                         * Creates a plain object from a MutateFeedItemTargetsRequest message. Also converts values to other types if specified.
                         * @param m MutateFeedItemTargetsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateFeedItemTargetsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateFeedItemTargetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a FeedItemTargetOperation. */
                    interface IFeedItemTargetOperation {

                        /** FeedItemTargetOperation create */
                        create?: (google.ads.googleads.v8.resources.IFeedItemTarget|null);

                        /** FeedItemTargetOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a FeedItemTargetOperation. */
                    class FeedItemTargetOperation implements IFeedItemTargetOperation {

                        /**
                         * Constructs a new FeedItemTargetOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IFeedItemTargetOperation);

                        /** FeedItemTargetOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IFeedItemTarget|null);

                        /** FeedItemTargetOperation remove. */
                        public remove?: (string|null);

                        /** FeedItemTargetOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new FeedItemTargetOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedItemTargetOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IFeedItemTargetOperation): google.ads.googleads.v8.services.FeedItemTargetOperation;

                        /**
                         * Encodes the specified FeedItemTargetOperation message. Does not implicitly {@link google.ads.googleads.v8.services.FeedItemTargetOperation.verify|verify} messages.
                         * @param m FeedItemTargetOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IFeedItemTargetOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedItemTargetOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.FeedItemTargetOperation.verify|verify} messages.
                         * @param message FeedItemTargetOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IFeedItemTargetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedItemTargetOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedItemTargetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.FeedItemTargetOperation;

                        /**
                         * Decodes a FeedItemTargetOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedItemTargetOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.FeedItemTargetOperation;

                        /**
                         * Verifies a FeedItemTargetOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedItemTargetOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedItemTargetOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.FeedItemTargetOperation;

                        /**
                         * Creates a plain object from a FeedItemTargetOperation message. Also converts values to other types if specified.
                         * @param m FeedItemTargetOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.FeedItemTargetOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedItemTargetOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateFeedItemTargetsResponse. */
                    interface IMutateFeedItemTargetsResponse {

                        /** MutateFeedItemTargetsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateFeedItemTargetsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateFeedItemTargetResult[]|null);
                    }

                    /** Represents a MutateFeedItemTargetsResponse. */
                    class MutateFeedItemTargetsResponse implements IMutateFeedItemTargetsResponse {

                        /**
                         * Constructs a new MutateFeedItemTargetsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateFeedItemTargetsResponse);

                        /** MutateFeedItemTargetsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateFeedItemTargetsResponse results. */
                        public results: google.ads.googleads.v8.services.IMutateFeedItemTargetResult[];

                        /**
                         * Creates a new MutateFeedItemTargetsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateFeedItemTargetsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateFeedItemTargetsResponse): google.ads.googleads.v8.services.MutateFeedItemTargetsResponse;

                        /**
                         * Encodes the specified MutateFeedItemTargetsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedItemTargetsResponse.verify|verify} messages.
                         * @param m MutateFeedItemTargetsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateFeedItemTargetsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateFeedItemTargetsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedItemTargetsResponse.verify|verify} messages.
                         * @param message MutateFeedItemTargetsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateFeedItemTargetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateFeedItemTargetsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateFeedItemTargetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateFeedItemTargetsResponse;

                        /**
                         * Decodes a MutateFeedItemTargetsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateFeedItemTargetsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateFeedItemTargetsResponse;

                        /**
                         * Verifies a MutateFeedItemTargetsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateFeedItemTargetsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateFeedItemTargetsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateFeedItemTargetsResponse;

                        /**
                         * Creates a plain object from a MutateFeedItemTargetsResponse message. Also converts values to other types if specified.
                         * @param m MutateFeedItemTargetsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateFeedItemTargetsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateFeedItemTargetsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateFeedItemTargetResult. */
                    interface IMutateFeedItemTargetResult {

                        /** MutateFeedItemTargetResult resource_name */
                        resource_name?: (string|null);

                        /** MutateFeedItemTargetResult feed_item_target */
                        feed_item_target?: (google.ads.googleads.v8.resources.IFeedItemTarget|null);
                    }

                    /** Represents a MutateFeedItemTargetResult. */
                    class MutateFeedItemTargetResult implements IMutateFeedItemTargetResult {

                        /**
                         * Constructs a new MutateFeedItemTargetResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateFeedItemTargetResult);

                        /** MutateFeedItemTargetResult resource_name. */
                        public resource_name: string;

                        /** MutateFeedItemTargetResult feed_item_target. */
                        public feed_item_target?: (google.ads.googleads.v8.resources.IFeedItemTarget|null);

                        /**
                         * Creates a new MutateFeedItemTargetResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateFeedItemTargetResult instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateFeedItemTargetResult): google.ads.googleads.v8.services.MutateFeedItemTargetResult;

                        /**
                         * Encodes the specified MutateFeedItemTargetResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedItemTargetResult.verify|verify} messages.
                         * @param m MutateFeedItemTargetResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateFeedItemTargetResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateFeedItemTargetResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedItemTargetResult.verify|verify} messages.
                         * @param message MutateFeedItemTargetResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateFeedItemTargetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateFeedItemTargetResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateFeedItemTargetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateFeedItemTargetResult;

                        /**
                         * Decodes a MutateFeedItemTargetResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateFeedItemTargetResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateFeedItemTargetResult;

                        /**
                         * Verifies a MutateFeedItemTargetResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateFeedItemTargetResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateFeedItemTargetResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateFeedItemTargetResult;

                        /**
                         * Creates a plain object from a MutateFeedItemTargetResult message. Also converts values to other types if specified.
                         * @param m MutateFeedItemTargetResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateFeedItemTargetResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateFeedItemTargetResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a FeedMappingService */
                    class FeedMappingService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new FeedMappingService 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 FeedMappingService 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): FeedMappingService;

                        /**
                         * Calls GetFeedMapping.
                         * @param request GetFeedMappingRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and FeedMapping
                         */
                        public getFeedMapping(request: google.ads.googleads.v8.services.IGetFeedMappingRequest, callback: google.ads.googleads.v8.services.FeedMappingService.GetFeedMappingCallback): void;

                        /**
                         * Calls GetFeedMapping.
                         * @param request GetFeedMappingRequest message or plain object
                         * @returns Promise
                         */
                        public getFeedMapping(request: google.ads.googleads.v8.services.IGetFeedMappingRequest): Promise<google.ads.googleads.v8.resources.FeedMapping>;

                        /**
                         * Calls MutateFeedMappings.
                         * @param request MutateFeedMappingsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateFeedMappingsResponse
                         */
                        public mutateFeedMappings(request: google.ads.googleads.v8.services.IMutateFeedMappingsRequest, callback: google.ads.googleads.v8.services.FeedMappingService.MutateFeedMappingsCallback): void;

                        /**
                         * Calls MutateFeedMappings.
                         * @param request MutateFeedMappingsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateFeedMappings(request: google.ads.googleads.v8.services.IMutateFeedMappingsRequest): Promise<google.ads.googleads.v8.services.MutateFeedMappingsResponse>;
                    }

                    namespace FeedMappingService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.FeedMappingService#getFeedMapping}.
                         * @param error Error, if any
                         * @param [response] FeedMapping
                         */
                        type GetFeedMappingCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.FeedMapping) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.FeedMappingService#mutateFeedMappings}.
                         * @param error Error, if any
                         * @param [response] MutateFeedMappingsResponse
                         */
                        type MutateFeedMappingsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateFeedMappingsResponse) => void;
                    }

                    /** Properties of a GetFeedMappingRequest. */
                    interface IGetFeedMappingRequest {

                        /** GetFeedMappingRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetFeedMappingRequest. */
                    class GetFeedMappingRequest implements IGetFeedMappingRequest {

                        /**
                         * Constructs a new GetFeedMappingRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetFeedMappingRequest);

                        /** GetFeedMappingRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetFeedMappingRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetFeedMappingRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetFeedMappingRequest): google.ads.googleads.v8.services.GetFeedMappingRequest;

                        /**
                         * Encodes the specified GetFeedMappingRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetFeedMappingRequest.verify|verify} messages.
                         * @param m GetFeedMappingRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetFeedMappingRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetFeedMappingRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetFeedMappingRequest.verify|verify} messages.
                         * @param message GetFeedMappingRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetFeedMappingRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetFeedMappingRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetFeedMappingRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetFeedMappingRequest;

                        /**
                         * Decodes a GetFeedMappingRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetFeedMappingRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetFeedMappingRequest;

                        /**
                         * Verifies a GetFeedMappingRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetFeedMappingRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetFeedMappingRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetFeedMappingRequest;

                        /**
                         * Creates a plain object from a GetFeedMappingRequest message. Also converts values to other types if specified.
                         * @param m GetFeedMappingRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetFeedMappingRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetFeedMappingRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateFeedMappingsRequest. */
                    interface IMutateFeedMappingsRequest {

                        /** MutateFeedMappingsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateFeedMappingsRequest operations */
                        operations?: (google.ads.googleads.v8.services.IFeedMappingOperation[]|null);

                        /** MutateFeedMappingsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateFeedMappingsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateFeedMappingsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateFeedMappingsRequest. */
                    class MutateFeedMappingsRequest implements IMutateFeedMappingsRequest {

                        /**
                         * Constructs a new MutateFeedMappingsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateFeedMappingsRequest);

                        /** MutateFeedMappingsRequest customer_id. */
                        public customer_id: string;

                        /** MutateFeedMappingsRequest operations. */
                        public operations: google.ads.googleads.v8.services.IFeedMappingOperation[];

                        /** MutateFeedMappingsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateFeedMappingsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateFeedMappingsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateFeedMappingsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateFeedMappingsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateFeedMappingsRequest): google.ads.googleads.v8.services.MutateFeedMappingsRequest;

                        /**
                         * Encodes the specified MutateFeedMappingsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedMappingsRequest.verify|verify} messages.
                         * @param m MutateFeedMappingsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateFeedMappingsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateFeedMappingsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedMappingsRequest.verify|verify} messages.
                         * @param message MutateFeedMappingsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateFeedMappingsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateFeedMappingsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateFeedMappingsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateFeedMappingsRequest;

                        /**
                         * Decodes a MutateFeedMappingsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateFeedMappingsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateFeedMappingsRequest;

                        /**
                         * Verifies a MutateFeedMappingsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateFeedMappingsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateFeedMappingsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateFeedMappingsRequest;

                        /**
                         * Creates a plain object from a MutateFeedMappingsRequest message. Also converts values to other types if specified.
                         * @param m MutateFeedMappingsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateFeedMappingsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateFeedMappingsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a FeedMappingOperation. */
                    interface IFeedMappingOperation {

                        /** FeedMappingOperation create */
                        create?: (google.ads.googleads.v8.resources.IFeedMapping|null);

                        /** FeedMappingOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a FeedMappingOperation. */
                    class FeedMappingOperation implements IFeedMappingOperation {

                        /**
                         * Constructs a new FeedMappingOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IFeedMappingOperation);

                        /** FeedMappingOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IFeedMapping|null);

                        /** FeedMappingOperation remove. */
                        public remove?: (string|null);

                        /** FeedMappingOperation operation. */
                        public operation?: ("create"|"remove");

                        /**
                         * Creates a new FeedMappingOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedMappingOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IFeedMappingOperation): google.ads.googleads.v8.services.FeedMappingOperation;

                        /**
                         * Encodes the specified FeedMappingOperation message. Does not implicitly {@link google.ads.googleads.v8.services.FeedMappingOperation.verify|verify} messages.
                         * @param m FeedMappingOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IFeedMappingOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedMappingOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.FeedMappingOperation.verify|verify} messages.
                         * @param message FeedMappingOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IFeedMappingOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedMappingOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedMappingOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.FeedMappingOperation;

                        /**
                         * Decodes a FeedMappingOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedMappingOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.FeedMappingOperation;

                        /**
                         * Verifies a FeedMappingOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedMappingOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedMappingOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.FeedMappingOperation;

                        /**
                         * Creates a plain object from a FeedMappingOperation message. Also converts values to other types if specified.
                         * @param m FeedMappingOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.FeedMappingOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedMappingOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateFeedMappingsResponse. */
                    interface IMutateFeedMappingsResponse {

                        /** MutateFeedMappingsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateFeedMappingsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateFeedMappingResult[]|null);
                    }

                    /** Represents a MutateFeedMappingsResponse. */
                    class MutateFeedMappingsResponse implements IMutateFeedMappingsResponse {

                        /**
                         * Constructs a new MutateFeedMappingsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateFeedMappingsResponse);

                        /** MutateFeedMappingsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateFeedMappingsResponse results. */
                        public results: google.ads.googleads.v8.services.IMutateFeedMappingResult[];

                        /**
                         * Creates a new MutateFeedMappingsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateFeedMappingsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateFeedMappingsResponse): google.ads.googleads.v8.services.MutateFeedMappingsResponse;

                        /**
                         * Encodes the specified MutateFeedMappingsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedMappingsResponse.verify|verify} messages.
                         * @param m MutateFeedMappingsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateFeedMappingsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateFeedMappingsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedMappingsResponse.verify|verify} messages.
                         * @param message MutateFeedMappingsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateFeedMappingsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateFeedMappingsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateFeedMappingsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateFeedMappingsResponse;

                        /**
                         * Decodes a MutateFeedMappingsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateFeedMappingsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateFeedMappingsResponse;

                        /**
                         * Verifies a MutateFeedMappingsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateFeedMappingsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateFeedMappingsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateFeedMappingsResponse;

                        /**
                         * Creates a plain object from a MutateFeedMappingsResponse message. Also converts values to other types if specified.
                         * @param m MutateFeedMappingsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateFeedMappingsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateFeedMappingsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateFeedMappingResult. */
                    interface IMutateFeedMappingResult {

                        /** MutateFeedMappingResult resource_name */
                        resource_name?: (string|null);

                        /** MutateFeedMappingResult feed_mapping */
                        feed_mapping?: (google.ads.googleads.v8.resources.IFeedMapping|null);
                    }

                    /** Represents a MutateFeedMappingResult. */
                    class MutateFeedMappingResult implements IMutateFeedMappingResult {

                        /**
                         * Constructs a new MutateFeedMappingResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateFeedMappingResult);

                        /** MutateFeedMappingResult resource_name. */
                        public resource_name: string;

                        /** MutateFeedMappingResult feed_mapping. */
                        public feed_mapping?: (google.ads.googleads.v8.resources.IFeedMapping|null);

                        /**
                         * Creates a new MutateFeedMappingResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateFeedMappingResult instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateFeedMappingResult): google.ads.googleads.v8.services.MutateFeedMappingResult;

                        /**
                         * Encodes the specified MutateFeedMappingResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedMappingResult.verify|verify} messages.
                         * @param m MutateFeedMappingResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateFeedMappingResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateFeedMappingResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedMappingResult.verify|verify} messages.
                         * @param message MutateFeedMappingResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateFeedMappingResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateFeedMappingResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateFeedMappingResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateFeedMappingResult;

                        /**
                         * Decodes a MutateFeedMappingResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateFeedMappingResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateFeedMappingResult;

                        /**
                         * Verifies a MutateFeedMappingResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateFeedMappingResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateFeedMappingResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateFeedMappingResult;

                        /**
                         * Creates a plain object from a MutateFeedMappingResult message. Also converts values to other types if specified.
                         * @param m MutateFeedMappingResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateFeedMappingResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateFeedMappingResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a FeedService */
                    class FeedService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new FeedService 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 FeedService 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): FeedService;

                        /**
                         * Calls GetFeed.
                         * @param request GetFeedRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Feed
                         */
                        public getFeed(request: google.ads.googleads.v8.services.IGetFeedRequest, callback: google.ads.googleads.v8.services.FeedService.GetFeedCallback): void;

                        /**
                         * Calls GetFeed.
                         * @param request GetFeedRequest message or plain object
                         * @returns Promise
                         */
                        public getFeed(request: google.ads.googleads.v8.services.IGetFeedRequest): Promise<google.ads.googleads.v8.resources.Feed>;

                        /**
                         * Calls MutateFeeds.
                         * @param request MutateFeedsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateFeedsResponse
                         */
                        public mutateFeeds(request: google.ads.googleads.v8.services.IMutateFeedsRequest, callback: google.ads.googleads.v8.services.FeedService.MutateFeedsCallback): void;

                        /**
                         * Calls MutateFeeds.
                         * @param request MutateFeedsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateFeeds(request: google.ads.googleads.v8.services.IMutateFeedsRequest): Promise<google.ads.googleads.v8.services.MutateFeedsResponse>;
                    }

                    namespace FeedService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.FeedService#getFeed}.
                         * @param error Error, if any
                         * @param [response] Feed
                         */
                        type GetFeedCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.Feed) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.FeedService#mutateFeeds}.
                         * @param error Error, if any
                         * @param [response] MutateFeedsResponse
                         */
                        type MutateFeedsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateFeedsResponse) => void;
                    }

                    /** Properties of a GetFeedRequest. */
                    interface IGetFeedRequest {

                        /** GetFeedRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetFeedRequest. */
                    class GetFeedRequest implements IGetFeedRequest {

                        /**
                         * Constructs a new GetFeedRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetFeedRequest);

                        /** GetFeedRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetFeedRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetFeedRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetFeedRequest): google.ads.googleads.v8.services.GetFeedRequest;

                        /**
                         * Encodes the specified GetFeedRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetFeedRequest.verify|verify} messages.
                         * @param m GetFeedRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetFeedRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetFeedRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetFeedRequest.verify|verify} messages.
                         * @param message GetFeedRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetFeedRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetFeedRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetFeedRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetFeedRequest;

                        /**
                         * Decodes a GetFeedRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetFeedRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetFeedRequest;

                        /**
                         * Verifies a GetFeedRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetFeedRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetFeedRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetFeedRequest;

                        /**
                         * Creates a plain object from a GetFeedRequest message. Also converts values to other types if specified.
                         * @param m GetFeedRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetFeedRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetFeedRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateFeedsRequest. */
                    interface IMutateFeedsRequest {

                        /** MutateFeedsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateFeedsRequest operations */
                        operations?: (google.ads.googleads.v8.services.IFeedOperation[]|null);

                        /** MutateFeedsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateFeedsRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateFeedsRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateFeedsRequest. */
                    class MutateFeedsRequest implements IMutateFeedsRequest {

                        /**
                         * Constructs a new MutateFeedsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateFeedsRequest);

                        /** MutateFeedsRequest customer_id. */
                        public customer_id: string;

                        /** MutateFeedsRequest operations. */
                        public operations: google.ads.googleads.v8.services.IFeedOperation[];

                        /** MutateFeedsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateFeedsRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateFeedsRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateFeedsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateFeedsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateFeedsRequest): google.ads.googleads.v8.services.MutateFeedsRequest;

                        /**
                         * Encodes the specified MutateFeedsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedsRequest.verify|verify} messages.
                         * @param m MutateFeedsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateFeedsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateFeedsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedsRequest.verify|verify} messages.
                         * @param message MutateFeedsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateFeedsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateFeedsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateFeedsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateFeedsRequest;

                        /**
                         * Decodes a MutateFeedsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateFeedsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateFeedsRequest;

                        /**
                         * Verifies a MutateFeedsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateFeedsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateFeedsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateFeedsRequest;

                        /**
                         * Creates a plain object from a MutateFeedsRequest message. Also converts values to other types if specified.
                         * @param m MutateFeedsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateFeedsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateFeedsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a FeedOperation. */
                    interface IFeedOperation {

                        /** FeedOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** FeedOperation create */
                        create?: (google.ads.googleads.v8.resources.IFeed|null);

                        /** FeedOperation update */
                        update?: (google.ads.googleads.v8.resources.IFeed|null);

                        /** FeedOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a FeedOperation. */
                    class FeedOperation implements IFeedOperation {

                        /**
                         * Constructs a new FeedOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IFeedOperation);

                        /** FeedOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** FeedOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IFeed|null);

                        /** FeedOperation update. */
                        public update?: (google.ads.googleads.v8.resources.IFeed|null);

                        /** FeedOperation remove. */
                        public remove?: (string|null);

                        /** FeedOperation operation. */
                        public operation?: ("create"|"update"|"remove");

                        /**
                         * Creates a new FeedOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FeedOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IFeedOperation): google.ads.googleads.v8.services.FeedOperation;

                        /**
                         * Encodes the specified FeedOperation message. Does not implicitly {@link google.ads.googleads.v8.services.FeedOperation.verify|verify} messages.
                         * @param m FeedOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IFeedOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FeedOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.FeedOperation.verify|verify} messages.
                         * @param message FeedOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IFeedOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FeedOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns FeedOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.FeedOperation;

                        /**
                         * Decodes a FeedOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FeedOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.FeedOperation;

                        /**
                         * Verifies a FeedOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FeedOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FeedOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.FeedOperation;

                        /**
                         * Creates a plain object from a FeedOperation message. Also converts values to other types if specified.
                         * @param m FeedOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.FeedOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FeedOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateFeedsResponse. */
                    interface IMutateFeedsResponse {

                        /** MutateFeedsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateFeedsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateFeedResult[]|null);
                    }

                    /** Represents a MutateFeedsResponse. */
                    class MutateFeedsResponse implements IMutateFeedsResponse {

                        /**
                         * Constructs a new MutateFeedsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateFeedsResponse);

                        /** MutateFeedsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateFeedsResponse results. */
                        public results: google.ads.googleads.v8.services.IMutateFeedResult[];

                        /**
                         * Creates a new MutateFeedsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateFeedsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateFeedsResponse): google.ads.googleads.v8.services.MutateFeedsResponse;

                        /**
                         * Encodes the specified MutateFeedsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedsResponse.verify|verify} messages.
                         * @param m MutateFeedsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateFeedsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateFeedsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedsResponse.verify|verify} messages.
                         * @param message MutateFeedsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateFeedsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateFeedsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateFeedsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateFeedsResponse;

                        /**
                         * Decodes a MutateFeedsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateFeedsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateFeedsResponse;

                        /**
                         * Verifies a MutateFeedsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateFeedsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateFeedsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateFeedsResponse;

                        /**
                         * Creates a plain object from a MutateFeedsResponse message. Also converts values to other types if specified.
                         * @param m MutateFeedsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateFeedsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateFeedsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateFeedResult. */
                    interface IMutateFeedResult {

                        /** MutateFeedResult resource_name */
                        resource_name?: (string|null);

                        /** MutateFeedResult feed */
                        feed?: (google.ads.googleads.v8.resources.IFeed|null);
                    }

                    /** Represents a MutateFeedResult. */
                    class MutateFeedResult implements IMutateFeedResult {

                        /**
                         * Constructs a new MutateFeedResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateFeedResult);

                        /** MutateFeedResult resource_name. */
                        public resource_name: string;

                        /** MutateFeedResult feed. */
                        public feed?: (google.ads.googleads.v8.resources.IFeed|null);

                        /**
                         * Creates a new MutateFeedResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateFeedResult instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateFeedResult): google.ads.googleads.v8.services.MutateFeedResult;

                        /**
                         * Encodes the specified MutateFeedResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedResult.verify|verify} messages.
                         * @param m MutateFeedResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateFeedResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateFeedResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateFeedResult.verify|verify} messages.
                         * @param message MutateFeedResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateFeedResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateFeedResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateFeedResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateFeedResult;

                        /**
                         * Decodes a MutateFeedResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateFeedResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateFeedResult;

                        /**
                         * Verifies a MutateFeedResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateFeedResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateFeedResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateFeedResult;

                        /**
                         * Creates a plain object from a MutateFeedResult message. Also converts values to other types if specified.
                         * @param m MutateFeedResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateFeedResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateFeedResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetKeywordPlanAdGroupKeyword.
                         * @param request GetKeywordPlanAdGroupKeywordRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and KeywordPlanAdGroupKeyword
                         */
                        public getKeywordPlanAdGroupKeyword(request: google.ads.googleads.v8.services.IGetKeywordPlanAdGroupKeywordRequest, callback: google.ads.googleads.v8.services.KeywordPlanAdGroupKeywordService.GetKeywordPlanAdGroupKeywordCallback): void;

                        /**
                         * Calls GetKeywordPlanAdGroupKeyword.
                         * @param request GetKeywordPlanAdGroupKeywordRequest message or plain object
                         * @returns Promise
                         */
                        public getKeywordPlanAdGroupKeyword(request: google.ads.googleads.v8.services.IGetKeywordPlanAdGroupKeywordRequest): Promise<google.ads.googleads.v8.resources.KeywordPlanAdGroupKeyword>;

                        /**
                         * 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.v8.services.IMutateKeywordPlanAdGroupKeywordsRequest, callback: google.ads.googleads.v8.services.KeywordPlanAdGroupKeywordService.MutateKeywordPlanAdGroupKeywordsCallback): void;

                        /**
                         * Calls MutateKeywordPlanAdGroupKeywords.
                         * @param request MutateKeywordPlanAdGroupKeywordsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateKeywordPlanAdGroupKeywords(request: google.ads.googleads.v8.services.IMutateKeywordPlanAdGroupKeywordsRequest): Promise<google.ads.googleads.v8.services.MutateKeywordPlanAdGroupKeywordsResponse>;
                    }

                    namespace KeywordPlanAdGroupKeywordService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.KeywordPlanAdGroupKeywordService#getKeywordPlanAdGroupKeyword}.
                         * @param error Error, if any
                         * @param [response] KeywordPlanAdGroupKeyword
                         */
                        type GetKeywordPlanAdGroupKeywordCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.KeywordPlanAdGroupKeyword) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.KeywordPlanAdGroupKeywordService#mutateKeywordPlanAdGroupKeywords}.
                         * @param error Error, if any
                         * @param [response] MutateKeywordPlanAdGroupKeywordsResponse
                         */
                        type MutateKeywordPlanAdGroupKeywordsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateKeywordPlanAdGroupKeywordsResponse) => void;
                    }

                    /** Properties of a GetKeywordPlanAdGroupKeywordRequest. */
                    interface IGetKeywordPlanAdGroupKeywordRequest {

                        /** GetKeywordPlanAdGroupKeywordRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetKeywordPlanAdGroupKeywordRequest. */
                    class GetKeywordPlanAdGroupKeywordRequest implements IGetKeywordPlanAdGroupKeywordRequest {

                        /**
                         * Constructs a new GetKeywordPlanAdGroupKeywordRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetKeywordPlanAdGroupKeywordRequest);

                        /** GetKeywordPlanAdGroupKeywordRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetKeywordPlanAdGroupKeywordRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetKeywordPlanAdGroupKeywordRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetKeywordPlanAdGroupKeywordRequest): google.ads.googleads.v8.services.GetKeywordPlanAdGroupKeywordRequest;

                        /**
                         * Encodes the specified GetKeywordPlanAdGroupKeywordRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetKeywordPlanAdGroupKeywordRequest.verify|verify} messages.
                         * @param m GetKeywordPlanAdGroupKeywordRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetKeywordPlanAdGroupKeywordRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetKeywordPlanAdGroupKeywordRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetKeywordPlanAdGroupKeywordRequest.verify|verify} messages.
                         * @param message GetKeywordPlanAdGroupKeywordRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetKeywordPlanAdGroupKeywordRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetKeywordPlanAdGroupKeywordRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetKeywordPlanAdGroupKeywordRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetKeywordPlanAdGroupKeywordRequest;

                        /**
                         * Decodes a GetKeywordPlanAdGroupKeywordRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetKeywordPlanAdGroupKeywordRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetKeywordPlanAdGroupKeywordRequest;

                        /**
                         * Verifies a GetKeywordPlanAdGroupKeywordRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetKeywordPlanAdGroupKeywordRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetKeywordPlanAdGroupKeywordRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetKeywordPlanAdGroupKeywordRequest;

                        /**
                         * Creates a plain object from a GetKeywordPlanAdGroupKeywordRequest message. Also converts values to other types if specified.
                         * @param m GetKeywordPlanAdGroupKeywordRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetKeywordPlanAdGroupKeywordRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetKeywordPlanAdGroupKeywordRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateKeywordPlanAdGroupKeywordsRequest. */
                    interface IMutateKeywordPlanAdGroupKeywordsRequest {

                        /** MutateKeywordPlanAdGroupKeywordsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateKeywordPlanAdGroupKeywordsRequest operations */
                        operations?: (google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateKeywordPlanAdGroupKeywordsRequest);

                        /** MutateKeywordPlanAdGroupKeywordsRequest customer_id. */
                        public customer_id: string;

                        /** MutateKeywordPlanAdGroupKeywordsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.services.IMutateKeywordPlanAdGroupKeywordsRequest): google.ads.googleads.v8.services.MutateKeywordPlanAdGroupKeywordsRequest;

                        /**
                         * Encodes the specified MutateKeywordPlanAdGroupKeywordsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateKeywordPlanAdGroupKeywordsRequest.verify|verify} messages.
                         * @param m MutateKeywordPlanAdGroupKeywordsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateKeywordPlanAdGroupKeywordsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlanAdGroupKeywordsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateKeywordPlanAdGroupKeywordsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlanAdGroupKeywordsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateKeywordPlanAdGroupKeywordsRequest;

                        /**
                         * Verifies a MutateKeywordPlanAdGroupKeywordsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlanAdGroupKeywordsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateKeywordPlanAdGroupKeywordsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateKeywordPlanAdGroupKeywordsRequest;

                        /**
                         * Creates a plain object from a MutateKeywordPlanAdGroupKeywordsRequest message. Also converts values to other types if specified.
                         * @param m MutateKeywordPlanAdGroupKeywordsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateKeywordPlanAdGroupKeywordsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlanAdGroupKeywordsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a KeywordPlanAdGroupKeywordOperation. */
                    interface IKeywordPlanAdGroupKeywordOperation {

                        /** KeywordPlanAdGroupKeywordOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** KeywordPlanAdGroupKeywordOperation create */
                        create?: (google.ads.googleads.v8.resources.IKeywordPlanAdGroupKeyword|null);

                        /** KeywordPlanAdGroupKeywordOperation update */
                        update?: (google.ads.googleads.v8.resources.IKeywordPlanAdGroupKeyword|null);

                        /** KeywordPlanAdGroupKeywordOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a KeywordPlanAdGroupKeywordOperation. */
                    class KeywordPlanAdGroupKeywordOperation implements IKeywordPlanAdGroupKeywordOperation {

                        /**
                         * Constructs a new KeywordPlanAdGroupKeywordOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IKeywordPlanAdGroupKeywordOperation);

                        /** KeywordPlanAdGroupKeywordOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** KeywordPlanAdGroupKeywordOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IKeywordPlanAdGroupKeyword|null);

                        /** KeywordPlanAdGroupKeywordOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.IKeywordPlanAdGroupKeywordOperation): google.ads.googleads.v8.services.KeywordPlanAdGroupKeywordOperation;

                        /**
                         * Encodes the specified KeywordPlanAdGroupKeywordOperation message. Does not implicitly {@link google.ads.googleads.v8.services.KeywordPlanAdGroupKeywordOperation.verify|verify} messages.
                         * @param m KeywordPlanAdGroupKeywordOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IKeywordPlanAdGroupKeywordOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanAdGroupKeywordOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IKeywordPlanAdGroupKeywordOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanAdGroupKeywordOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.KeywordPlanAdGroupKeywordOperation;

                        /**
                         * Verifies a KeywordPlanAdGroupKeywordOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanAdGroupKeywordOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanAdGroupKeywordOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.KeywordPlanAdGroupKeywordOperation;

                        /**
                         * Creates a plain object from a KeywordPlanAdGroupKeywordOperation message. Also converts values to other types if specified.
                         * @param m KeywordPlanAdGroupKeywordOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.KeywordPlanAdGroupKeywordOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanAdGroupKeywordOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateKeywordPlanAdGroupKeywordsResponse. */
                    interface IMutateKeywordPlanAdGroupKeywordsResponse {

                        /** MutateKeywordPlanAdGroupKeywordsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateKeywordPlanAdGroupKeywordsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateKeywordPlanAdGroupKeywordResult[]|null);
                    }

                    /** Represents a MutateKeywordPlanAdGroupKeywordsResponse. */
                    class MutateKeywordPlanAdGroupKeywordsResponse implements IMutateKeywordPlanAdGroupKeywordsResponse {

                        /**
                         * Constructs a new MutateKeywordPlanAdGroupKeywordsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateKeywordPlanAdGroupKeywordsResponse);

                        /** MutateKeywordPlanAdGroupKeywordsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateKeywordPlanAdGroupKeywordsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateKeywordPlanAdGroupKeywordsResponse): google.ads.googleads.v8.services.MutateKeywordPlanAdGroupKeywordsResponse;

                        /**
                         * Encodes the specified MutateKeywordPlanAdGroupKeywordsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateKeywordPlanAdGroupKeywordsResponse.verify|verify} messages.
                         * @param m MutateKeywordPlanAdGroupKeywordsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateKeywordPlanAdGroupKeywordsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlanAdGroupKeywordsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateKeywordPlanAdGroupKeywordsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlanAdGroupKeywordsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateKeywordPlanAdGroupKeywordsResponse;

                        /**
                         * Verifies a MutateKeywordPlanAdGroupKeywordsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlanAdGroupKeywordsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateKeywordPlanAdGroupKeywordsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateKeywordPlanAdGroupKeywordsResponse;

                        /**
                         * Creates a plain object from a MutateKeywordPlanAdGroupKeywordsResponse message. Also converts values to other types if specified.
                         * @param m MutateKeywordPlanAdGroupKeywordsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateKeywordPlanAdGroupKeywordsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlanAdGroupKeywordsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IMutateKeywordPlanAdGroupKeywordResult): google.ads.googleads.v8.services.MutateKeywordPlanAdGroupKeywordResult;

                        /**
                         * Encodes the specified MutateKeywordPlanAdGroupKeywordResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateKeywordPlanAdGroupKeywordResult.verify|verify} messages.
                         * @param m MutateKeywordPlanAdGroupKeywordResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateKeywordPlanAdGroupKeywordResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlanAdGroupKeywordResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateKeywordPlanAdGroupKeywordResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlanAdGroupKeywordResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateKeywordPlanAdGroupKeywordResult;

                        /**
                         * Verifies a MutateKeywordPlanAdGroupKeywordResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlanAdGroupKeywordResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateKeywordPlanAdGroupKeywordResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateKeywordPlanAdGroupKeywordResult;

                        /**
                         * Creates a plain object from a MutateKeywordPlanAdGroupKeywordResult message. Also converts values to other types if specified.
                         * @param m MutateKeywordPlanAdGroupKeywordResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateKeywordPlanAdGroupKeywordResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlanAdGroupKeywordResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetKeywordPlanAdGroup.
                         * @param request GetKeywordPlanAdGroupRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and KeywordPlanAdGroup
                         */
                        public getKeywordPlanAdGroup(request: google.ads.googleads.v8.services.IGetKeywordPlanAdGroupRequest, callback: google.ads.googleads.v8.services.KeywordPlanAdGroupService.GetKeywordPlanAdGroupCallback): void;

                        /**
                         * Calls GetKeywordPlanAdGroup.
                         * @param request GetKeywordPlanAdGroupRequest message or plain object
                         * @returns Promise
                         */
                        public getKeywordPlanAdGroup(request: google.ads.googleads.v8.services.IGetKeywordPlanAdGroupRequest): Promise<google.ads.googleads.v8.resources.KeywordPlanAdGroup>;

                        /**
                         * 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.v8.services.IMutateKeywordPlanAdGroupsRequest, callback: google.ads.googleads.v8.services.KeywordPlanAdGroupService.MutateKeywordPlanAdGroupsCallback): void;

                        /**
                         * Calls MutateKeywordPlanAdGroups.
                         * @param request MutateKeywordPlanAdGroupsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateKeywordPlanAdGroups(request: google.ads.googleads.v8.services.IMutateKeywordPlanAdGroupsRequest): Promise<google.ads.googleads.v8.services.MutateKeywordPlanAdGroupsResponse>;
                    }

                    namespace KeywordPlanAdGroupService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.KeywordPlanAdGroupService#getKeywordPlanAdGroup}.
                         * @param error Error, if any
                         * @param [response] KeywordPlanAdGroup
                         */
                        type GetKeywordPlanAdGroupCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.KeywordPlanAdGroup) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.KeywordPlanAdGroupService#mutateKeywordPlanAdGroups}.
                         * @param error Error, if any
                         * @param [response] MutateKeywordPlanAdGroupsResponse
                         */
                        type MutateKeywordPlanAdGroupsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateKeywordPlanAdGroupsResponse) => void;
                    }

                    /** Properties of a GetKeywordPlanAdGroupRequest. */
                    interface IGetKeywordPlanAdGroupRequest {

                        /** GetKeywordPlanAdGroupRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetKeywordPlanAdGroupRequest. */
                    class GetKeywordPlanAdGroupRequest implements IGetKeywordPlanAdGroupRequest {

                        /**
                         * Constructs a new GetKeywordPlanAdGroupRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetKeywordPlanAdGroupRequest);

                        /** GetKeywordPlanAdGroupRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetKeywordPlanAdGroupRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetKeywordPlanAdGroupRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetKeywordPlanAdGroupRequest): google.ads.googleads.v8.services.GetKeywordPlanAdGroupRequest;

                        /**
                         * Encodes the specified GetKeywordPlanAdGroupRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetKeywordPlanAdGroupRequest.verify|verify} messages.
                         * @param m GetKeywordPlanAdGroupRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetKeywordPlanAdGroupRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetKeywordPlanAdGroupRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetKeywordPlanAdGroupRequest.verify|verify} messages.
                         * @param message GetKeywordPlanAdGroupRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetKeywordPlanAdGroupRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetKeywordPlanAdGroupRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetKeywordPlanAdGroupRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetKeywordPlanAdGroupRequest;

                        /**
                         * Decodes a GetKeywordPlanAdGroupRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetKeywordPlanAdGroupRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetKeywordPlanAdGroupRequest;

                        /**
                         * Verifies a GetKeywordPlanAdGroupRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetKeywordPlanAdGroupRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetKeywordPlanAdGroupRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetKeywordPlanAdGroupRequest;

                        /**
                         * Creates a plain object from a GetKeywordPlanAdGroupRequest message. Also converts values to other types if specified.
                         * @param m GetKeywordPlanAdGroupRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetKeywordPlanAdGroupRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetKeywordPlanAdGroupRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateKeywordPlanAdGroupsRequest. */
                    interface IMutateKeywordPlanAdGroupsRequest {

                        /** MutateKeywordPlanAdGroupsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateKeywordPlanAdGroupsRequest operations */
                        operations?: (google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateKeywordPlanAdGroupsRequest);

                        /** MutateKeywordPlanAdGroupsRequest customer_id. */
                        public customer_id: string;

                        /** MutateKeywordPlanAdGroupsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.services.IMutateKeywordPlanAdGroupsRequest): google.ads.googleads.v8.services.MutateKeywordPlanAdGroupsRequest;

                        /**
                         * Encodes the specified MutateKeywordPlanAdGroupsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateKeywordPlanAdGroupsRequest.verify|verify} messages.
                         * @param m MutateKeywordPlanAdGroupsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateKeywordPlanAdGroupsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlanAdGroupsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateKeywordPlanAdGroupsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlanAdGroupsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateKeywordPlanAdGroupsRequest;

                        /**
                         * Verifies a MutateKeywordPlanAdGroupsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlanAdGroupsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateKeywordPlanAdGroupsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateKeywordPlanAdGroupsRequest;

                        /**
                         * Creates a plain object from a MutateKeywordPlanAdGroupsRequest message. Also converts values to other types if specified.
                         * @param m MutateKeywordPlanAdGroupsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateKeywordPlanAdGroupsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlanAdGroupsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a KeywordPlanAdGroupOperation. */
                    interface IKeywordPlanAdGroupOperation {

                        /** KeywordPlanAdGroupOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** KeywordPlanAdGroupOperation create */
                        create?: (google.ads.googleads.v8.resources.IKeywordPlanAdGroup|null);

                        /** KeywordPlanAdGroupOperation update */
                        update?: (google.ads.googleads.v8.resources.IKeywordPlanAdGroup|null);

                        /** KeywordPlanAdGroupOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a KeywordPlanAdGroupOperation. */
                    class KeywordPlanAdGroupOperation implements IKeywordPlanAdGroupOperation {

                        /**
                         * Constructs a new KeywordPlanAdGroupOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IKeywordPlanAdGroupOperation);

                        /** KeywordPlanAdGroupOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** KeywordPlanAdGroupOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IKeywordPlanAdGroup|null);

                        /** KeywordPlanAdGroupOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.IKeywordPlanAdGroupOperation): google.ads.googleads.v8.services.KeywordPlanAdGroupOperation;

                        /**
                         * Encodes the specified KeywordPlanAdGroupOperation message. Does not implicitly {@link google.ads.googleads.v8.services.KeywordPlanAdGroupOperation.verify|verify} messages.
                         * @param m KeywordPlanAdGroupOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IKeywordPlanAdGroupOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanAdGroupOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IKeywordPlanAdGroupOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanAdGroupOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.KeywordPlanAdGroupOperation;

                        /**
                         * Verifies a KeywordPlanAdGroupOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanAdGroupOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanAdGroupOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.KeywordPlanAdGroupOperation;

                        /**
                         * Creates a plain object from a KeywordPlanAdGroupOperation message. Also converts values to other types if specified.
                         * @param m KeywordPlanAdGroupOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.KeywordPlanAdGroupOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanAdGroupOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateKeywordPlanAdGroupsResponse. */
                    interface IMutateKeywordPlanAdGroupsResponse {

                        /** MutateKeywordPlanAdGroupsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateKeywordPlanAdGroupsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateKeywordPlanAdGroupResult[]|null);
                    }

                    /** Represents a MutateKeywordPlanAdGroupsResponse. */
                    class MutateKeywordPlanAdGroupsResponse implements IMutateKeywordPlanAdGroupsResponse {

                        /**
                         * Constructs a new MutateKeywordPlanAdGroupsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateKeywordPlanAdGroupsResponse);

                        /** MutateKeywordPlanAdGroupsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateKeywordPlanAdGroupsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateKeywordPlanAdGroupsResponse): google.ads.googleads.v8.services.MutateKeywordPlanAdGroupsResponse;

                        /**
                         * Encodes the specified MutateKeywordPlanAdGroupsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateKeywordPlanAdGroupsResponse.verify|verify} messages.
                         * @param m MutateKeywordPlanAdGroupsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateKeywordPlanAdGroupsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlanAdGroupsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateKeywordPlanAdGroupsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlanAdGroupsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateKeywordPlanAdGroupsResponse;

                        /**
                         * Verifies a MutateKeywordPlanAdGroupsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlanAdGroupsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateKeywordPlanAdGroupsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateKeywordPlanAdGroupsResponse;

                        /**
                         * Creates a plain object from a MutateKeywordPlanAdGroupsResponse message. Also converts values to other types if specified.
                         * @param m MutateKeywordPlanAdGroupsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateKeywordPlanAdGroupsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlanAdGroupsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IMutateKeywordPlanAdGroupResult): google.ads.googleads.v8.services.MutateKeywordPlanAdGroupResult;

                        /**
                         * Encodes the specified MutateKeywordPlanAdGroupResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateKeywordPlanAdGroupResult.verify|verify} messages.
                         * @param m MutateKeywordPlanAdGroupResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateKeywordPlanAdGroupResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlanAdGroupResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateKeywordPlanAdGroupResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlanAdGroupResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateKeywordPlanAdGroupResult;

                        /**
                         * Verifies a MutateKeywordPlanAdGroupResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlanAdGroupResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateKeywordPlanAdGroupResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateKeywordPlanAdGroupResult;

                        /**
                         * Creates a plain object from a MutateKeywordPlanAdGroupResult message. Also converts values to other types if specified.
                         * @param m MutateKeywordPlanAdGroupResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateKeywordPlanAdGroupResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlanAdGroupResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetKeywordPlanCampaignKeyword.
                         * @param request GetKeywordPlanCampaignKeywordRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and KeywordPlanCampaignKeyword
                         */
                        public getKeywordPlanCampaignKeyword(request: google.ads.googleads.v8.services.IGetKeywordPlanCampaignKeywordRequest, callback: google.ads.googleads.v8.services.KeywordPlanCampaignKeywordService.GetKeywordPlanCampaignKeywordCallback): void;

                        /**
                         * Calls GetKeywordPlanCampaignKeyword.
                         * @param request GetKeywordPlanCampaignKeywordRequest message or plain object
                         * @returns Promise
                         */
                        public getKeywordPlanCampaignKeyword(request: google.ads.googleads.v8.services.IGetKeywordPlanCampaignKeywordRequest): Promise<google.ads.googleads.v8.resources.KeywordPlanCampaignKeyword>;

                        /**
                         * 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.v8.services.IMutateKeywordPlanCampaignKeywordsRequest, callback: google.ads.googleads.v8.services.KeywordPlanCampaignKeywordService.MutateKeywordPlanCampaignKeywordsCallback): void;

                        /**
                         * Calls MutateKeywordPlanCampaignKeywords.
                         * @param request MutateKeywordPlanCampaignKeywordsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateKeywordPlanCampaignKeywords(request: google.ads.googleads.v8.services.IMutateKeywordPlanCampaignKeywordsRequest): Promise<google.ads.googleads.v8.services.MutateKeywordPlanCampaignKeywordsResponse>;
                    }

                    namespace KeywordPlanCampaignKeywordService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.KeywordPlanCampaignKeywordService#getKeywordPlanCampaignKeyword}.
                         * @param error Error, if any
                         * @param [response] KeywordPlanCampaignKeyword
                         */
                        type GetKeywordPlanCampaignKeywordCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.KeywordPlanCampaignKeyword) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.KeywordPlanCampaignKeywordService#mutateKeywordPlanCampaignKeywords}.
                         * @param error Error, if any
                         * @param [response] MutateKeywordPlanCampaignKeywordsResponse
                         */
                        type MutateKeywordPlanCampaignKeywordsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateKeywordPlanCampaignKeywordsResponse) => void;
                    }

                    /** Properties of a GetKeywordPlanCampaignKeywordRequest. */
                    interface IGetKeywordPlanCampaignKeywordRequest {

                        /** GetKeywordPlanCampaignKeywordRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetKeywordPlanCampaignKeywordRequest. */
                    class GetKeywordPlanCampaignKeywordRequest implements IGetKeywordPlanCampaignKeywordRequest {

                        /**
                         * Constructs a new GetKeywordPlanCampaignKeywordRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetKeywordPlanCampaignKeywordRequest);

                        /** GetKeywordPlanCampaignKeywordRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetKeywordPlanCampaignKeywordRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetKeywordPlanCampaignKeywordRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetKeywordPlanCampaignKeywordRequest): google.ads.googleads.v8.services.GetKeywordPlanCampaignKeywordRequest;

                        /**
                         * Encodes the specified GetKeywordPlanCampaignKeywordRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetKeywordPlanCampaignKeywordRequest.verify|verify} messages.
                         * @param m GetKeywordPlanCampaignKeywordRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetKeywordPlanCampaignKeywordRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetKeywordPlanCampaignKeywordRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetKeywordPlanCampaignKeywordRequest.verify|verify} messages.
                         * @param message GetKeywordPlanCampaignKeywordRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetKeywordPlanCampaignKeywordRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetKeywordPlanCampaignKeywordRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetKeywordPlanCampaignKeywordRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetKeywordPlanCampaignKeywordRequest;

                        /**
                         * Decodes a GetKeywordPlanCampaignKeywordRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetKeywordPlanCampaignKeywordRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetKeywordPlanCampaignKeywordRequest;

                        /**
                         * Verifies a GetKeywordPlanCampaignKeywordRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetKeywordPlanCampaignKeywordRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetKeywordPlanCampaignKeywordRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetKeywordPlanCampaignKeywordRequest;

                        /**
                         * Creates a plain object from a GetKeywordPlanCampaignKeywordRequest message. Also converts values to other types if specified.
                         * @param m GetKeywordPlanCampaignKeywordRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetKeywordPlanCampaignKeywordRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetKeywordPlanCampaignKeywordRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateKeywordPlanCampaignKeywordsRequest. */
                    interface IMutateKeywordPlanCampaignKeywordsRequest {

                        /** MutateKeywordPlanCampaignKeywordsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateKeywordPlanCampaignKeywordsRequest operations */
                        operations?: (google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateKeywordPlanCampaignKeywordsRequest);

                        /** MutateKeywordPlanCampaignKeywordsRequest customer_id. */
                        public customer_id: string;

                        /** MutateKeywordPlanCampaignKeywordsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.services.IMutateKeywordPlanCampaignKeywordsRequest): google.ads.googleads.v8.services.MutateKeywordPlanCampaignKeywordsRequest;

                        /**
                         * Encodes the specified MutateKeywordPlanCampaignKeywordsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateKeywordPlanCampaignKeywordsRequest.verify|verify} messages.
                         * @param m MutateKeywordPlanCampaignKeywordsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateKeywordPlanCampaignKeywordsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlanCampaignKeywordsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateKeywordPlanCampaignKeywordsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlanCampaignKeywordsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateKeywordPlanCampaignKeywordsRequest;

                        /**
                         * Verifies a MutateKeywordPlanCampaignKeywordsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlanCampaignKeywordsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateKeywordPlanCampaignKeywordsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateKeywordPlanCampaignKeywordsRequest;

                        /**
                         * Creates a plain object from a MutateKeywordPlanCampaignKeywordsRequest message. Also converts values to other types if specified.
                         * @param m MutateKeywordPlanCampaignKeywordsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateKeywordPlanCampaignKeywordsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlanCampaignKeywordsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a KeywordPlanCampaignKeywordOperation. */
                    interface IKeywordPlanCampaignKeywordOperation {

                        /** KeywordPlanCampaignKeywordOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** KeywordPlanCampaignKeywordOperation create */
                        create?: (google.ads.googleads.v8.resources.IKeywordPlanCampaignKeyword|null);

                        /** KeywordPlanCampaignKeywordOperation update */
                        update?: (google.ads.googleads.v8.resources.IKeywordPlanCampaignKeyword|null);

                        /** KeywordPlanCampaignKeywordOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a KeywordPlanCampaignKeywordOperation. */
                    class KeywordPlanCampaignKeywordOperation implements IKeywordPlanCampaignKeywordOperation {

                        /**
                         * Constructs a new KeywordPlanCampaignKeywordOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IKeywordPlanCampaignKeywordOperation);

                        /** KeywordPlanCampaignKeywordOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** KeywordPlanCampaignKeywordOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IKeywordPlanCampaignKeyword|null);

                        /** KeywordPlanCampaignKeywordOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.IKeywordPlanCampaignKeywordOperation): google.ads.googleads.v8.services.KeywordPlanCampaignKeywordOperation;

                        /**
                         * Encodes the specified KeywordPlanCampaignKeywordOperation message. Does not implicitly {@link google.ads.googleads.v8.services.KeywordPlanCampaignKeywordOperation.verify|verify} messages.
                         * @param m KeywordPlanCampaignKeywordOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IKeywordPlanCampaignKeywordOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanCampaignKeywordOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IKeywordPlanCampaignKeywordOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanCampaignKeywordOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.KeywordPlanCampaignKeywordOperation;

                        /**
                         * Verifies a KeywordPlanCampaignKeywordOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanCampaignKeywordOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanCampaignKeywordOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.KeywordPlanCampaignKeywordOperation;

                        /**
                         * Creates a plain object from a KeywordPlanCampaignKeywordOperation message. Also converts values to other types if specified.
                         * @param m KeywordPlanCampaignKeywordOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.KeywordPlanCampaignKeywordOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanCampaignKeywordOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateKeywordPlanCampaignKeywordsResponse. */
                    interface IMutateKeywordPlanCampaignKeywordsResponse {

                        /** MutateKeywordPlanCampaignKeywordsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateKeywordPlanCampaignKeywordsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateKeywordPlanCampaignKeywordResult[]|null);
                    }

                    /** Represents a MutateKeywordPlanCampaignKeywordsResponse. */
                    class MutateKeywordPlanCampaignKeywordsResponse implements IMutateKeywordPlanCampaignKeywordsResponse {

                        /**
                         * Constructs a new MutateKeywordPlanCampaignKeywordsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateKeywordPlanCampaignKeywordsResponse);

                        /** MutateKeywordPlanCampaignKeywordsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateKeywordPlanCampaignKeywordsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateKeywordPlanCampaignKeywordsResponse): google.ads.googleads.v8.services.MutateKeywordPlanCampaignKeywordsResponse;

                        /**
                         * Encodes the specified MutateKeywordPlanCampaignKeywordsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateKeywordPlanCampaignKeywordsResponse.verify|verify} messages.
                         * @param m MutateKeywordPlanCampaignKeywordsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateKeywordPlanCampaignKeywordsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlanCampaignKeywordsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateKeywordPlanCampaignKeywordsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlanCampaignKeywordsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateKeywordPlanCampaignKeywordsResponse;

                        /**
                         * Verifies a MutateKeywordPlanCampaignKeywordsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlanCampaignKeywordsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateKeywordPlanCampaignKeywordsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateKeywordPlanCampaignKeywordsResponse;

                        /**
                         * Creates a plain object from a MutateKeywordPlanCampaignKeywordsResponse message. Also converts values to other types if specified.
                         * @param m MutateKeywordPlanCampaignKeywordsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateKeywordPlanCampaignKeywordsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlanCampaignKeywordsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IMutateKeywordPlanCampaignKeywordResult): google.ads.googleads.v8.services.MutateKeywordPlanCampaignKeywordResult;

                        /**
                         * Encodes the specified MutateKeywordPlanCampaignKeywordResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateKeywordPlanCampaignKeywordResult.verify|verify} messages.
                         * @param m MutateKeywordPlanCampaignKeywordResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateKeywordPlanCampaignKeywordResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlanCampaignKeywordResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateKeywordPlanCampaignKeywordResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlanCampaignKeywordResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateKeywordPlanCampaignKeywordResult;

                        /**
                         * Verifies a MutateKeywordPlanCampaignKeywordResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlanCampaignKeywordResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateKeywordPlanCampaignKeywordResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateKeywordPlanCampaignKeywordResult;

                        /**
                         * Creates a plain object from a MutateKeywordPlanCampaignKeywordResult message. Also converts values to other types if specified.
                         * @param m MutateKeywordPlanCampaignKeywordResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateKeywordPlanCampaignKeywordResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlanCampaignKeywordResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetKeywordPlanCampaign.
                         * @param request GetKeywordPlanCampaignRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and KeywordPlanCampaign
                         */
                        public getKeywordPlanCampaign(request: google.ads.googleads.v8.services.IGetKeywordPlanCampaignRequest, callback: google.ads.googleads.v8.services.KeywordPlanCampaignService.GetKeywordPlanCampaignCallback): void;

                        /**
                         * Calls GetKeywordPlanCampaign.
                         * @param request GetKeywordPlanCampaignRequest message or plain object
                         * @returns Promise
                         */
                        public getKeywordPlanCampaign(request: google.ads.googleads.v8.services.IGetKeywordPlanCampaignRequest): Promise<google.ads.googleads.v8.resources.KeywordPlanCampaign>;

                        /**
                         * 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.v8.services.IMutateKeywordPlanCampaignsRequest, callback: google.ads.googleads.v8.services.KeywordPlanCampaignService.MutateKeywordPlanCampaignsCallback): void;

                        /**
                         * Calls MutateKeywordPlanCampaigns.
                         * @param request MutateKeywordPlanCampaignsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateKeywordPlanCampaigns(request: google.ads.googleads.v8.services.IMutateKeywordPlanCampaignsRequest): Promise<google.ads.googleads.v8.services.MutateKeywordPlanCampaignsResponse>;
                    }

                    namespace KeywordPlanCampaignService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.KeywordPlanCampaignService#getKeywordPlanCampaign}.
                         * @param error Error, if any
                         * @param [response] KeywordPlanCampaign
                         */
                        type GetKeywordPlanCampaignCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.KeywordPlanCampaign) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.KeywordPlanCampaignService#mutateKeywordPlanCampaigns}.
                         * @param error Error, if any
                         * @param [response] MutateKeywordPlanCampaignsResponse
                         */
                        type MutateKeywordPlanCampaignsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateKeywordPlanCampaignsResponse) => void;
                    }

                    /** Properties of a GetKeywordPlanCampaignRequest. */
                    interface IGetKeywordPlanCampaignRequest {

                        /** GetKeywordPlanCampaignRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetKeywordPlanCampaignRequest. */
                    class GetKeywordPlanCampaignRequest implements IGetKeywordPlanCampaignRequest {

                        /**
                         * Constructs a new GetKeywordPlanCampaignRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetKeywordPlanCampaignRequest);

                        /** GetKeywordPlanCampaignRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetKeywordPlanCampaignRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetKeywordPlanCampaignRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetKeywordPlanCampaignRequest): google.ads.googleads.v8.services.GetKeywordPlanCampaignRequest;

                        /**
                         * Encodes the specified GetKeywordPlanCampaignRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetKeywordPlanCampaignRequest.verify|verify} messages.
                         * @param m GetKeywordPlanCampaignRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetKeywordPlanCampaignRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetKeywordPlanCampaignRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetKeywordPlanCampaignRequest.verify|verify} messages.
                         * @param message GetKeywordPlanCampaignRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetKeywordPlanCampaignRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetKeywordPlanCampaignRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetKeywordPlanCampaignRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetKeywordPlanCampaignRequest;

                        /**
                         * Decodes a GetKeywordPlanCampaignRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetKeywordPlanCampaignRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetKeywordPlanCampaignRequest;

                        /**
                         * Verifies a GetKeywordPlanCampaignRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetKeywordPlanCampaignRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetKeywordPlanCampaignRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetKeywordPlanCampaignRequest;

                        /**
                         * Creates a plain object from a GetKeywordPlanCampaignRequest message. Also converts values to other types if specified.
                         * @param m GetKeywordPlanCampaignRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetKeywordPlanCampaignRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetKeywordPlanCampaignRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateKeywordPlanCampaignsRequest. */
                    interface IMutateKeywordPlanCampaignsRequest {

                        /** MutateKeywordPlanCampaignsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateKeywordPlanCampaignsRequest operations */
                        operations?: (google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateKeywordPlanCampaignsRequest);

                        /** MutateKeywordPlanCampaignsRequest customer_id. */
                        public customer_id: string;

                        /** MutateKeywordPlanCampaignsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.services.IMutateKeywordPlanCampaignsRequest): google.ads.googleads.v8.services.MutateKeywordPlanCampaignsRequest;

                        /**
                         * Encodes the specified MutateKeywordPlanCampaignsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateKeywordPlanCampaignsRequest.verify|verify} messages.
                         * @param m MutateKeywordPlanCampaignsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateKeywordPlanCampaignsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlanCampaignsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateKeywordPlanCampaignsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlanCampaignsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateKeywordPlanCampaignsRequest;

                        /**
                         * Verifies a MutateKeywordPlanCampaignsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlanCampaignsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateKeywordPlanCampaignsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateKeywordPlanCampaignsRequest;

                        /**
                         * Creates a plain object from a MutateKeywordPlanCampaignsRequest message. Also converts values to other types if specified.
                         * @param m MutateKeywordPlanCampaignsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateKeywordPlanCampaignsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlanCampaignsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a KeywordPlanCampaignOperation. */
                    interface IKeywordPlanCampaignOperation {

                        /** KeywordPlanCampaignOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** KeywordPlanCampaignOperation create */
                        create?: (google.ads.googleads.v8.resources.IKeywordPlanCampaign|null);

                        /** KeywordPlanCampaignOperation update */
                        update?: (google.ads.googleads.v8.resources.IKeywordPlanCampaign|null);

                        /** KeywordPlanCampaignOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a KeywordPlanCampaignOperation. */
                    class KeywordPlanCampaignOperation implements IKeywordPlanCampaignOperation {

                        /**
                         * Constructs a new KeywordPlanCampaignOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IKeywordPlanCampaignOperation);

                        /** KeywordPlanCampaignOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** KeywordPlanCampaignOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IKeywordPlanCampaign|null);

                        /** KeywordPlanCampaignOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.IKeywordPlanCampaignOperation): google.ads.googleads.v8.services.KeywordPlanCampaignOperation;

                        /**
                         * Encodes the specified KeywordPlanCampaignOperation message. Does not implicitly {@link google.ads.googleads.v8.services.KeywordPlanCampaignOperation.verify|verify} messages.
                         * @param m KeywordPlanCampaignOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IKeywordPlanCampaignOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanCampaignOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IKeywordPlanCampaignOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanCampaignOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.KeywordPlanCampaignOperation;

                        /**
                         * Verifies a KeywordPlanCampaignOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanCampaignOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanCampaignOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.KeywordPlanCampaignOperation;

                        /**
                         * Creates a plain object from a KeywordPlanCampaignOperation message. Also converts values to other types if specified.
                         * @param m KeywordPlanCampaignOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.KeywordPlanCampaignOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanCampaignOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateKeywordPlanCampaignsResponse. */
                    interface IMutateKeywordPlanCampaignsResponse {

                        /** MutateKeywordPlanCampaignsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateKeywordPlanCampaignsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateKeywordPlanCampaignResult[]|null);
                    }

                    /** Represents a MutateKeywordPlanCampaignsResponse. */
                    class MutateKeywordPlanCampaignsResponse implements IMutateKeywordPlanCampaignsResponse {

                        /**
                         * Constructs a new MutateKeywordPlanCampaignsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateKeywordPlanCampaignsResponse);

                        /** MutateKeywordPlanCampaignsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateKeywordPlanCampaignsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateKeywordPlanCampaignsResponse): google.ads.googleads.v8.services.MutateKeywordPlanCampaignsResponse;

                        /**
                         * Encodes the specified MutateKeywordPlanCampaignsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateKeywordPlanCampaignsResponse.verify|verify} messages.
                         * @param m MutateKeywordPlanCampaignsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateKeywordPlanCampaignsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlanCampaignsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateKeywordPlanCampaignsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlanCampaignsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateKeywordPlanCampaignsResponse;

                        /**
                         * Verifies a MutateKeywordPlanCampaignsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlanCampaignsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateKeywordPlanCampaignsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateKeywordPlanCampaignsResponse;

                        /**
                         * Creates a plain object from a MutateKeywordPlanCampaignsResponse message. Also converts values to other types if specified.
                         * @param m MutateKeywordPlanCampaignsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateKeywordPlanCampaignsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlanCampaignsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IMutateKeywordPlanCampaignResult): google.ads.googleads.v8.services.MutateKeywordPlanCampaignResult;

                        /**
                         * Encodes the specified MutateKeywordPlanCampaignResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateKeywordPlanCampaignResult.verify|verify} messages.
                         * @param m MutateKeywordPlanCampaignResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateKeywordPlanCampaignResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlanCampaignResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateKeywordPlanCampaignResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlanCampaignResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateKeywordPlanCampaignResult;

                        /**
                         * Verifies a MutateKeywordPlanCampaignResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlanCampaignResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateKeywordPlanCampaignResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateKeywordPlanCampaignResult;

                        /**
                         * Creates a plain object from a MutateKeywordPlanCampaignResult message. Also converts values to other types if specified.
                         * @param m MutateKeywordPlanCampaignResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateKeywordPlanCampaignResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlanCampaignResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetKeywordPlan.
                         * @param request GetKeywordPlanRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and KeywordPlan
                         */
                        public getKeywordPlan(request: google.ads.googleads.v8.services.IGetKeywordPlanRequest, callback: google.ads.googleads.v8.services.KeywordPlanService.GetKeywordPlanCallback): void;

                        /**
                         * Calls GetKeywordPlan.
                         * @param request GetKeywordPlanRequest message or plain object
                         * @returns Promise
                         */
                        public getKeywordPlan(request: google.ads.googleads.v8.services.IGetKeywordPlanRequest): Promise<google.ads.googleads.v8.resources.KeywordPlan>;

                        /**
                         * 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.v8.services.IMutateKeywordPlansRequest, callback: google.ads.googleads.v8.services.KeywordPlanService.MutateKeywordPlansCallback): void;

                        /**
                         * Calls MutateKeywordPlans.
                         * @param request MutateKeywordPlansRequest message or plain object
                         * @returns Promise
                         */
                        public mutateKeywordPlans(request: google.ads.googleads.v8.services.IMutateKeywordPlansRequest): Promise<google.ads.googleads.v8.services.MutateKeywordPlansResponse>;

                        /**
                         * Calls GenerateForecastCurve.
                         * @param request GenerateForecastCurveRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GenerateForecastCurveResponse
                         */
                        public generateForecastCurve(request: google.ads.googleads.v8.services.IGenerateForecastCurveRequest, callback: google.ads.googleads.v8.services.KeywordPlanService.GenerateForecastCurveCallback): void;

                        /**
                         * Calls GenerateForecastCurve.
                         * @param request GenerateForecastCurveRequest message or plain object
                         * @returns Promise
                         */
                        public generateForecastCurve(request: google.ads.googleads.v8.services.IGenerateForecastCurveRequest): Promise<google.ads.googleads.v8.services.GenerateForecastCurveResponse>;

                        /**
                         * Calls GenerateForecastTimeSeries.
                         * @param request GenerateForecastTimeSeriesRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GenerateForecastTimeSeriesResponse
                         */
                        public generateForecastTimeSeries(request: google.ads.googleads.v8.services.IGenerateForecastTimeSeriesRequest, callback: google.ads.googleads.v8.services.KeywordPlanService.GenerateForecastTimeSeriesCallback): void;

                        /**
                         * Calls GenerateForecastTimeSeries.
                         * @param request GenerateForecastTimeSeriesRequest message or plain object
                         * @returns Promise
                         */
                        public generateForecastTimeSeries(request: google.ads.googleads.v8.services.IGenerateForecastTimeSeriesRequest): Promise<google.ads.googleads.v8.services.GenerateForecastTimeSeriesResponse>;

                        /**
                         * Calls GenerateForecastMetrics.
                         * @param request GenerateForecastMetricsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GenerateForecastMetricsResponse
                         */
                        public generateForecastMetrics(request: google.ads.googleads.v8.services.IGenerateForecastMetricsRequest, callback: google.ads.googleads.v8.services.KeywordPlanService.GenerateForecastMetricsCallback): void;

                        /**
                         * Calls GenerateForecastMetrics.
                         * @param request GenerateForecastMetricsRequest message or plain object
                         * @returns Promise
                         */
                        public generateForecastMetrics(request: google.ads.googleads.v8.services.IGenerateForecastMetricsRequest): Promise<google.ads.googleads.v8.services.GenerateForecastMetricsResponse>;

                        /**
                         * Calls GenerateHistoricalMetrics.
                         * @param request GenerateHistoricalMetricsRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GenerateHistoricalMetricsResponse
                         */
                        public generateHistoricalMetrics(request: google.ads.googleads.v8.services.IGenerateHistoricalMetricsRequest, callback: google.ads.googleads.v8.services.KeywordPlanService.GenerateHistoricalMetricsCallback): void;

                        /**
                         * Calls GenerateHistoricalMetrics.
                         * @param request GenerateHistoricalMetricsRequest message or plain object
                         * @returns Promise
                         */
                        public generateHistoricalMetrics(request: google.ads.googleads.v8.services.IGenerateHistoricalMetricsRequest): Promise<google.ads.googleads.v8.services.GenerateHistoricalMetricsResponse>;
                    }

                    namespace KeywordPlanService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.KeywordPlanService#getKeywordPlan}.
                         * @param error Error, if any
                         * @param [response] KeywordPlan
                         */
                        type GetKeywordPlanCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.KeywordPlan) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.KeywordPlanService#mutateKeywordPlans}.
                         * @param error Error, if any
                         * @param [response] MutateKeywordPlansResponse
                         */
                        type MutateKeywordPlansCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateKeywordPlansResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.KeywordPlanService#generateForecastCurve}.
                         * @param error Error, if any
                         * @param [response] GenerateForecastCurveResponse
                         */
                        type GenerateForecastCurveCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.GenerateForecastCurveResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.KeywordPlanService#generateForecastTimeSeries}.
                         * @param error Error, if any
                         * @param [response] GenerateForecastTimeSeriesResponse
                         */
                        type GenerateForecastTimeSeriesCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.GenerateForecastTimeSeriesResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.KeywordPlanService#generateForecastMetrics}.
                         * @param error Error, if any
                         * @param [response] GenerateForecastMetricsResponse
                         */
                        type GenerateForecastMetricsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.GenerateForecastMetricsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.KeywordPlanService#generateHistoricalMetrics}.
                         * @param error Error, if any
                         * @param [response] GenerateHistoricalMetricsResponse
                         */
                        type GenerateHistoricalMetricsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.GenerateHistoricalMetricsResponse) => void;
                    }

                    /** Properties of a GetKeywordPlanRequest. */
                    interface IGetKeywordPlanRequest {

                        /** GetKeywordPlanRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetKeywordPlanRequest. */
                    class GetKeywordPlanRequest implements IGetKeywordPlanRequest {

                        /**
                         * Constructs a new GetKeywordPlanRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetKeywordPlanRequest);

                        /** GetKeywordPlanRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetKeywordPlanRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetKeywordPlanRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetKeywordPlanRequest): google.ads.googleads.v8.services.GetKeywordPlanRequest;

                        /**
                         * Encodes the specified GetKeywordPlanRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetKeywordPlanRequest.verify|verify} messages.
                         * @param m GetKeywordPlanRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetKeywordPlanRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetKeywordPlanRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetKeywordPlanRequest.verify|verify} messages.
                         * @param message GetKeywordPlanRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetKeywordPlanRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetKeywordPlanRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetKeywordPlanRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetKeywordPlanRequest;

                        /**
                         * Decodes a GetKeywordPlanRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetKeywordPlanRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetKeywordPlanRequest;

                        /**
                         * Verifies a GetKeywordPlanRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetKeywordPlanRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetKeywordPlanRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetKeywordPlanRequest;

                        /**
                         * Creates a plain object from a GetKeywordPlanRequest message. Also converts values to other types if specified.
                         * @param m GetKeywordPlanRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetKeywordPlanRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetKeywordPlanRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateKeywordPlansRequest. */
                    interface IMutateKeywordPlansRequest {

                        /** MutateKeywordPlansRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateKeywordPlansRequest operations */
                        operations?: (google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateKeywordPlansRequest);

                        /** MutateKeywordPlansRequest customer_id. */
                        public customer_id: string;

                        /** MutateKeywordPlansRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.services.IMutateKeywordPlansRequest): google.ads.googleads.v8.services.MutateKeywordPlansRequest;

                        /**
                         * Encodes the specified MutateKeywordPlansRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateKeywordPlansRequest.verify|verify} messages.
                         * @param m MutateKeywordPlansRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateKeywordPlansRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlansRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateKeywordPlansRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlansRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateKeywordPlansRequest;

                        /**
                         * Verifies a MutateKeywordPlansRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlansRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateKeywordPlansRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateKeywordPlansRequest;

                        /**
                         * Creates a plain object from a MutateKeywordPlansRequest message. Also converts values to other types if specified.
                         * @param m MutateKeywordPlansRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateKeywordPlansRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlansRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a KeywordPlanOperation. */
                    interface IKeywordPlanOperation {

                        /** KeywordPlanOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** KeywordPlanOperation create */
                        create?: (google.ads.googleads.v8.resources.IKeywordPlan|null);

                        /** KeywordPlanOperation update */
                        update?: (google.ads.googleads.v8.resources.IKeywordPlan|null);

                        /** KeywordPlanOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a KeywordPlanOperation. */
                    class KeywordPlanOperation implements IKeywordPlanOperation {

                        /**
                         * Constructs a new KeywordPlanOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IKeywordPlanOperation);

                        /** KeywordPlanOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** KeywordPlanOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IKeywordPlan|null);

                        /** KeywordPlanOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.IKeywordPlanOperation): google.ads.googleads.v8.services.KeywordPlanOperation;

                        /**
                         * Encodes the specified KeywordPlanOperation message. Does not implicitly {@link google.ads.googleads.v8.services.KeywordPlanOperation.verify|verify} messages.
                         * @param m KeywordPlanOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IKeywordPlanOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IKeywordPlanOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.KeywordPlanOperation;

                        /**
                         * Verifies a KeywordPlanOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.KeywordPlanOperation;

                        /**
                         * Creates a plain object from a KeywordPlanOperation message. Also converts values to other types if specified.
                         * @param m KeywordPlanOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.KeywordPlanOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateKeywordPlansResponse. */
                    interface IMutateKeywordPlansResponse {

                        /** MutateKeywordPlansResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateKeywordPlansResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateKeywordPlansResult[]|null);
                    }

                    /** Represents a MutateKeywordPlansResponse. */
                    class MutateKeywordPlansResponse implements IMutateKeywordPlansResponse {

                        /**
                         * Constructs a new MutateKeywordPlansResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateKeywordPlansResponse);

                        /** MutateKeywordPlansResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateKeywordPlansResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateKeywordPlansResponse): google.ads.googleads.v8.services.MutateKeywordPlansResponse;

                        /**
                         * Encodes the specified MutateKeywordPlansResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateKeywordPlansResponse.verify|verify} messages.
                         * @param m MutateKeywordPlansResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateKeywordPlansResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlansResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateKeywordPlansResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlansResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateKeywordPlansResponse;

                        /**
                         * Verifies a MutateKeywordPlansResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlansResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateKeywordPlansResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateKeywordPlansResponse;

                        /**
                         * Creates a plain object from a MutateKeywordPlansResponse message. Also converts values to other types if specified.
                         * @param m MutateKeywordPlansResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateKeywordPlansResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlansResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IMutateKeywordPlansResult): google.ads.googleads.v8.services.MutateKeywordPlansResult;

                        /**
                         * Encodes the specified MutateKeywordPlansResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateKeywordPlansResult.verify|verify} messages.
                         * @param m MutateKeywordPlansResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateKeywordPlansResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateKeywordPlansResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateKeywordPlansResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateKeywordPlansResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateKeywordPlansResult;

                        /**
                         * Verifies a MutateKeywordPlansResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateKeywordPlansResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateKeywordPlansResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateKeywordPlansResult;

                        /**
                         * Creates a plain object from a MutateKeywordPlansResult message. Also converts values to other types if specified.
                         * @param m MutateKeywordPlansResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateKeywordPlansResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateKeywordPlansResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a GenerateForecastCurveRequest. */
                    interface IGenerateForecastCurveRequest {

                        /** GenerateForecastCurveRequest keyword_plan */
                        keyword_plan?: (string|null);
                    }

                    /** Represents a GenerateForecastCurveRequest. */
                    class GenerateForecastCurveRequest implements IGenerateForecastCurveRequest {

                        /**
                         * Constructs a new GenerateForecastCurveRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGenerateForecastCurveRequest);

                        /** GenerateForecastCurveRequest keyword_plan. */
                        public keyword_plan: string;

                        /**
                         * Creates a new GenerateForecastCurveRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateForecastCurveRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGenerateForecastCurveRequest): google.ads.googleads.v8.services.GenerateForecastCurveRequest;

                        /**
                         * Encodes the specified GenerateForecastCurveRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GenerateForecastCurveRequest.verify|verify} messages.
                         * @param m GenerateForecastCurveRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGenerateForecastCurveRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateForecastCurveRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GenerateForecastCurveRequest.verify|verify} messages.
                         * @param message GenerateForecastCurveRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGenerateForecastCurveRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateForecastCurveRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GenerateForecastCurveRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GenerateForecastCurveRequest;

                        /**
                         * Decodes a GenerateForecastCurveRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateForecastCurveRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GenerateForecastCurveRequest;

                        /**
                         * Verifies a GenerateForecastCurveRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateForecastCurveRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GenerateForecastCurveRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GenerateForecastCurveRequest;

                        /**
                         * Creates a plain object from a GenerateForecastCurveRequest message. Also converts values to other types if specified.
                         * @param m GenerateForecastCurveRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GenerateForecastCurveRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateForecastCurveRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a GenerateForecastCurveResponse. */
                    interface IGenerateForecastCurveResponse {

                        /** GenerateForecastCurveResponse campaign_forecast_curves */
                        campaign_forecast_curves?: (google.ads.googleads.v8.services.IKeywordPlanCampaignForecastCurve[]|null);
                    }

                    /** Represents a GenerateForecastCurveResponse. */
                    class GenerateForecastCurveResponse implements IGenerateForecastCurveResponse {

                        /**
                         * Constructs a new GenerateForecastCurveResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGenerateForecastCurveResponse);

                        /** GenerateForecastCurveResponse campaign_forecast_curves. */
                        public campaign_forecast_curves: google.ads.googleads.v8.services.IKeywordPlanCampaignForecastCurve[];

                        /**
                         * Creates a new GenerateForecastCurveResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateForecastCurveResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGenerateForecastCurveResponse): google.ads.googleads.v8.services.GenerateForecastCurveResponse;

                        /**
                         * Encodes the specified GenerateForecastCurveResponse message. Does not implicitly {@link google.ads.googleads.v8.services.GenerateForecastCurveResponse.verify|verify} messages.
                         * @param m GenerateForecastCurveResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGenerateForecastCurveResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateForecastCurveResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GenerateForecastCurveResponse.verify|verify} messages.
                         * @param message GenerateForecastCurveResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGenerateForecastCurveResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateForecastCurveResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GenerateForecastCurveResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GenerateForecastCurveResponse;

                        /**
                         * Decodes a GenerateForecastCurveResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateForecastCurveResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GenerateForecastCurveResponse;

                        /**
                         * Verifies a GenerateForecastCurveResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateForecastCurveResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GenerateForecastCurveResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GenerateForecastCurveResponse;

                        /**
                         * Creates a plain object from a GenerateForecastCurveResponse message. Also converts values to other types if specified.
                         * @param m GenerateForecastCurveResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GenerateForecastCurveResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateForecastCurveResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a GenerateForecastTimeSeriesRequest. */
                    interface IGenerateForecastTimeSeriesRequest {

                        /** GenerateForecastTimeSeriesRequest keyword_plan */
                        keyword_plan?: (string|null);
                    }

                    /** Represents a GenerateForecastTimeSeriesRequest. */
                    class GenerateForecastTimeSeriesRequest implements IGenerateForecastTimeSeriesRequest {

                        /**
                         * Constructs a new GenerateForecastTimeSeriesRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGenerateForecastTimeSeriesRequest);

                        /** GenerateForecastTimeSeriesRequest keyword_plan. */
                        public keyword_plan: string;

                        /**
                         * Creates a new GenerateForecastTimeSeriesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateForecastTimeSeriesRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGenerateForecastTimeSeriesRequest): google.ads.googleads.v8.services.GenerateForecastTimeSeriesRequest;

                        /**
                         * Encodes the specified GenerateForecastTimeSeriesRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GenerateForecastTimeSeriesRequest.verify|verify} messages.
                         * @param m GenerateForecastTimeSeriesRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGenerateForecastTimeSeriesRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateForecastTimeSeriesRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GenerateForecastTimeSeriesRequest.verify|verify} messages.
                         * @param message GenerateForecastTimeSeriesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGenerateForecastTimeSeriesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateForecastTimeSeriesRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GenerateForecastTimeSeriesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GenerateForecastTimeSeriesRequest;

                        /**
                         * Decodes a GenerateForecastTimeSeriesRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateForecastTimeSeriesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GenerateForecastTimeSeriesRequest;

                        /**
                         * Verifies a GenerateForecastTimeSeriesRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateForecastTimeSeriesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GenerateForecastTimeSeriesRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GenerateForecastTimeSeriesRequest;

                        /**
                         * Creates a plain object from a GenerateForecastTimeSeriesRequest message. Also converts values to other types if specified.
                         * @param m GenerateForecastTimeSeriesRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GenerateForecastTimeSeriesRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateForecastTimeSeriesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a GenerateForecastTimeSeriesResponse. */
                    interface IGenerateForecastTimeSeriesResponse {

                        /** GenerateForecastTimeSeriesResponse weekly_time_series_forecasts */
                        weekly_time_series_forecasts?: (google.ads.googleads.v8.services.IKeywordPlanWeeklyTimeSeriesForecast[]|null);
                    }

                    /** Represents a GenerateForecastTimeSeriesResponse. */
                    class GenerateForecastTimeSeriesResponse implements IGenerateForecastTimeSeriesResponse {

                        /**
                         * Constructs a new GenerateForecastTimeSeriesResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGenerateForecastTimeSeriesResponse);

                        /** GenerateForecastTimeSeriesResponse weekly_time_series_forecasts. */
                        public weekly_time_series_forecasts: google.ads.googleads.v8.services.IKeywordPlanWeeklyTimeSeriesForecast[];

                        /**
                         * Creates a new GenerateForecastTimeSeriesResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateForecastTimeSeriesResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGenerateForecastTimeSeriesResponse): google.ads.googleads.v8.services.GenerateForecastTimeSeriesResponse;

                        /**
                         * Encodes the specified GenerateForecastTimeSeriesResponse message. Does not implicitly {@link google.ads.googleads.v8.services.GenerateForecastTimeSeriesResponse.verify|verify} messages.
                         * @param m GenerateForecastTimeSeriesResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGenerateForecastTimeSeriesResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateForecastTimeSeriesResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GenerateForecastTimeSeriesResponse.verify|verify} messages.
                         * @param message GenerateForecastTimeSeriesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGenerateForecastTimeSeriesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateForecastTimeSeriesResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GenerateForecastTimeSeriesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GenerateForecastTimeSeriesResponse;

                        /**
                         * Decodes a GenerateForecastTimeSeriesResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateForecastTimeSeriesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GenerateForecastTimeSeriesResponse;

                        /**
                         * Verifies a GenerateForecastTimeSeriesResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateForecastTimeSeriesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GenerateForecastTimeSeriesResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GenerateForecastTimeSeriesResponse;

                        /**
                         * Creates a plain object from a GenerateForecastTimeSeriesResponse message. Also converts values to other types if specified.
                         * @param m GenerateForecastTimeSeriesResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GenerateForecastTimeSeriesResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateForecastTimeSeriesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a GenerateForecastMetricsRequest. */
                    interface IGenerateForecastMetricsRequest {

                        /** GenerateForecastMetricsRequest keyword_plan */
                        keyword_plan?: (string|null);
                    }

                    /** Represents a GenerateForecastMetricsRequest. */
                    class GenerateForecastMetricsRequest implements IGenerateForecastMetricsRequest {

                        /**
                         * Constructs a new GenerateForecastMetricsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGenerateForecastMetricsRequest);

                        /** GenerateForecastMetricsRequest keyword_plan. */
                        public keyword_plan: string;

                        /**
                         * Creates a new GenerateForecastMetricsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateForecastMetricsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGenerateForecastMetricsRequest): google.ads.googleads.v8.services.GenerateForecastMetricsRequest;

                        /**
                         * Encodes the specified GenerateForecastMetricsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GenerateForecastMetricsRequest.verify|verify} messages.
                         * @param m GenerateForecastMetricsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGenerateForecastMetricsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateForecastMetricsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GenerateForecastMetricsRequest.verify|verify} messages.
                         * @param message GenerateForecastMetricsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGenerateForecastMetricsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateForecastMetricsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GenerateForecastMetricsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GenerateForecastMetricsRequest;

                        /**
                         * Decodes a GenerateForecastMetricsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateForecastMetricsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GenerateForecastMetricsRequest;

                        /**
                         * Verifies a GenerateForecastMetricsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateForecastMetricsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GenerateForecastMetricsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GenerateForecastMetricsRequest;

                        /**
                         * Creates a plain object from a GenerateForecastMetricsRequest message. Also converts values to other types if specified.
                         * @param m GenerateForecastMetricsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GenerateForecastMetricsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateForecastMetricsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a GenerateForecastMetricsResponse. */
                    interface IGenerateForecastMetricsResponse {

                        /** GenerateForecastMetricsResponse campaign_forecasts */
                        campaign_forecasts?: (google.ads.googleads.v8.services.IKeywordPlanCampaignForecast[]|null);

                        /** GenerateForecastMetricsResponse ad_group_forecasts */
                        ad_group_forecasts?: (google.ads.googleads.v8.services.IKeywordPlanAdGroupForecast[]|null);

                        /** GenerateForecastMetricsResponse keyword_forecasts */
                        keyword_forecasts?: (google.ads.googleads.v8.services.IKeywordPlanKeywordForecast[]|null);
                    }

                    /** Represents a GenerateForecastMetricsResponse. */
                    class GenerateForecastMetricsResponse implements IGenerateForecastMetricsResponse {

                        /**
                         * Constructs a new GenerateForecastMetricsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGenerateForecastMetricsResponse);

                        /** GenerateForecastMetricsResponse campaign_forecasts. */
                        public campaign_forecasts: google.ads.googleads.v8.services.IKeywordPlanCampaignForecast[];

                        /** GenerateForecastMetricsResponse ad_group_forecasts. */
                        public ad_group_forecasts: google.ads.googleads.v8.services.IKeywordPlanAdGroupForecast[];

                        /** GenerateForecastMetricsResponse keyword_forecasts. */
                        public keyword_forecasts: google.ads.googleads.v8.services.IKeywordPlanKeywordForecast[];

                        /**
                         * Creates a new GenerateForecastMetricsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateForecastMetricsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGenerateForecastMetricsResponse): google.ads.googleads.v8.services.GenerateForecastMetricsResponse;

                        /**
                         * Encodes the specified GenerateForecastMetricsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.GenerateForecastMetricsResponse.verify|verify} messages.
                         * @param m GenerateForecastMetricsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGenerateForecastMetricsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateForecastMetricsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GenerateForecastMetricsResponse.verify|verify} messages.
                         * @param message GenerateForecastMetricsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGenerateForecastMetricsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateForecastMetricsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GenerateForecastMetricsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GenerateForecastMetricsResponse;

                        /**
                         * Decodes a GenerateForecastMetricsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateForecastMetricsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GenerateForecastMetricsResponse;

                        /**
                         * Verifies a GenerateForecastMetricsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateForecastMetricsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GenerateForecastMetricsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GenerateForecastMetricsResponse;

                        /**
                         * Creates a plain object from a GenerateForecastMetricsResponse message. Also converts values to other types if specified.
                         * @param m GenerateForecastMetricsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GenerateForecastMetricsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateForecastMetricsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a KeywordPlanCampaignForecast. */
                    interface IKeywordPlanCampaignForecast {

                        /** KeywordPlanCampaignForecast keyword_plan_campaign */
                        keyword_plan_campaign?: (string|null);

                        /** KeywordPlanCampaignForecast campaign_forecast */
                        campaign_forecast?: (google.ads.googleads.v8.services.IForecastMetrics|null);
                    }

                    /** Represents a KeywordPlanCampaignForecast. */
                    class KeywordPlanCampaignForecast implements IKeywordPlanCampaignForecast {

                        /**
                         * Constructs a new KeywordPlanCampaignForecast.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IKeywordPlanCampaignForecast);

                        /** KeywordPlanCampaignForecast keyword_plan_campaign. */
                        public keyword_plan_campaign?: (string|null);

                        /** KeywordPlanCampaignForecast campaign_forecast. */
                        public campaign_forecast?: (google.ads.googleads.v8.services.IForecastMetrics|null);

                        /** KeywordPlanCampaignForecast _keyword_plan_campaign. */
                        public _keyword_plan_campaign?: "keyword_plan_campaign";

                        /**
                         * Creates a new KeywordPlanCampaignForecast instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanCampaignForecast instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IKeywordPlanCampaignForecast): google.ads.googleads.v8.services.KeywordPlanCampaignForecast;

                        /**
                         * Encodes the specified KeywordPlanCampaignForecast message. Does not implicitly {@link google.ads.googleads.v8.services.KeywordPlanCampaignForecast.verify|verify} messages.
                         * @param m KeywordPlanCampaignForecast message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IKeywordPlanCampaignForecast, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanCampaignForecast message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.KeywordPlanCampaignForecast.verify|verify} messages.
                         * @param message KeywordPlanCampaignForecast message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IKeywordPlanCampaignForecast, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanCampaignForecast message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns KeywordPlanCampaignForecast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.KeywordPlanCampaignForecast;

                        /**
                         * Decodes a KeywordPlanCampaignForecast message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanCampaignForecast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.KeywordPlanCampaignForecast;

                        /**
                         * Verifies a KeywordPlanCampaignForecast message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanCampaignForecast message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanCampaignForecast
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.KeywordPlanCampaignForecast;

                        /**
                         * Creates a plain object from a KeywordPlanCampaignForecast message. Also converts values to other types if specified.
                         * @param m KeywordPlanCampaignForecast
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.KeywordPlanCampaignForecast, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanCampaignForecast to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a KeywordPlanAdGroupForecast. */
                    interface IKeywordPlanAdGroupForecast {

                        /** KeywordPlanAdGroupForecast keyword_plan_ad_group */
                        keyword_plan_ad_group?: (string|null);

                        /** KeywordPlanAdGroupForecast ad_group_forecast */
                        ad_group_forecast?: (google.ads.googleads.v8.services.IForecastMetrics|null);
                    }

                    /** Represents a KeywordPlanAdGroupForecast. */
                    class KeywordPlanAdGroupForecast implements IKeywordPlanAdGroupForecast {

                        /**
                         * Constructs a new KeywordPlanAdGroupForecast.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IKeywordPlanAdGroupForecast);

                        /** KeywordPlanAdGroupForecast keyword_plan_ad_group. */
                        public keyword_plan_ad_group?: (string|null);

                        /** KeywordPlanAdGroupForecast ad_group_forecast. */
                        public ad_group_forecast?: (google.ads.googleads.v8.services.IForecastMetrics|null);

                        /** KeywordPlanAdGroupForecast _keyword_plan_ad_group. */
                        public _keyword_plan_ad_group?: "keyword_plan_ad_group";

                        /**
                         * Creates a new KeywordPlanAdGroupForecast instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanAdGroupForecast instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IKeywordPlanAdGroupForecast): google.ads.googleads.v8.services.KeywordPlanAdGroupForecast;

                        /**
                         * Encodes the specified KeywordPlanAdGroupForecast message. Does not implicitly {@link google.ads.googleads.v8.services.KeywordPlanAdGroupForecast.verify|verify} messages.
                         * @param m KeywordPlanAdGroupForecast message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IKeywordPlanAdGroupForecast, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanAdGroupForecast message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.KeywordPlanAdGroupForecast.verify|verify} messages.
                         * @param message KeywordPlanAdGroupForecast message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IKeywordPlanAdGroupForecast, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanAdGroupForecast message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns KeywordPlanAdGroupForecast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.KeywordPlanAdGroupForecast;

                        /**
                         * Decodes a KeywordPlanAdGroupForecast message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanAdGroupForecast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.KeywordPlanAdGroupForecast;

                        /**
                         * Verifies a KeywordPlanAdGroupForecast message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanAdGroupForecast message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanAdGroupForecast
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.KeywordPlanAdGroupForecast;

                        /**
                         * Creates a plain object from a KeywordPlanAdGroupForecast message. Also converts values to other types if specified.
                         * @param m KeywordPlanAdGroupForecast
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.KeywordPlanAdGroupForecast, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanAdGroupForecast to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a KeywordPlanKeywordForecast. */
                    interface IKeywordPlanKeywordForecast {

                        /** KeywordPlanKeywordForecast keyword_plan_ad_group_keyword */
                        keyword_plan_ad_group_keyword?: (string|null);

                        /** KeywordPlanKeywordForecast keyword_forecast */
                        keyword_forecast?: (google.ads.googleads.v8.services.IForecastMetrics|null);
                    }

                    /** Represents a KeywordPlanKeywordForecast. */
                    class KeywordPlanKeywordForecast implements IKeywordPlanKeywordForecast {

                        /**
                         * Constructs a new KeywordPlanKeywordForecast.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IKeywordPlanKeywordForecast);

                        /** KeywordPlanKeywordForecast keyword_plan_ad_group_keyword. */
                        public keyword_plan_ad_group_keyword?: (string|null);

                        /** KeywordPlanKeywordForecast keyword_forecast. */
                        public keyword_forecast?: (google.ads.googleads.v8.services.IForecastMetrics|null);

                        /** KeywordPlanKeywordForecast _keyword_plan_ad_group_keyword. */
                        public _keyword_plan_ad_group_keyword?: "keyword_plan_ad_group_keyword";

                        /**
                         * Creates a new KeywordPlanKeywordForecast instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanKeywordForecast instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IKeywordPlanKeywordForecast): google.ads.googleads.v8.services.KeywordPlanKeywordForecast;

                        /**
                         * Encodes the specified KeywordPlanKeywordForecast message. Does not implicitly {@link google.ads.googleads.v8.services.KeywordPlanKeywordForecast.verify|verify} messages.
                         * @param m KeywordPlanKeywordForecast message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IKeywordPlanKeywordForecast, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanKeywordForecast message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.KeywordPlanKeywordForecast.verify|verify} messages.
                         * @param message KeywordPlanKeywordForecast message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IKeywordPlanKeywordForecast, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanKeywordForecast message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns KeywordPlanKeywordForecast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.KeywordPlanKeywordForecast;

                        /**
                         * Decodes a KeywordPlanKeywordForecast message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanKeywordForecast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.KeywordPlanKeywordForecast;

                        /**
                         * Verifies a KeywordPlanKeywordForecast message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanKeywordForecast message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanKeywordForecast
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.KeywordPlanKeywordForecast;

                        /**
                         * Creates a plain object from a KeywordPlanKeywordForecast message. Also converts values to other types if specified.
                         * @param m KeywordPlanKeywordForecast
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.KeywordPlanKeywordForecast, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanKeywordForecast to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a KeywordPlanCampaignForecastCurve. */
                    interface IKeywordPlanCampaignForecastCurve {

                        /** KeywordPlanCampaignForecastCurve keyword_plan_campaign */
                        keyword_plan_campaign?: (string|null);

                        /** KeywordPlanCampaignForecastCurve max_cpc_bid_forecast_curve */
                        max_cpc_bid_forecast_curve?: (google.ads.googleads.v8.services.IKeywordPlanMaxCpcBidForecastCurve|null);
                    }

                    /** Represents a KeywordPlanCampaignForecastCurve. */
                    class KeywordPlanCampaignForecastCurve implements IKeywordPlanCampaignForecastCurve {

                        /**
                         * Constructs a new KeywordPlanCampaignForecastCurve.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IKeywordPlanCampaignForecastCurve);

                        /** KeywordPlanCampaignForecastCurve keyword_plan_campaign. */
                        public keyword_plan_campaign?: (string|null);

                        /** KeywordPlanCampaignForecastCurve max_cpc_bid_forecast_curve. */
                        public max_cpc_bid_forecast_curve?: (google.ads.googleads.v8.services.IKeywordPlanMaxCpcBidForecastCurve|null);

                        /** KeywordPlanCampaignForecastCurve _keyword_plan_campaign. */
                        public _keyword_plan_campaign?: "keyword_plan_campaign";

                        /**
                         * Creates a new KeywordPlanCampaignForecastCurve instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanCampaignForecastCurve instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IKeywordPlanCampaignForecastCurve): google.ads.googleads.v8.services.KeywordPlanCampaignForecastCurve;

                        /**
                         * Encodes the specified KeywordPlanCampaignForecastCurve message. Does not implicitly {@link google.ads.googleads.v8.services.KeywordPlanCampaignForecastCurve.verify|verify} messages.
                         * @param m KeywordPlanCampaignForecastCurve message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IKeywordPlanCampaignForecastCurve, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanCampaignForecastCurve message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.KeywordPlanCampaignForecastCurve.verify|verify} messages.
                         * @param message KeywordPlanCampaignForecastCurve message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IKeywordPlanCampaignForecastCurve, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanCampaignForecastCurve message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns KeywordPlanCampaignForecastCurve
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.KeywordPlanCampaignForecastCurve;

                        /**
                         * Decodes a KeywordPlanCampaignForecastCurve message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanCampaignForecastCurve
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.KeywordPlanCampaignForecastCurve;

                        /**
                         * Verifies a KeywordPlanCampaignForecastCurve message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanCampaignForecastCurve message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanCampaignForecastCurve
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.KeywordPlanCampaignForecastCurve;

                        /**
                         * Creates a plain object from a KeywordPlanCampaignForecastCurve message. Also converts values to other types if specified.
                         * @param m KeywordPlanCampaignForecastCurve
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.KeywordPlanCampaignForecastCurve, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanCampaignForecastCurve to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a KeywordPlanMaxCpcBidForecastCurve. */
                    interface IKeywordPlanMaxCpcBidForecastCurve {

                        /** KeywordPlanMaxCpcBidForecastCurve max_cpc_bid_forecasts */
                        max_cpc_bid_forecasts?: (google.ads.googleads.v8.services.IKeywordPlanMaxCpcBidForecast[]|null);
                    }

                    /** Represents a KeywordPlanMaxCpcBidForecastCurve. */
                    class KeywordPlanMaxCpcBidForecastCurve implements IKeywordPlanMaxCpcBidForecastCurve {

                        /**
                         * Constructs a new KeywordPlanMaxCpcBidForecastCurve.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IKeywordPlanMaxCpcBidForecastCurve);

                        /** KeywordPlanMaxCpcBidForecastCurve max_cpc_bid_forecasts. */
                        public max_cpc_bid_forecasts: google.ads.googleads.v8.services.IKeywordPlanMaxCpcBidForecast[];

                        /**
                         * Creates a new KeywordPlanMaxCpcBidForecastCurve instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanMaxCpcBidForecastCurve instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IKeywordPlanMaxCpcBidForecastCurve): google.ads.googleads.v8.services.KeywordPlanMaxCpcBidForecastCurve;

                        /**
                         * Encodes the specified KeywordPlanMaxCpcBidForecastCurve message. Does not implicitly {@link google.ads.googleads.v8.services.KeywordPlanMaxCpcBidForecastCurve.verify|verify} messages.
                         * @param m KeywordPlanMaxCpcBidForecastCurve message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IKeywordPlanMaxCpcBidForecastCurve, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanMaxCpcBidForecastCurve message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.KeywordPlanMaxCpcBidForecastCurve.verify|verify} messages.
                         * @param message KeywordPlanMaxCpcBidForecastCurve message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IKeywordPlanMaxCpcBidForecastCurve, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanMaxCpcBidForecastCurve message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns KeywordPlanMaxCpcBidForecastCurve
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.KeywordPlanMaxCpcBidForecastCurve;

                        /**
                         * Decodes a KeywordPlanMaxCpcBidForecastCurve message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanMaxCpcBidForecastCurve
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.KeywordPlanMaxCpcBidForecastCurve;

                        /**
                         * Verifies a KeywordPlanMaxCpcBidForecastCurve message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanMaxCpcBidForecastCurve message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanMaxCpcBidForecastCurve
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.KeywordPlanMaxCpcBidForecastCurve;

                        /**
                         * Creates a plain object from a KeywordPlanMaxCpcBidForecastCurve message. Also converts values to other types if specified.
                         * @param m KeywordPlanMaxCpcBidForecastCurve
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.KeywordPlanMaxCpcBidForecastCurve, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanMaxCpcBidForecastCurve to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a KeywordPlanMaxCpcBidForecast. */
                    interface IKeywordPlanMaxCpcBidForecast {

                        /** KeywordPlanMaxCpcBidForecast max_cpc_bid_micros */
                        max_cpc_bid_micros?: (number|null);

                        /** KeywordPlanMaxCpcBidForecast max_cpc_bid_forecast */
                        max_cpc_bid_forecast?: (google.ads.googleads.v8.services.IForecastMetrics|null);
                    }

                    /** Represents a KeywordPlanMaxCpcBidForecast. */
                    class KeywordPlanMaxCpcBidForecast implements IKeywordPlanMaxCpcBidForecast {

                        /**
                         * Constructs a new KeywordPlanMaxCpcBidForecast.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IKeywordPlanMaxCpcBidForecast);

                        /** KeywordPlanMaxCpcBidForecast max_cpc_bid_micros. */
                        public max_cpc_bid_micros?: (number|null);

                        /** KeywordPlanMaxCpcBidForecast max_cpc_bid_forecast. */
                        public max_cpc_bid_forecast?: (google.ads.googleads.v8.services.IForecastMetrics|null);

                        /** KeywordPlanMaxCpcBidForecast _max_cpc_bid_micros. */
                        public _max_cpc_bid_micros?: "max_cpc_bid_micros";

                        /**
                         * Creates a new KeywordPlanMaxCpcBidForecast instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanMaxCpcBidForecast instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IKeywordPlanMaxCpcBidForecast): google.ads.googleads.v8.services.KeywordPlanMaxCpcBidForecast;

                        /**
                         * Encodes the specified KeywordPlanMaxCpcBidForecast message. Does not implicitly {@link google.ads.googleads.v8.services.KeywordPlanMaxCpcBidForecast.verify|verify} messages.
                         * @param m KeywordPlanMaxCpcBidForecast message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IKeywordPlanMaxCpcBidForecast, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanMaxCpcBidForecast message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.KeywordPlanMaxCpcBidForecast.verify|verify} messages.
                         * @param message KeywordPlanMaxCpcBidForecast message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IKeywordPlanMaxCpcBidForecast, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanMaxCpcBidForecast message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns KeywordPlanMaxCpcBidForecast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.KeywordPlanMaxCpcBidForecast;

                        /**
                         * Decodes a KeywordPlanMaxCpcBidForecast message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanMaxCpcBidForecast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.KeywordPlanMaxCpcBidForecast;

                        /**
                         * Verifies a KeywordPlanMaxCpcBidForecast message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanMaxCpcBidForecast message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanMaxCpcBidForecast
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.KeywordPlanMaxCpcBidForecast;

                        /**
                         * Creates a plain object from a KeywordPlanMaxCpcBidForecast message. Also converts values to other types if specified.
                         * @param m KeywordPlanMaxCpcBidForecast
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.KeywordPlanMaxCpcBidForecast, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanMaxCpcBidForecast to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a KeywordPlanWeeklyTimeSeriesForecast. */
                    interface IKeywordPlanWeeklyTimeSeriesForecast {

                        /** KeywordPlanWeeklyTimeSeriesForecast keyword_plan_campaign */
                        keyword_plan_campaign?: (string|null);

                        /** KeywordPlanWeeklyTimeSeriesForecast weekly_forecasts */
                        weekly_forecasts?: (google.ads.googleads.v8.services.IKeywordPlanWeeklyForecast[]|null);
                    }

                    /** Represents a KeywordPlanWeeklyTimeSeriesForecast. */
                    class KeywordPlanWeeklyTimeSeriesForecast implements IKeywordPlanWeeklyTimeSeriesForecast {

                        /**
                         * Constructs a new KeywordPlanWeeklyTimeSeriesForecast.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IKeywordPlanWeeklyTimeSeriesForecast);

                        /** KeywordPlanWeeklyTimeSeriesForecast keyword_plan_campaign. */
                        public keyword_plan_campaign?: (string|null);

                        /** KeywordPlanWeeklyTimeSeriesForecast weekly_forecasts. */
                        public weekly_forecasts: google.ads.googleads.v8.services.IKeywordPlanWeeklyForecast[];

                        /** KeywordPlanWeeklyTimeSeriesForecast _keyword_plan_campaign. */
                        public _keyword_plan_campaign?: "keyword_plan_campaign";

                        /**
                         * Creates a new KeywordPlanWeeklyTimeSeriesForecast instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanWeeklyTimeSeriesForecast instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IKeywordPlanWeeklyTimeSeriesForecast): google.ads.googleads.v8.services.KeywordPlanWeeklyTimeSeriesForecast;

                        /**
                         * Encodes the specified KeywordPlanWeeklyTimeSeriesForecast message. Does not implicitly {@link google.ads.googleads.v8.services.KeywordPlanWeeklyTimeSeriesForecast.verify|verify} messages.
                         * @param m KeywordPlanWeeklyTimeSeriesForecast message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IKeywordPlanWeeklyTimeSeriesForecast, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanWeeklyTimeSeriesForecast message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.KeywordPlanWeeklyTimeSeriesForecast.verify|verify} messages.
                         * @param message KeywordPlanWeeklyTimeSeriesForecast message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IKeywordPlanWeeklyTimeSeriesForecast, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanWeeklyTimeSeriesForecast message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns KeywordPlanWeeklyTimeSeriesForecast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.KeywordPlanWeeklyTimeSeriesForecast;

                        /**
                         * Decodes a KeywordPlanWeeklyTimeSeriesForecast message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanWeeklyTimeSeriesForecast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.KeywordPlanWeeklyTimeSeriesForecast;

                        /**
                         * Verifies a KeywordPlanWeeklyTimeSeriesForecast message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanWeeklyTimeSeriesForecast message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanWeeklyTimeSeriesForecast
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.KeywordPlanWeeklyTimeSeriesForecast;

                        /**
                         * Creates a plain object from a KeywordPlanWeeklyTimeSeriesForecast message. Also converts values to other types if specified.
                         * @param m KeywordPlanWeeklyTimeSeriesForecast
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.KeywordPlanWeeklyTimeSeriesForecast, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanWeeklyTimeSeriesForecast to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a KeywordPlanWeeklyForecast. */
                    interface IKeywordPlanWeeklyForecast {

                        /** KeywordPlanWeeklyForecast start_date */
                        start_date?: (string|null);

                        /** KeywordPlanWeeklyForecast forecast */
                        forecast?: (google.ads.googleads.v8.services.IForecastMetrics|null);
                    }

                    /** Represents a KeywordPlanWeeklyForecast. */
                    class KeywordPlanWeeklyForecast implements IKeywordPlanWeeklyForecast {

                        /**
                         * Constructs a new KeywordPlanWeeklyForecast.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IKeywordPlanWeeklyForecast);

                        /** KeywordPlanWeeklyForecast start_date. */
                        public start_date?: (string|null);

                        /** KeywordPlanWeeklyForecast forecast. */
                        public forecast?: (google.ads.googleads.v8.services.IForecastMetrics|null);

                        /** KeywordPlanWeeklyForecast _start_date. */
                        public _start_date?: "start_date";

                        /**
                         * Creates a new KeywordPlanWeeklyForecast instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanWeeklyForecast instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IKeywordPlanWeeklyForecast): google.ads.googleads.v8.services.KeywordPlanWeeklyForecast;

                        /**
                         * Encodes the specified KeywordPlanWeeklyForecast message. Does not implicitly {@link google.ads.googleads.v8.services.KeywordPlanWeeklyForecast.verify|verify} messages.
                         * @param m KeywordPlanWeeklyForecast message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IKeywordPlanWeeklyForecast, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanWeeklyForecast message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.KeywordPlanWeeklyForecast.verify|verify} messages.
                         * @param message KeywordPlanWeeklyForecast message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IKeywordPlanWeeklyForecast, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanWeeklyForecast message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns KeywordPlanWeeklyForecast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.KeywordPlanWeeklyForecast;

                        /**
                         * Decodes a KeywordPlanWeeklyForecast message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanWeeklyForecast
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.KeywordPlanWeeklyForecast;

                        /**
                         * Verifies a KeywordPlanWeeklyForecast message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanWeeklyForecast message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanWeeklyForecast
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.KeywordPlanWeeklyForecast;

                        /**
                         * Creates a plain object from a KeywordPlanWeeklyForecast message. Also converts values to other types if specified.
                         * @param m KeywordPlanWeeklyForecast
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.KeywordPlanWeeklyForecast, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanWeeklyForecast to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ForecastMetrics. */
                    interface IForecastMetrics {

                        /** ForecastMetrics impressions */
                        impressions?: (number|null);

                        /** ForecastMetrics ctr */
                        ctr?: (number|null);

                        /** ForecastMetrics average_cpc */
                        average_cpc?: (number|null);

                        /** ForecastMetrics clicks */
                        clicks?: (number|null);

                        /** ForecastMetrics cost_micros */
                        cost_micros?: (number|null);
                    }

                    /** Represents a ForecastMetrics. */
                    class ForecastMetrics implements IForecastMetrics {

                        /**
                         * Constructs a new ForecastMetrics.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IForecastMetrics);

                        /** ForecastMetrics impressions. */
                        public impressions?: (number|null);

                        /** ForecastMetrics ctr. */
                        public ctr?: (number|null);

                        /** ForecastMetrics average_cpc. */
                        public average_cpc?: (number|null);

                        /** ForecastMetrics clicks. */
                        public clicks?: (number|null);

                        /** ForecastMetrics cost_micros. */
                        public cost_micros?: (number|null);

                        /** ForecastMetrics _impressions. */
                        public _impressions?: "impressions";

                        /** ForecastMetrics _ctr. */
                        public _ctr?: "ctr";

                        /** ForecastMetrics _average_cpc. */
                        public _average_cpc?: "average_cpc";

                        /** ForecastMetrics _clicks. */
                        public _clicks?: "clicks";

                        /** ForecastMetrics _cost_micros. */
                        public _cost_micros?: "cost_micros";

                        /**
                         * Creates a new ForecastMetrics instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ForecastMetrics instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IForecastMetrics): google.ads.googleads.v8.services.ForecastMetrics;

                        /**
                         * Encodes the specified ForecastMetrics message. Does not implicitly {@link google.ads.googleads.v8.services.ForecastMetrics.verify|verify} messages.
                         * @param m ForecastMetrics message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IForecastMetrics, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ForecastMetrics message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.ForecastMetrics.verify|verify} messages.
                         * @param message ForecastMetrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IForecastMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ForecastMetrics message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns ForecastMetrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.ForecastMetrics;

                        /**
                         * Decodes a ForecastMetrics message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ForecastMetrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.ForecastMetrics;

                        /**
                         * Verifies a ForecastMetrics message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ForecastMetrics message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ForecastMetrics
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ForecastMetrics;

                        /**
                         * Creates a plain object from a ForecastMetrics message. Also converts values to other types if specified.
                         * @param m ForecastMetrics
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ForecastMetrics, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ForecastMetrics to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a GenerateHistoricalMetricsRequest. */
                    interface IGenerateHistoricalMetricsRequest {

                        /** GenerateHistoricalMetricsRequest keyword_plan */
                        keyword_plan?: (string|null);

                        /** GenerateHistoricalMetricsRequest aggregate_metrics */
                        aggregate_metrics?: (google.ads.googleads.v8.common.IKeywordPlanAggregateMetrics|null);

                        /** GenerateHistoricalMetricsRequest historical_metrics_options */
                        historical_metrics_options?: (google.ads.googleads.v8.common.IHistoricalMetricsOptions|null);
                    }

                    /** Represents a GenerateHistoricalMetricsRequest. */
                    class GenerateHistoricalMetricsRequest implements IGenerateHistoricalMetricsRequest {

                        /**
                         * Constructs a new GenerateHistoricalMetricsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGenerateHistoricalMetricsRequest);

                        /** GenerateHistoricalMetricsRequest keyword_plan. */
                        public keyword_plan: string;

                        /** GenerateHistoricalMetricsRequest aggregate_metrics. */
                        public aggregate_metrics?: (google.ads.googleads.v8.common.IKeywordPlanAggregateMetrics|null);

                        /** GenerateHistoricalMetricsRequest historical_metrics_options. */
                        public historical_metrics_options?: (google.ads.googleads.v8.common.IHistoricalMetricsOptions|null);

                        /**
                         * Creates a new GenerateHistoricalMetricsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateHistoricalMetricsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGenerateHistoricalMetricsRequest): google.ads.googleads.v8.services.GenerateHistoricalMetricsRequest;

                        /**
                         * Encodes the specified GenerateHistoricalMetricsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GenerateHistoricalMetricsRequest.verify|verify} messages.
                         * @param m GenerateHistoricalMetricsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGenerateHistoricalMetricsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateHistoricalMetricsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GenerateHistoricalMetricsRequest.verify|verify} messages.
                         * @param message GenerateHistoricalMetricsRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGenerateHistoricalMetricsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateHistoricalMetricsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GenerateHistoricalMetricsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GenerateHistoricalMetricsRequest;

                        /**
                         * Decodes a GenerateHistoricalMetricsRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateHistoricalMetricsRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GenerateHistoricalMetricsRequest;

                        /**
                         * Verifies a GenerateHistoricalMetricsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateHistoricalMetricsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GenerateHistoricalMetricsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GenerateHistoricalMetricsRequest;

                        /**
                         * Creates a plain object from a GenerateHistoricalMetricsRequest message. Also converts values to other types if specified.
                         * @param m GenerateHistoricalMetricsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GenerateHistoricalMetricsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateHistoricalMetricsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a GenerateHistoricalMetricsResponse. */
                    interface IGenerateHistoricalMetricsResponse {

                        /** GenerateHistoricalMetricsResponse metrics */
                        metrics?: (google.ads.googleads.v8.services.IKeywordPlanKeywordHistoricalMetrics[]|null);

                        /** GenerateHistoricalMetricsResponse aggregate_metric_results */
                        aggregate_metric_results?: (google.ads.googleads.v8.common.IKeywordPlanAggregateMetricResults|null);
                    }

                    /** Represents a GenerateHistoricalMetricsResponse. */
                    class GenerateHistoricalMetricsResponse implements IGenerateHistoricalMetricsResponse {

                        /**
                         * Constructs a new GenerateHistoricalMetricsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGenerateHistoricalMetricsResponse);

                        /** GenerateHistoricalMetricsResponse metrics. */
                        public metrics: google.ads.googleads.v8.services.IKeywordPlanKeywordHistoricalMetrics[];

                        /** GenerateHistoricalMetricsResponse aggregate_metric_results. */
                        public aggregate_metric_results?: (google.ads.googleads.v8.common.IKeywordPlanAggregateMetricResults|null);

                        /**
                         * Creates a new GenerateHistoricalMetricsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateHistoricalMetricsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGenerateHistoricalMetricsResponse): google.ads.googleads.v8.services.GenerateHistoricalMetricsResponse;

                        /**
                         * Encodes the specified GenerateHistoricalMetricsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.GenerateHistoricalMetricsResponse.verify|verify} messages.
                         * @param m GenerateHistoricalMetricsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGenerateHistoricalMetricsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateHistoricalMetricsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GenerateHistoricalMetricsResponse.verify|verify} messages.
                         * @param message GenerateHistoricalMetricsResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGenerateHistoricalMetricsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateHistoricalMetricsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GenerateHistoricalMetricsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GenerateHistoricalMetricsResponse;

                        /**
                         * Decodes a GenerateHistoricalMetricsResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateHistoricalMetricsResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GenerateHistoricalMetricsResponse;

                        /**
                         * Verifies a GenerateHistoricalMetricsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateHistoricalMetricsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GenerateHistoricalMetricsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GenerateHistoricalMetricsResponse;

                        /**
                         * Creates a plain object from a GenerateHistoricalMetricsResponse message. Also converts values to other types if specified.
                         * @param m GenerateHistoricalMetricsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GenerateHistoricalMetricsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateHistoricalMetricsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a KeywordPlanKeywordHistoricalMetrics. */
                    interface IKeywordPlanKeywordHistoricalMetrics {

                        /** KeywordPlanKeywordHistoricalMetrics search_query */
                        search_query?: (string|null);

                        /** KeywordPlanKeywordHistoricalMetrics close_variants */
                        close_variants?: (string[]|null);

                        /** KeywordPlanKeywordHistoricalMetrics keyword_metrics */
                        keyword_metrics?: (google.ads.googleads.v8.common.IKeywordPlanHistoricalMetrics|null);
                    }

                    /** Represents a KeywordPlanKeywordHistoricalMetrics. */
                    class KeywordPlanKeywordHistoricalMetrics implements IKeywordPlanKeywordHistoricalMetrics {

                        /**
                         * Constructs a new KeywordPlanKeywordHistoricalMetrics.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IKeywordPlanKeywordHistoricalMetrics);

                        /** KeywordPlanKeywordHistoricalMetrics search_query. */
                        public search_query?: (string|null);

                        /** KeywordPlanKeywordHistoricalMetrics close_variants. */
                        public close_variants: string[];

                        /** KeywordPlanKeywordHistoricalMetrics keyword_metrics. */
                        public keyword_metrics?: (google.ads.googleads.v8.common.IKeywordPlanHistoricalMetrics|null);

                        /** KeywordPlanKeywordHistoricalMetrics _search_query. */
                        public _search_query?: "search_query";

                        /**
                         * Creates a new KeywordPlanKeywordHistoricalMetrics instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordPlanKeywordHistoricalMetrics instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IKeywordPlanKeywordHistoricalMetrics): google.ads.googleads.v8.services.KeywordPlanKeywordHistoricalMetrics;

                        /**
                         * Encodes the specified KeywordPlanKeywordHistoricalMetrics message. Does not implicitly {@link google.ads.googleads.v8.services.KeywordPlanKeywordHistoricalMetrics.verify|verify} messages.
                         * @param m KeywordPlanKeywordHistoricalMetrics message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IKeywordPlanKeywordHistoricalMetrics, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordPlanKeywordHistoricalMetrics message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.KeywordPlanKeywordHistoricalMetrics.verify|verify} messages.
                         * @param message KeywordPlanKeywordHistoricalMetrics message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IKeywordPlanKeywordHistoricalMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordPlanKeywordHistoricalMetrics message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns KeywordPlanKeywordHistoricalMetrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.KeywordPlanKeywordHistoricalMetrics;

                        /**
                         * Decodes a KeywordPlanKeywordHistoricalMetrics message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns KeywordPlanKeywordHistoricalMetrics
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.KeywordPlanKeywordHistoricalMetrics;

                        /**
                         * Verifies a KeywordPlanKeywordHistoricalMetrics message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordPlanKeywordHistoricalMetrics message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordPlanKeywordHistoricalMetrics
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.KeywordPlanKeywordHistoricalMetrics;

                        /**
                         * Creates a plain object from a KeywordPlanKeywordHistoricalMetrics message. Also converts values to other types if specified.
                         * @param m KeywordPlanKeywordHistoricalMetrics
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.KeywordPlanKeywordHistoricalMetrics, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordPlanKeywordHistoricalMetrics to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetLabel.
                         * @param request GetLabelRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Label
                         */
                        public getLabel(request: google.ads.googleads.v8.services.IGetLabelRequest, callback: google.ads.googleads.v8.services.LabelService.GetLabelCallback): void;

                        /**
                         * Calls GetLabel.
                         * @param request GetLabelRequest message or plain object
                         * @returns Promise
                         */
                        public getLabel(request: google.ads.googleads.v8.services.IGetLabelRequest): Promise<google.ads.googleads.v8.resources.Label>;

                        /**
                         * 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.v8.services.IMutateLabelsRequest, callback: google.ads.googleads.v8.services.LabelService.MutateLabelsCallback): void;

                        /**
                         * Calls MutateLabels.
                         * @param request MutateLabelsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateLabels(request: google.ads.googleads.v8.services.IMutateLabelsRequest): Promise<google.ads.googleads.v8.services.MutateLabelsResponse>;
                    }

                    namespace LabelService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.LabelService#getLabel}.
                         * @param error Error, if any
                         * @param [response] Label
                         */
                        type GetLabelCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.Label) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.LabelService#mutateLabels}.
                         * @param error Error, if any
                         * @param [response] MutateLabelsResponse
                         */
                        type MutateLabelsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateLabelsResponse) => void;
                    }

                    /** Properties of a GetLabelRequest. */
                    interface IGetLabelRequest {

                        /** GetLabelRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetLabelRequest. */
                    class GetLabelRequest implements IGetLabelRequest {

                        /**
                         * Constructs a new GetLabelRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetLabelRequest);

                        /** GetLabelRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetLabelRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetLabelRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetLabelRequest): google.ads.googleads.v8.services.GetLabelRequest;

                        /**
                         * Encodes the specified GetLabelRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetLabelRequest.verify|verify} messages.
                         * @param m GetLabelRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetLabelRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetLabelRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetLabelRequest.verify|verify} messages.
                         * @param message GetLabelRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetLabelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetLabelRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetLabelRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetLabelRequest;

                        /**
                         * Decodes a GetLabelRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetLabelRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetLabelRequest;

                        /**
                         * Verifies a GetLabelRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetLabelRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetLabelRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetLabelRequest;

                        /**
                         * Creates a plain object from a GetLabelRequest message. Also converts values to other types if specified.
                         * @param m GetLabelRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetLabelRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetLabelRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateLabelsRequest. */
                    interface IMutateLabelsRequest {

                        /** MutateLabelsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateLabelsRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateLabelsRequest. */
                    class MutateLabelsRequest implements IMutateLabelsRequest {

                        /**
                         * Constructs a new MutateLabelsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateLabelsRequest);

                        /** MutateLabelsRequest customer_id. */
                        public customer_id: string;

                        /** MutateLabelsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateLabelsRequest): google.ads.googleads.v8.services.MutateLabelsRequest;

                        /**
                         * Encodes the specified MutateLabelsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateLabelsRequest.verify|verify} messages.
                         * @param m MutateLabelsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateLabelsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateLabelsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateLabelsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateLabelsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateLabelsRequest;

                        /**
                         * Verifies a MutateLabelsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateLabelsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateLabelsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateLabelsRequest;

                        /**
                         * Creates a plain object from a MutateLabelsRequest message. Also converts values to other types if specified.
                         * @param m MutateLabelsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateLabelsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateLabelsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a LabelOperation. */
                    interface ILabelOperation {

                        /** LabelOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** LabelOperation create */
                        create?: (google.ads.googleads.v8.resources.ILabel|null);

                        /** LabelOperation update */
                        update?: (google.ads.googleads.v8.resources.ILabel|null);

                        /** LabelOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a LabelOperation. */
                    class LabelOperation implements ILabelOperation {

                        /**
                         * Constructs a new LabelOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ILabelOperation);

                        /** LabelOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** LabelOperation create. */
                        public create?: (google.ads.googleads.v8.resources.ILabel|null);

                        /** LabelOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.ILabelOperation): google.ads.googleads.v8.services.LabelOperation;

                        /**
                         * Encodes the specified LabelOperation message. Does not implicitly {@link google.ads.googleads.v8.services.LabelOperation.verify|verify} messages.
                         * @param m LabelOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ILabelOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LabelOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ILabelOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LabelOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.LabelOperation;

                        /**
                         * Verifies a LabelOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a LabelOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns LabelOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.LabelOperation;

                        /**
                         * Creates a plain object from a LabelOperation message. Also converts values to other types if specified.
                         * @param m LabelOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.LabelOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LabelOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateLabelsResponse. */
                    interface IMutateLabelsResponse {

                        /** MutateLabelsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateLabelsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateLabelResult[]|null);
                    }

                    /** Represents a MutateLabelsResponse. */
                    class MutateLabelsResponse implements IMutateLabelsResponse {

                        /**
                         * Constructs a new MutateLabelsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateLabelsResponse);

                        /** MutateLabelsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateLabelsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateLabelsResponse): google.ads.googleads.v8.services.MutateLabelsResponse;

                        /**
                         * Encodes the specified MutateLabelsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateLabelsResponse.verify|verify} messages.
                         * @param m MutateLabelsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateLabelsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateLabelsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateLabelsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateLabelsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateLabelsResponse;

                        /**
                         * Verifies a MutateLabelsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateLabelsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateLabelsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateLabelsResponse;

                        /**
                         * Creates a plain object from a MutateLabelsResponse message. Also converts values to other types if specified.
                         * @param m MutateLabelsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateLabelsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateLabelsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateLabelResult. */
                    interface IMutateLabelResult {

                        /** MutateLabelResult resource_name */
                        resource_name?: (string|null);

                        /** MutateLabelResult label */
                        label?: (google.ads.googleads.v8.resources.ILabel|null);
                    }

                    /** Represents a MutateLabelResult. */
                    class MutateLabelResult implements IMutateLabelResult {

                        /**
                         * Constructs a new MutateLabelResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateLabelResult);

                        /** MutateLabelResult resource_name. */
                        public resource_name: string;

                        /** MutateLabelResult label. */
                        public label?: (google.ads.googleads.v8.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.v8.services.IMutateLabelResult): google.ads.googleads.v8.services.MutateLabelResult;

                        /**
                         * Encodes the specified MutateLabelResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateLabelResult.verify|verify} messages.
                         * @param m MutateLabelResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateLabelResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateLabelResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateLabelResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateLabelResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateLabelResult;

                        /**
                         * Verifies a MutateLabelResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateLabelResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateLabelResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateLabelResult;

                        /**
                         * Creates a plain object from a MutateLabelResult message. Also converts values to other types if specified.
                         * @param m MutateLabelResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateLabelResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateLabelResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a MediaFileService */
                    class MediaFileService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new MediaFileService 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 MediaFileService 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): MediaFileService;

                        /**
                         * Calls GetMediaFile.
                         * @param request GetMediaFileRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MediaFile
                         */
                        public getMediaFile(request: google.ads.googleads.v8.services.IGetMediaFileRequest, callback: google.ads.googleads.v8.services.MediaFileService.GetMediaFileCallback): void;

                        /**
                         * Calls GetMediaFile.
                         * @param request GetMediaFileRequest message or plain object
                         * @returns Promise
                         */
                        public getMediaFile(request: google.ads.googleads.v8.services.IGetMediaFileRequest): Promise<google.ads.googleads.v8.resources.MediaFile>;

                        /**
                         * Calls MutateMediaFiles.
                         * @param request MutateMediaFilesRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateMediaFilesResponse
                         */
                        public mutateMediaFiles(request: google.ads.googleads.v8.services.IMutateMediaFilesRequest, callback: google.ads.googleads.v8.services.MediaFileService.MutateMediaFilesCallback): void;

                        /**
                         * Calls MutateMediaFiles.
                         * @param request MutateMediaFilesRequest message or plain object
                         * @returns Promise
                         */
                        public mutateMediaFiles(request: google.ads.googleads.v8.services.IMutateMediaFilesRequest): Promise<google.ads.googleads.v8.services.MutateMediaFilesResponse>;
                    }

                    namespace MediaFileService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.MediaFileService#getMediaFile}.
                         * @param error Error, if any
                         * @param [response] MediaFile
                         */
                        type GetMediaFileCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.MediaFile) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.MediaFileService#mutateMediaFiles}.
                         * @param error Error, if any
                         * @param [response] MutateMediaFilesResponse
                         */
                        type MutateMediaFilesCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateMediaFilesResponse) => void;
                    }

                    /** Properties of a GetMediaFileRequest. */
                    interface IGetMediaFileRequest {

                        /** GetMediaFileRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetMediaFileRequest. */
                    class GetMediaFileRequest implements IGetMediaFileRequest {

                        /**
                         * Constructs a new GetMediaFileRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetMediaFileRequest);

                        /** GetMediaFileRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetMediaFileRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetMediaFileRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetMediaFileRequest): google.ads.googleads.v8.services.GetMediaFileRequest;

                        /**
                         * Encodes the specified GetMediaFileRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetMediaFileRequest.verify|verify} messages.
                         * @param m GetMediaFileRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetMediaFileRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetMediaFileRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetMediaFileRequest.verify|verify} messages.
                         * @param message GetMediaFileRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetMediaFileRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetMediaFileRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetMediaFileRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetMediaFileRequest;

                        /**
                         * Decodes a GetMediaFileRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetMediaFileRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetMediaFileRequest;

                        /**
                         * Verifies a GetMediaFileRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetMediaFileRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetMediaFileRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetMediaFileRequest;

                        /**
                         * Creates a plain object from a GetMediaFileRequest message. Also converts values to other types if specified.
                         * @param m GetMediaFileRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetMediaFileRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetMediaFileRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateMediaFilesRequest. */
                    interface IMutateMediaFilesRequest {

                        /** MutateMediaFilesRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateMediaFilesRequest operations */
                        operations?: (google.ads.googleads.v8.services.IMediaFileOperation[]|null);

                        /** MutateMediaFilesRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** MutateMediaFilesRequest validate_only */
                        validate_only?: (boolean|null);

                        /** MutateMediaFilesRequest response_content_type */
                        response_content_type?: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateMediaFilesRequest. */
                    class MutateMediaFilesRequest implements IMutateMediaFilesRequest {

                        /**
                         * Constructs a new MutateMediaFilesRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateMediaFilesRequest);

                        /** MutateMediaFilesRequest customer_id. */
                        public customer_id: string;

                        /** MutateMediaFilesRequest operations. */
                        public operations: google.ads.googleads.v8.services.IMediaFileOperation[];

                        /** MutateMediaFilesRequest partial_failure. */
                        public partial_failure: boolean;

                        /** MutateMediaFilesRequest validate_only. */
                        public validate_only: boolean;

                        /** MutateMediaFilesRequest response_content_type. */
                        public response_content_type: (google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType);

                        /**
                         * Creates a new MutateMediaFilesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateMediaFilesRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateMediaFilesRequest): google.ads.googleads.v8.services.MutateMediaFilesRequest;

                        /**
                         * Encodes the specified MutateMediaFilesRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateMediaFilesRequest.verify|verify} messages.
                         * @param m MutateMediaFilesRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateMediaFilesRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateMediaFilesRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateMediaFilesRequest.verify|verify} messages.
                         * @param message MutateMediaFilesRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateMediaFilesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateMediaFilesRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateMediaFilesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateMediaFilesRequest;

                        /**
                         * Decodes a MutateMediaFilesRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateMediaFilesRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateMediaFilesRequest;

                        /**
                         * Verifies a MutateMediaFilesRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateMediaFilesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateMediaFilesRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateMediaFilesRequest;

                        /**
                         * Creates a plain object from a MutateMediaFilesRequest message. Also converts values to other types if specified.
                         * @param m MutateMediaFilesRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateMediaFilesRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateMediaFilesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MediaFileOperation. */
                    interface IMediaFileOperation {

                        /** MediaFileOperation create */
                        create?: (google.ads.googleads.v8.resources.IMediaFile|null);
                    }

                    /** Represents a MediaFileOperation. */
                    class MediaFileOperation implements IMediaFileOperation {

                        /**
                         * Constructs a new MediaFileOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMediaFileOperation);

                        /** MediaFileOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IMediaFile|null);

                        /** MediaFileOperation operation. */
                        public operation?: "create";

                        /**
                         * Creates a new MediaFileOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MediaFileOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMediaFileOperation): google.ads.googleads.v8.services.MediaFileOperation;

                        /**
                         * Encodes the specified MediaFileOperation message. Does not implicitly {@link google.ads.googleads.v8.services.MediaFileOperation.verify|verify} messages.
                         * @param m MediaFileOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMediaFileOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MediaFileOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MediaFileOperation.verify|verify} messages.
                         * @param message MediaFileOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMediaFileOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MediaFileOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MediaFileOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MediaFileOperation;

                        /**
                         * Decodes a MediaFileOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MediaFileOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MediaFileOperation;

                        /**
                         * Verifies a MediaFileOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MediaFileOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MediaFileOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MediaFileOperation;

                        /**
                         * Creates a plain object from a MediaFileOperation message. Also converts values to other types if specified.
                         * @param m MediaFileOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MediaFileOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MediaFileOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateMediaFilesResponse. */
                    interface IMutateMediaFilesResponse {

                        /** MutateMediaFilesResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateMediaFilesResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateMediaFileResult[]|null);
                    }

                    /** Represents a MutateMediaFilesResponse. */
                    class MutateMediaFilesResponse implements IMutateMediaFilesResponse {

                        /**
                         * Constructs a new MutateMediaFilesResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateMediaFilesResponse);

                        /** MutateMediaFilesResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateMediaFilesResponse results. */
                        public results: google.ads.googleads.v8.services.IMutateMediaFileResult[];

                        /**
                         * Creates a new MutateMediaFilesResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateMediaFilesResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateMediaFilesResponse): google.ads.googleads.v8.services.MutateMediaFilesResponse;

                        /**
                         * Encodes the specified MutateMediaFilesResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateMediaFilesResponse.verify|verify} messages.
                         * @param m MutateMediaFilesResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateMediaFilesResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateMediaFilesResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateMediaFilesResponse.verify|verify} messages.
                         * @param message MutateMediaFilesResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateMediaFilesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateMediaFilesResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateMediaFilesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateMediaFilesResponse;

                        /**
                         * Decodes a MutateMediaFilesResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateMediaFilesResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateMediaFilesResponse;

                        /**
                         * Verifies a MutateMediaFilesResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateMediaFilesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateMediaFilesResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateMediaFilesResponse;

                        /**
                         * Creates a plain object from a MutateMediaFilesResponse message. Also converts values to other types if specified.
                         * @param m MutateMediaFilesResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateMediaFilesResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateMediaFilesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateMediaFileResult. */
                    interface IMutateMediaFileResult {

                        /** MutateMediaFileResult resource_name */
                        resource_name?: (string|null);

                        /** MutateMediaFileResult media_file */
                        media_file?: (google.ads.googleads.v8.resources.IMediaFile|null);
                    }

                    /** Represents a MutateMediaFileResult. */
                    class MutateMediaFileResult implements IMutateMediaFileResult {

                        /**
                         * Constructs a new MutateMediaFileResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateMediaFileResult);

                        /** MutateMediaFileResult resource_name. */
                        public resource_name: string;

                        /** MutateMediaFileResult media_file. */
                        public media_file?: (google.ads.googleads.v8.resources.IMediaFile|null);

                        /**
                         * Creates a new MutateMediaFileResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateMediaFileResult instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateMediaFileResult): google.ads.googleads.v8.services.MutateMediaFileResult;

                        /**
                         * Encodes the specified MutateMediaFileResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateMediaFileResult.verify|verify} messages.
                         * @param m MutateMediaFileResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateMediaFileResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateMediaFileResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateMediaFileResult.verify|verify} messages.
                         * @param message MutateMediaFileResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateMediaFileResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateMediaFileResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateMediaFileResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateMediaFileResult;

                        /**
                         * Decodes a MutateMediaFileResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateMediaFileResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateMediaFileResult;

                        /**
                         * Verifies a MutateMediaFileResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateMediaFileResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateMediaFileResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateMediaFileResult;

                        /**
                         * Creates a plain object from a MutateMediaFileResult message. Also converts values to other types if specified.
                         * @param m MutateMediaFileResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateMediaFileResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateMediaFileResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetRemarketingAction.
                         * @param request GetRemarketingActionRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and RemarketingAction
                         */
                        public getRemarketingAction(request: google.ads.googleads.v8.services.IGetRemarketingActionRequest, callback: google.ads.googleads.v8.services.RemarketingActionService.GetRemarketingActionCallback): void;

                        /**
                         * Calls GetRemarketingAction.
                         * @param request GetRemarketingActionRequest message or plain object
                         * @returns Promise
                         */
                        public getRemarketingAction(request: google.ads.googleads.v8.services.IGetRemarketingActionRequest): Promise<google.ads.googleads.v8.resources.RemarketingAction>;

                        /**
                         * 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.v8.services.IMutateRemarketingActionsRequest, callback: google.ads.googleads.v8.services.RemarketingActionService.MutateRemarketingActionsCallback): void;

                        /**
                         * Calls MutateRemarketingActions.
                         * @param request MutateRemarketingActionsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateRemarketingActions(request: google.ads.googleads.v8.services.IMutateRemarketingActionsRequest): Promise<google.ads.googleads.v8.services.MutateRemarketingActionsResponse>;
                    }

                    namespace RemarketingActionService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.RemarketingActionService#getRemarketingAction}.
                         * @param error Error, if any
                         * @param [response] RemarketingAction
                         */
                        type GetRemarketingActionCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.RemarketingAction) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.RemarketingActionService#mutateRemarketingActions}.
                         * @param error Error, if any
                         * @param [response] MutateRemarketingActionsResponse
                         */
                        type MutateRemarketingActionsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateRemarketingActionsResponse) => void;
                    }

                    /** Properties of a GetRemarketingActionRequest. */
                    interface IGetRemarketingActionRequest {

                        /** GetRemarketingActionRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetRemarketingActionRequest. */
                    class GetRemarketingActionRequest implements IGetRemarketingActionRequest {

                        /**
                         * Constructs a new GetRemarketingActionRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetRemarketingActionRequest);

                        /** GetRemarketingActionRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetRemarketingActionRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetRemarketingActionRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetRemarketingActionRequest): google.ads.googleads.v8.services.GetRemarketingActionRequest;

                        /**
                         * Encodes the specified GetRemarketingActionRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetRemarketingActionRequest.verify|verify} messages.
                         * @param m GetRemarketingActionRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetRemarketingActionRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetRemarketingActionRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetRemarketingActionRequest.verify|verify} messages.
                         * @param message GetRemarketingActionRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetRemarketingActionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetRemarketingActionRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetRemarketingActionRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetRemarketingActionRequest;

                        /**
                         * Decodes a GetRemarketingActionRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetRemarketingActionRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetRemarketingActionRequest;

                        /**
                         * Verifies a GetRemarketingActionRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetRemarketingActionRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetRemarketingActionRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetRemarketingActionRequest;

                        /**
                         * Creates a plain object from a GetRemarketingActionRequest message. Also converts values to other types if specified.
                         * @param m GetRemarketingActionRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetRemarketingActionRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetRemarketingActionRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateRemarketingActionsRequest. */
                    interface IMutateRemarketingActionsRequest {

                        /** MutateRemarketingActionsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateRemarketingActionsRequest operations */
                        operations?: (google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateRemarketingActionsRequest);

                        /** MutateRemarketingActionsRequest customer_id. */
                        public customer_id: string;

                        /** MutateRemarketingActionsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.services.IMutateRemarketingActionsRequest): google.ads.googleads.v8.services.MutateRemarketingActionsRequest;

                        /**
                         * Encodes the specified MutateRemarketingActionsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateRemarketingActionsRequest.verify|verify} messages.
                         * @param m MutateRemarketingActionsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateRemarketingActionsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateRemarketingActionsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateRemarketingActionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateRemarketingActionsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateRemarketingActionsRequest;

                        /**
                         * Verifies a MutateRemarketingActionsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateRemarketingActionsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateRemarketingActionsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateRemarketingActionsRequest;

                        /**
                         * Creates a plain object from a MutateRemarketingActionsRequest message. Also converts values to other types if specified.
                         * @param m MutateRemarketingActionsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateRemarketingActionsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateRemarketingActionsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a RemarketingActionOperation. */
                    interface IRemarketingActionOperation {

                        /** RemarketingActionOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** RemarketingActionOperation create */
                        create?: (google.ads.googleads.v8.resources.IRemarketingAction|null);

                        /** RemarketingActionOperation update */
                        update?: (google.ads.googleads.v8.resources.IRemarketingAction|null);
                    }

                    /** Represents a RemarketingActionOperation. */
                    class RemarketingActionOperation implements IRemarketingActionOperation {

                        /**
                         * Constructs a new RemarketingActionOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IRemarketingActionOperation);

                        /** RemarketingActionOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** RemarketingActionOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IRemarketingAction|null);

                        /** RemarketingActionOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.IRemarketingActionOperation): google.ads.googleads.v8.services.RemarketingActionOperation;

                        /**
                         * Encodes the specified RemarketingActionOperation message. Does not implicitly {@link google.ads.googleads.v8.services.RemarketingActionOperation.verify|verify} messages.
                         * @param m RemarketingActionOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IRemarketingActionOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RemarketingActionOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IRemarketingActionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RemarketingActionOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.RemarketingActionOperation;

                        /**
                         * Verifies a RemarketingActionOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RemarketingActionOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns RemarketingActionOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.RemarketingActionOperation;

                        /**
                         * Creates a plain object from a RemarketingActionOperation message. Also converts values to other types if specified.
                         * @param m RemarketingActionOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.RemarketingActionOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RemarketingActionOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateRemarketingActionsResponse. */
                    interface IMutateRemarketingActionsResponse {

                        /** MutateRemarketingActionsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateRemarketingActionsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateRemarketingActionResult[]|null);
                    }

                    /** Represents a MutateRemarketingActionsResponse. */
                    class MutateRemarketingActionsResponse implements IMutateRemarketingActionsResponse {

                        /**
                         * Constructs a new MutateRemarketingActionsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateRemarketingActionsResponse);

                        /** MutateRemarketingActionsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateRemarketingActionsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateRemarketingActionsResponse): google.ads.googleads.v8.services.MutateRemarketingActionsResponse;

                        /**
                         * Encodes the specified MutateRemarketingActionsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateRemarketingActionsResponse.verify|verify} messages.
                         * @param m MutateRemarketingActionsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateRemarketingActionsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateRemarketingActionsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateRemarketingActionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateRemarketingActionsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateRemarketingActionsResponse;

                        /**
                         * Verifies a MutateRemarketingActionsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateRemarketingActionsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateRemarketingActionsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateRemarketingActionsResponse;

                        /**
                         * Creates a plain object from a MutateRemarketingActionsResponse message. Also converts values to other types if specified.
                         * @param m MutateRemarketingActionsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateRemarketingActionsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateRemarketingActionsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IMutateRemarketingActionResult): google.ads.googleads.v8.services.MutateRemarketingActionResult;

                        /**
                         * Encodes the specified MutateRemarketingActionResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateRemarketingActionResult.verify|verify} messages.
                         * @param m MutateRemarketingActionResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateRemarketingActionResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateRemarketingActionResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateRemarketingActionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateRemarketingActionResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateRemarketingActionResult;

                        /**
                         * Verifies a MutateRemarketingActionResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateRemarketingActionResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateRemarketingActionResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateRemarketingActionResult;

                        /**
                         * Creates a plain object from a MutateRemarketingActionResult message. Also converts values to other types if specified.
                         * @param m MutateRemarketingActionResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateRemarketingActionResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateRemarketingActionResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetSharedCriterion.
                         * @param request GetSharedCriterionRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and SharedCriterion
                         */
                        public getSharedCriterion(request: google.ads.googleads.v8.services.IGetSharedCriterionRequest, callback: google.ads.googleads.v8.services.SharedCriterionService.GetSharedCriterionCallback): void;

                        /**
                         * Calls GetSharedCriterion.
                         * @param request GetSharedCriterionRequest message or plain object
                         * @returns Promise
                         */
                        public getSharedCriterion(request: google.ads.googleads.v8.services.IGetSharedCriterionRequest): Promise<google.ads.googleads.v8.resources.SharedCriterion>;

                        /**
                         * 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.v8.services.IMutateSharedCriteriaRequest, callback: google.ads.googleads.v8.services.SharedCriterionService.MutateSharedCriteriaCallback): void;

                        /**
                         * Calls MutateSharedCriteria.
                         * @param request MutateSharedCriteriaRequest message or plain object
                         * @returns Promise
                         */
                        public mutateSharedCriteria(request: google.ads.googleads.v8.services.IMutateSharedCriteriaRequest): Promise<google.ads.googleads.v8.services.MutateSharedCriteriaResponse>;
                    }

                    namespace SharedCriterionService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.SharedCriterionService#getSharedCriterion}.
                         * @param error Error, if any
                         * @param [response] SharedCriterion
                         */
                        type GetSharedCriterionCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.SharedCriterion) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.SharedCriterionService#mutateSharedCriteria}.
                         * @param error Error, if any
                         * @param [response] MutateSharedCriteriaResponse
                         */
                        type MutateSharedCriteriaCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateSharedCriteriaResponse) => void;
                    }

                    /** Properties of a GetSharedCriterionRequest. */
                    interface IGetSharedCriterionRequest {

                        /** GetSharedCriterionRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetSharedCriterionRequest. */
                    class GetSharedCriterionRequest implements IGetSharedCriterionRequest {

                        /**
                         * Constructs a new GetSharedCriterionRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetSharedCriterionRequest);

                        /** GetSharedCriterionRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetSharedCriterionRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetSharedCriterionRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetSharedCriterionRequest): google.ads.googleads.v8.services.GetSharedCriterionRequest;

                        /**
                         * Encodes the specified GetSharedCriterionRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetSharedCriterionRequest.verify|verify} messages.
                         * @param m GetSharedCriterionRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetSharedCriterionRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetSharedCriterionRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetSharedCriterionRequest.verify|verify} messages.
                         * @param message GetSharedCriterionRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetSharedCriterionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetSharedCriterionRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetSharedCriterionRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetSharedCriterionRequest;

                        /**
                         * Decodes a GetSharedCriterionRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetSharedCriterionRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetSharedCriterionRequest;

                        /**
                         * Verifies a GetSharedCriterionRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetSharedCriterionRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetSharedCriterionRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetSharedCriterionRequest;

                        /**
                         * Creates a plain object from a GetSharedCriterionRequest message. Also converts values to other types if specified.
                         * @param m GetSharedCriterionRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetSharedCriterionRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetSharedCriterionRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateSharedCriteriaRequest. */
                    interface IMutateSharedCriteriaRequest {

                        /** MutateSharedCriteriaRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateSharedCriteriaRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateSharedCriteriaRequest. */
                    class MutateSharedCriteriaRequest implements IMutateSharedCriteriaRequest {

                        /**
                         * Constructs a new MutateSharedCriteriaRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateSharedCriteriaRequest);

                        /** MutateSharedCriteriaRequest customer_id. */
                        public customer_id: string;

                        /** MutateSharedCriteriaRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateSharedCriteriaRequest): google.ads.googleads.v8.services.MutateSharedCriteriaRequest;

                        /**
                         * Encodes the specified MutateSharedCriteriaRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateSharedCriteriaRequest.verify|verify} messages.
                         * @param m MutateSharedCriteriaRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateSharedCriteriaRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateSharedCriteriaRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateSharedCriteriaRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateSharedCriteriaRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateSharedCriteriaRequest;

                        /**
                         * Verifies a MutateSharedCriteriaRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateSharedCriteriaRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateSharedCriteriaRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateSharedCriteriaRequest;

                        /**
                         * Creates a plain object from a MutateSharedCriteriaRequest message. Also converts values to other types if specified.
                         * @param m MutateSharedCriteriaRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateSharedCriteriaRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateSharedCriteriaRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a SharedCriterionOperation. */
                    interface ISharedCriterionOperation {

                        /** SharedCriterionOperation create */
                        create?: (google.ads.googleads.v8.resources.ISharedCriterion|null);

                        /** SharedCriterionOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a SharedCriterionOperation. */
                    class SharedCriterionOperation implements ISharedCriterionOperation {

                        /**
                         * Constructs a new SharedCriterionOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ISharedCriterionOperation);

                        /** SharedCriterionOperation create. */
                        public create?: (google.ads.googleads.v8.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.v8.services.ISharedCriterionOperation): google.ads.googleads.v8.services.SharedCriterionOperation;

                        /**
                         * Encodes the specified SharedCriterionOperation message. Does not implicitly {@link google.ads.googleads.v8.services.SharedCriterionOperation.verify|verify} messages.
                         * @param m SharedCriterionOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ISharedCriterionOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SharedCriterionOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ISharedCriterionOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SharedCriterionOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.SharedCriterionOperation;

                        /**
                         * Verifies a SharedCriterionOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SharedCriterionOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SharedCriterionOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.SharedCriterionOperation;

                        /**
                         * Creates a plain object from a SharedCriterionOperation message. Also converts values to other types if specified.
                         * @param m SharedCriterionOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.SharedCriterionOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SharedCriterionOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateSharedCriteriaResponse. */
                    interface IMutateSharedCriteriaResponse {

                        /** MutateSharedCriteriaResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateSharedCriteriaResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateSharedCriterionResult[]|null);
                    }

                    /** Represents a MutateSharedCriteriaResponse. */
                    class MutateSharedCriteriaResponse implements IMutateSharedCriteriaResponse {

                        /**
                         * Constructs a new MutateSharedCriteriaResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateSharedCriteriaResponse);

                        /** MutateSharedCriteriaResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateSharedCriteriaResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateSharedCriteriaResponse): google.ads.googleads.v8.services.MutateSharedCriteriaResponse;

                        /**
                         * Encodes the specified MutateSharedCriteriaResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateSharedCriteriaResponse.verify|verify} messages.
                         * @param m MutateSharedCriteriaResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateSharedCriteriaResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateSharedCriteriaResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateSharedCriteriaResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateSharedCriteriaResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateSharedCriteriaResponse;

                        /**
                         * Verifies a MutateSharedCriteriaResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateSharedCriteriaResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateSharedCriteriaResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateSharedCriteriaResponse;

                        /**
                         * Creates a plain object from a MutateSharedCriteriaResponse message. Also converts values to other types if specified.
                         * @param m MutateSharedCriteriaResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateSharedCriteriaResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateSharedCriteriaResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateSharedCriterionResult. */
                    interface IMutateSharedCriterionResult {

                        /** MutateSharedCriterionResult resource_name */
                        resource_name?: (string|null);

                        /** MutateSharedCriterionResult shared_criterion */
                        shared_criterion?: (google.ads.googleads.v8.resources.ISharedCriterion|null);
                    }

                    /** Represents a MutateSharedCriterionResult. */
                    class MutateSharedCriterionResult implements IMutateSharedCriterionResult {

                        /**
                         * Constructs a new MutateSharedCriterionResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateSharedCriterionResult);

                        /** MutateSharedCriterionResult resource_name. */
                        public resource_name: string;

                        /** MutateSharedCriterionResult shared_criterion. */
                        public shared_criterion?: (google.ads.googleads.v8.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.v8.services.IMutateSharedCriterionResult): google.ads.googleads.v8.services.MutateSharedCriterionResult;

                        /**
                         * Encodes the specified MutateSharedCriterionResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateSharedCriterionResult.verify|verify} messages.
                         * @param m MutateSharedCriterionResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateSharedCriterionResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateSharedCriterionResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateSharedCriterionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateSharedCriterionResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateSharedCriterionResult;

                        /**
                         * Verifies a MutateSharedCriterionResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateSharedCriterionResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateSharedCriterionResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateSharedCriterionResult;

                        /**
                         * Creates a plain object from a MutateSharedCriterionResult message. Also converts values to other types if specified.
                         * @param m MutateSharedCriterionResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateSharedCriterionResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateSharedCriterionResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetSharedSet.
                         * @param request GetSharedSetRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and SharedSet
                         */
                        public getSharedSet(request: google.ads.googleads.v8.services.IGetSharedSetRequest, callback: google.ads.googleads.v8.services.SharedSetService.GetSharedSetCallback): void;

                        /**
                         * Calls GetSharedSet.
                         * @param request GetSharedSetRequest message or plain object
                         * @returns Promise
                         */
                        public getSharedSet(request: google.ads.googleads.v8.services.IGetSharedSetRequest): Promise<google.ads.googleads.v8.resources.SharedSet>;

                        /**
                         * 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.v8.services.IMutateSharedSetsRequest, callback: google.ads.googleads.v8.services.SharedSetService.MutateSharedSetsCallback): void;

                        /**
                         * Calls MutateSharedSets.
                         * @param request MutateSharedSetsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateSharedSets(request: google.ads.googleads.v8.services.IMutateSharedSetsRequest): Promise<google.ads.googleads.v8.services.MutateSharedSetsResponse>;
                    }

                    namespace SharedSetService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.SharedSetService#getSharedSet}.
                         * @param error Error, if any
                         * @param [response] SharedSet
                         */
                        type GetSharedSetCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.SharedSet) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.SharedSetService#mutateSharedSets}.
                         * @param error Error, if any
                         * @param [response] MutateSharedSetsResponse
                         */
                        type MutateSharedSetsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateSharedSetsResponse) => void;
                    }

                    /** Properties of a GetSharedSetRequest. */
                    interface IGetSharedSetRequest {

                        /** GetSharedSetRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetSharedSetRequest. */
                    class GetSharedSetRequest implements IGetSharedSetRequest {

                        /**
                         * Constructs a new GetSharedSetRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetSharedSetRequest);

                        /** GetSharedSetRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetSharedSetRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetSharedSetRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetSharedSetRequest): google.ads.googleads.v8.services.GetSharedSetRequest;

                        /**
                         * Encodes the specified GetSharedSetRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetSharedSetRequest.verify|verify} messages.
                         * @param m GetSharedSetRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetSharedSetRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetSharedSetRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetSharedSetRequest.verify|verify} messages.
                         * @param message GetSharedSetRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetSharedSetRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetSharedSetRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetSharedSetRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetSharedSetRequest;

                        /**
                         * Decodes a GetSharedSetRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetSharedSetRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetSharedSetRequest;

                        /**
                         * Verifies a GetSharedSetRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetSharedSetRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetSharedSetRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetSharedSetRequest;

                        /**
                         * Creates a plain object from a GetSharedSetRequest message. Also converts values to other types if specified.
                         * @param m GetSharedSetRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetSharedSetRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetSharedSetRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateSharedSetsRequest. */
                    interface IMutateSharedSetsRequest {

                        /** MutateSharedSetsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateSharedSetsRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateSharedSetsRequest. */
                    class MutateSharedSetsRequest implements IMutateSharedSetsRequest {

                        /**
                         * Constructs a new MutateSharedSetsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateSharedSetsRequest);

                        /** MutateSharedSetsRequest customer_id. */
                        public customer_id: string;

                        /** MutateSharedSetsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateSharedSetsRequest): google.ads.googleads.v8.services.MutateSharedSetsRequest;

                        /**
                         * Encodes the specified MutateSharedSetsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateSharedSetsRequest.verify|verify} messages.
                         * @param m MutateSharedSetsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateSharedSetsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateSharedSetsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateSharedSetsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateSharedSetsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateSharedSetsRequest;

                        /**
                         * Verifies a MutateSharedSetsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateSharedSetsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateSharedSetsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateSharedSetsRequest;

                        /**
                         * Creates a plain object from a MutateSharedSetsRequest message. Also converts values to other types if specified.
                         * @param m MutateSharedSetsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateSharedSetsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateSharedSetsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a SharedSetOperation. */
                    interface ISharedSetOperation {

                        /** SharedSetOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** SharedSetOperation create */
                        create?: (google.ads.googleads.v8.resources.ISharedSet|null);

                        /** SharedSetOperation update */
                        update?: (google.ads.googleads.v8.resources.ISharedSet|null);

                        /** SharedSetOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a SharedSetOperation. */
                    class SharedSetOperation implements ISharedSetOperation {

                        /**
                         * Constructs a new SharedSetOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ISharedSetOperation);

                        /** SharedSetOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** SharedSetOperation create. */
                        public create?: (google.ads.googleads.v8.resources.ISharedSet|null);

                        /** SharedSetOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.ISharedSetOperation): google.ads.googleads.v8.services.SharedSetOperation;

                        /**
                         * Encodes the specified SharedSetOperation message. Does not implicitly {@link google.ads.googleads.v8.services.SharedSetOperation.verify|verify} messages.
                         * @param m SharedSetOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ISharedSetOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SharedSetOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ISharedSetOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SharedSetOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.SharedSetOperation;

                        /**
                         * Verifies a SharedSetOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SharedSetOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SharedSetOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.SharedSetOperation;

                        /**
                         * Creates a plain object from a SharedSetOperation message. Also converts values to other types if specified.
                         * @param m SharedSetOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.SharedSetOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SharedSetOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateSharedSetsResponse. */
                    interface IMutateSharedSetsResponse {

                        /** MutateSharedSetsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateSharedSetsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateSharedSetResult[]|null);
                    }

                    /** Represents a MutateSharedSetsResponse. */
                    class MutateSharedSetsResponse implements IMutateSharedSetsResponse {

                        /**
                         * Constructs a new MutateSharedSetsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateSharedSetsResponse);

                        /** MutateSharedSetsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateSharedSetsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateSharedSetsResponse): google.ads.googleads.v8.services.MutateSharedSetsResponse;

                        /**
                         * Encodes the specified MutateSharedSetsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateSharedSetsResponse.verify|verify} messages.
                         * @param m MutateSharedSetsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateSharedSetsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateSharedSetsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateSharedSetsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateSharedSetsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateSharedSetsResponse;

                        /**
                         * Verifies a MutateSharedSetsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateSharedSetsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateSharedSetsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateSharedSetsResponse;

                        /**
                         * Creates a plain object from a MutateSharedSetsResponse message. Also converts values to other types if specified.
                         * @param m MutateSharedSetsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateSharedSetsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateSharedSetsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateSharedSetResult. */
                    interface IMutateSharedSetResult {

                        /** MutateSharedSetResult resource_name */
                        resource_name?: (string|null);

                        /** MutateSharedSetResult shared_set */
                        shared_set?: (google.ads.googleads.v8.resources.ISharedSet|null);
                    }

                    /** Represents a MutateSharedSetResult. */
                    class MutateSharedSetResult implements IMutateSharedSetResult {

                        /**
                         * Constructs a new MutateSharedSetResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateSharedSetResult);

                        /** MutateSharedSetResult resource_name. */
                        public resource_name: string;

                        /** MutateSharedSetResult shared_set. */
                        public shared_set?: (google.ads.googleads.v8.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.v8.services.IMutateSharedSetResult): google.ads.googleads.v8.services.MutateSharedSetResult;

                        /**
                         * Encodes the specified MutateSharedSetResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateSharedSetResult.verify|verify} messages.
                         * @param m MutateSharedSetResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateSharedSetResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateSharedSetResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateSharedSetResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateSharedSetResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateSharedSetResult;

                        /**
                         * Verifies a MutateSharedSetResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateSharedSetResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateSharedSetResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateSharedSetResult;

                        /**
                         * Creates a plain object from a MutateSharedSetResult message. Also converts values to other types if specified.
                         * @param m MutateSharedSetResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateSharedSetResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateSharedSetResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetSmartCampaignSetting.
                         * @param request GetSmartCampaignSettingRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and SmartCampaignSetting
                         */
                        public getSmartCampaignSetting(request: google.ads.googleads.v8.services.IGetSmartCampaignSettingRequest, callback: google.ads.googleads.v8.services.SmartCampaignSettingService.GetSmartCampaignSettingCallback): void;

                        /**
                         * Calls GetSmartCampaignSetting.
                         * @param request GetSmartCampaignSettingRequest message or plain object
                         * @returns Promise
                         */
                        public getSmartCampaignSetting(request: google.ads.googleads.v8.services.IGetSmartCampaignSettingRequest): Promise<google.ads.googleads.v8.resources.SmartCampaignSetting>;

                        /**
                         * 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.v8.services.IMutateSmartCampaignSettingsRequest, callback: google.ads.googleads.v8.services.SmartCampaignSettingService.MutateSmartCampaignSettingsCallback): void;

                        /**
                         * Calls MutateSmartCampaignSettings.
                         * @param request MutateSmartCampaignSettingsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateSmartCampaignSettings(request: google.ads.googleads.v8.services.IMutateSmartCampaignSettingsRequest): Promise<google.ads.googleads.v8.services.MutateSmartCampaignSettingsResponse>;
                    }

                    namespace SmartCampaignSettingService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.SmartCampaignSettingService#getSmartCampaignSetting}.
                         * @param error Error, if any
                         * @param [response] SmartCampaignSetting
                         */
                        type GetSmartCampaignSettingCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.SmartCampaignSetting) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.SmartCampaignSettingService#mutateSmartCampaignSettings}.
                         * @param error Error, if any
                         * @param [response] MutateSmartCampaignSettingsResponse
                         */
                        type MutateSmartCampaignSettingsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateSmartCampaignSettingsResponse) => void;
                    }

                    /** Properties of a GetSmartCampaignSettingRequest. */
                    interface IGetSmartCampaignSettingRequest {

                        /** GetSmartCampaignSettingRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetSmartCampaignSettingRequest. */
                    class GetSmartCampaignSettingRequest implements IGetSmartCampaignSettingRequest {

                        /**
                         * Constructs a new GetSmartCampaignSettingRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetSmartCampaignSettingRequest);

                        /** GetSmartCampaignSettingRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetSmartCampaignSettingRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetSmartCampaignSettingRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetSmartCampaignSettingRequest): google.ads.googleads.v8.services.GetSmartCampaignSettingRequest;

                        /**
                         * Encodes the specified GetSmartCampaignSettingRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetSmartCampaignSettingRequest.verify|verify} messages.
                         * @param m GetSmartCampaignSettingRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetSmartCampaignSettingRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetSmartCampaignSettingRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetSmartCampaignSettingRequest.verify|verify} messages.
                         * @param message GetSmartCampaignSettingRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetSmartCampaignSettingRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetSmartCampaignSettingRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetSmartCampaignSettingRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetSmartCampaignSettingRequest;

                        /**
                         * Decodes a GetSmartCampaignSettingRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetSmartCampaignSettingRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetSmartCampaignSettingRequest;

                        /**
                         * Verifies a GetSmartCampaignSettingRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetSmartCampaignSettingRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetSmartCampaignSettingRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetSmartCampaignSettingRequest;

                        /**
                         * Creates a plain object from a GetSmartCampaignSettingRequest message. Also converts values to other types if specified.
                         * @param m GetSmartCampaignSettingRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetSmartCampaignSettingRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetSmartCampaignSettingRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateSmartCampaignSettingsRequest. */
                    interface IMutateSmartCampaignSettingsRequest {

                        /** MutateSmartCampaignSettingsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateSmartCampaignSettingsRequest operations */
                        operations?: (google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.enums.ResponseContentTypeEnum.ResponseContentType|null);
                    }

                    /** Represents a MutateSmartCampaignSettingsRequest. */
                    class MutateSmartCampaignSettingsRequest implements IMutateSmartCampaignSettingsRequest {

                        /**
                         * Constructs a new MutateSmartCampaignSettingsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateSmartCampaignSettingsRequest);

                        /** MutateSmartCampaignSettingsRequest customer_id. */
                        public customer_id: string;

                        /** MutateSmartCampaignSettingsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.enums.ResponseContentTypeEnum.ResponseContentType|keyof typeof google.ads.googleads.v8.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.v8.services.IMutateSmartCampaignSettingsRequest): google.ads.googleads.v8.services.MutateSmartCampaignSettingsRequest;

                        /**
                         * Encodes the specified MutateSmartCampaignSettingsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateSmartCampaignSettingsRequest.verify|verify} messages.
                         * @param m MutateSmartCampaignSettingsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateSmartCampaignSettingsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateSmartCampaignSettingsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateSmartCampaignSettingsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateSmartCampaignSettingsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateSmartCampaignSettingsRequest;

                        /**
                         * Verifies a MutateSmartCampaignSettingsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateSmartCampaignSettingsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateSmartCampaignSettingsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateSmartCampaignSettingsRequest;

                        /**
                         * Creates a plain object from a MutateSmartCampaignSettingsRequest message. Also converts values to other types if specified.
                         * @param m MutateSmartCampaignSettingsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateSmartCampaignSettingsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateSmartCampaignSettingsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a SmartCampaignSettingOperation. */
                    interface ISmartCampaignSettingOperation {

                        /** SmartCampaignSettingOperation update */
                        update?: (google.ads.googleads.v8.resources.ISmartCampaignSetting|null);

                        /** SmartCampaignSettingOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);
                    }

                    /** Represents a SmartCampaignSettingOperation. */
                    class SmartCampaignSettingOperation implements ISmartCampaignSettingOperation {

                        /**
                         * Constructs a new SmartCampaignSettingOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ISmartCampaignSettingOperation);

                        /** SmartCampaignSettingOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.ISmartCampaignSettingOperation): google.ads.googleads.v8.services.SmartCampaignSettingOperation;

                        /**
                         * Encodes the specified SmartCampaignSettingOperation message. Does not implicitly {@link google.ads.googleads.v8.services.SmartCampaignSettingOperation.verify|verify} messages.
                         * @param m SmartCampaignSettingOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ISmartCampaignSettingOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SmartCampaignSettingOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ISmartCampaignSettingOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SmartCampaignSettingOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.SmartCampaignSettingOperation;

                        /**
                         * Verifies a SmartCampaignSettingOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SmartCampaignSettingOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SmartCampaignSettingOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.SmartCampaignSettingOperation;

                        /**
                         * Creates a plain object from a SmartCampaignSettingOperation message. Also converts values to other types if specified.
                         * @param m SmartCampaignSettingOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.SmartCampaignSettingOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SmartCampaignSettingOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateSmartCampaignSettingsResponse. */
                    interface IMutateSmartCampaignSettingsResponse {

                        /** MutateSmartCampaignSettingsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateSmartCampaignSettingsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateSmartCampaignSettingResult[]|null);
                    }

                    /** Represents a MutateSmartCampaignSettingsResponse. */
                    class MutateSmartCampaignSettingsResponse implements IMutateSmartCampaignSettingsResponse {

                        /**
                         * Constructs a new MutateSmartCampaignSettingsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateSmartCampaignSettingsResponse);

                        /** MutateSmartCampaignSettingsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateSmartCampaignSettingsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateSmartCampaignSettingsResponse): google.ads.googleads.v8.services.MutateSmartCampaignSettingsResponse;

                        /**
                         * Encodes the specified MutateSmartCampaignSettingsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateSmartCampaignSettingsResponse.verify|verify} messages.
                         * @param m MutateSmartCampaignSettingsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateSmartCampaignSettingsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateSmartCampaignSettingsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateSmartCampaignSettingsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateSmartCampaignSettingsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateSmartCampaignSettingsResponse;

                        /**
                         * Verifies a MutateSmartCampaignSettingsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateSmartCampaignSettingsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateSmartCampaignSettingsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateSmartCampaignSettingsResponse;

                        /**
                         * Creates a plain object from a MutateSmartCampaignSettingsResponse message. Also converts values to other types if specified.
                         * @param m MutateSmartCampaignSettingsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateSmartCampaignSettingsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateSmartCampaignSettingsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateSmartCampaignSettingResult. */
                    interface IMutateSmartCampaignSettingResult {

                        /** MutateSmartCampaignSettingResult resource_name */
                        resource_name?: (string|null);

                        /** MutateSmartCampaignSettingResult smart_campaign_setting */
                        smart_campaign_setting?: (google.ads.googleads.v8.resources.ISmartCampaignSetting|null);
                    }

                    /** Represents a MutateSmartCampaignSettingResult. */
                    class MutateSmartCampaignSettingResult implements IMutateSmartCampaignSettingResult {

                        /**
                         * Constructs a new MutateSmartCampaignSettingResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateSmartCampaignSettingResult);

                        /** MutateSmartCampaignSettingResult resource_name. */
                        public resource_name: string;

                        /** MutateSmartCampaignSettingResult smart_campaign_setting. */
                        public smart_campaign_setting?: (google.ads.googleads.v8.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.v8.services.IMutateSmartCampaignSettingResult): google.ads.googleads.v8.services.MutateSmartCampaignSettingResult;

                        /**
                         * Encodes the specified MutateSmartCampaignSettingResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateSmartCampaignSettingResult.verify|verify} messages.
                         * @param m MutateSmartCampaignSettingResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateSmartCampaignSettingResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateSmartCampaignSettingResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateSmartCampaignSettingResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateSmartCampaignSettingResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateSmartCampaignSettingResult;

                        /**
                         * Verifies a MutateSmartCampaignSettingResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateSmartCampaignSettingResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateSmartCampaignSettingResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateSmartCampaignSettingResult;

                        /**
                         * Creates a plain object from a MutateSmartCampaignSettingResult message. Also converts values to other types if specified.
                         * @param m MutateSmartCampaignSettingResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateSmartCampaignSettingResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateSmartCampaignSettingResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetUserList.
                         * @param request GetUserListRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and UserList
                         */
                        public getUserList(request: google.ads.googleads.v8.services.IGetUserListRequest, callback: google.ads.googleads.v8.services.UserListService.GetUserListCallback): void;

                        /**
                         * Calls GetUserList.
                         * @param request GetUserListRequest message or plain object
                         * @returns Promise
                         */
                        public getUserList(request: google.ads.googleads.v8.services.IGetUserListRequest): Promise<google.ads.googleads.v8.resources.UserList>;

                        /**
                         * 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.v8.services.IMutateUserListsRequest, callback: google.ads.googleads.v8.services.UserListService.MutateUserListsCallback): void;

                        /**
                         * Calls MutateUserLists.
                         * @param request MutateUserListsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateUserLists(request: google.ads.googleads.v8.services.IMutateUserListsRequest): Promise<google.ads.googleads.v8.services.MutateUserListsResponse>;
                    }

                    namespace UserListService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.UserListService#getUserList}.
                         * @param error Error, if any
                         * @param [response] UserList
                         */
                        type GetUserListCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.UserList) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.UserListService#mutateUserLists}.
                         * @param error Error, if any
                         * @param [response] MutateUserListsResponse
                         */
                        type MutateUserListsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateUserListsResponse) => void;
                    }

                    /** Properties of a GetUserListRequest. */
                    interface IGetUserListRequest {

                        /** GetUserListRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetUserListRequest. */
                    class GetUserListRequest implements IGetUserListRequest {

                        /**
                         * Constructs a new GetUserListRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetUserListRequest);

                        /** GetUserListRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetUserListRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetUserListRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetUserListRequest): google.ads.googleads.v8.services.GetUserListRequest;

                        /**
                         * Encodes the specified GetUserListRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetUserListRequest.verify|verify} messages.
                         * @param m GetUserListRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetUserListRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetUserListRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetUserListRequest.verify|verify} messages.
                         * @param message GetUserListRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetUserListRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetUserListRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetUserListRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetUserListRequest;

                        /**
                         * Decodes a GetUserListRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetUserListRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetUserListRequest;

                        /**
                         * Verifies a GetUserListRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetUserListRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetUserListRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetUserListRequest;

                        /**
                         * Creates a plain object from a GetUserListRequest message. Also converts values to other types if specified.
                         * @param m GetUserListRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetUserListRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetUserListRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateUserListsRequest. */
                    interface IMutateUserListsRequest {

                        /** MutateUserListsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateUserListsRequest operations */
                        operations?: (google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateUserListsRequest);

                        /** MutateUserListsRequest customer_id. */
                        public customer_id: string;

                        /** MutateUserListsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.services.IMutateUserListsRequest): google.ads.googleads.v8.services.MutateUserListsRequest;

                        /**
                         * Encodes the specified MutateUserListsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateUserListsRequest.verify|verify} messages.
                         * @param m MutateUserListsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateUserListsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateUserListsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateUserListsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateUserListsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateUserListsRequest;

                        /**
                         * Verifies a MutateUserListsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateUserListsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateUserListsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateUserListsRequest;

                        /**
                         * Creates a plain object from a MutateUserListsRequest message. Also converts values to other types if specified.
                         * @param m MutateUserListsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateUserListsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateUserListsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a UserListOperation. */
                    interface IUserListOperation {

                        /** UserListOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** UserListOperation create */
                        create?: (google.ads.googleads.v8.resources.IUserList|null);

                        /** UserListOperation update */
                        update?: (google.ads.googleads.v8.resources.IUserList|null);

                        /** UserListOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a UserListOperation. */
                    class UserListOperation implements IUserListOperation {

                        /**
                         * Constructs a new UserListOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IUserListOperation);

                        /** UserListOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** UserListOperation create. */
                        public create?: (google.ads.googleads.v8.resources.IUserList|null);

                        /** UserListOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.IUserListOperation): google.ads.googleads.v8.services.UserListOperation;

                        /**
                         * Encodes the specified UserListOperation message. Does not implicitly {@link google.ads.googleads.v8.services.UserListOperation.verify|verify} messages.
                         * @param m UserListOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IUserListOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserListOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IUserListOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserListOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.UserListOperation;

                        /**
                         * Verifies a UserListOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserListOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserListOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.UserListOperation;

                        /**
                         * Creates a plain object from a UserListOperation message. Also converts values to other types if specified.
                         * @param m UserListOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.UserListOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserListOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateUserListsResponse. */
                    interface IMutateUserListsResponse {

                        /** MutateUserListsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateUserListsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateUserListResult[]|null);
                    }

                    /** Represents a MutateUserListsResponse. */
                    class MutateUserListsResponse implements IMutateUserListsResponse {

                        /**
                         * Constructs a new MutateUserListsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateUserListsResponse);

                        /** MutateUserListsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** MutateUserListsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateUserListsResponse): google.ads.googleads.v8.services.MutateUserListsResponse;

                        /**
                         * Encodes the specified MutateUserListsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateUserListsResponse.verify|verify} messages.
                         * @param m MutateUserListsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateUserListsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateUserListsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateUserListsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateUserListsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateUserListsResponse;

                        /**
                         * Verifies a MutateUserListsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateUserListsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateUserListsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateUserListsResponse;

                        /**
                         * Creates a plain object from a MutateUserListsResponse message. Also converts values to other types if specified.
                         * @param m MutateUserListsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateUserListsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateUserListsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IMutateUserListResult): google.ads.googleads.v8.services.MutateUserListResult;

                        /**
                         * Encodes the specified MutateUserListResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateUserListResult.verify|verify} messages.
                         * @param m MutateUserListResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateUserListResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateUserListResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateUserListResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateUserListResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateUserListResult;

                        /**
                         * Verifies a MutateUserListResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateUserListResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateUserListResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateUserListResult;

                        /**
                         * Creates a plain object from a MutateUserListResult message. Also converts values to other types if specified.
                         * @param m MutateUserListResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateUserListResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateUserListResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a BiddingStrategySimulationService */
                    class BiddingStrategySimulationService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new BiddingStrategySimulationService 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 BiddingStrategySimulationService 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): BiddingStrategySimulationService;

                        /**
                         * Calls GetBiddingStrategySimulation.
                         * @param request GetBiddingStrategySimulationRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and BiddingStrategySimulation
                         */
                        public getBiddingStrategySimulation(request: google.ads.googleads.v8.services.IGetBiddingStrategySimulationRequest, callback: google.ads.googleads.v8.services.BiddingStrategySimulationService.GetBiddingStrategySimulationCallback): void;

                        /**
                         * Calls GetBiddingStrategySimulation.
                         * @param request GetBiddingStrategySimulationRequest message or plain object
                         * @returns Promise
                         */
                        public getBiddingStrategySimulation(request: google.ads.googleads.v8.services.IGetBiddingStrategySimulationRequest): Promise<google.ads.googleads.v8.resources.BiddingStrategySimulation>;
                    }

                    namespace BiddingStrategySimulationService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.BiddingStrategySimulationService#getBiddingStrategySimulation}.
                         * @param error Error, if any
                         * @param [response] BiddingStrategySimulation
                         */
                        type GetBiddingStrategySimulationCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.BiddingStrategySimulation) => void;
                    }

                    /** Properties of a GetBiddingStrategySimulationRequest. */
                    interface IGetBiddingStrategySimulationRequest {

                        /** GetBiddingStrategySimulationRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetBiddingStrategySimulationRequest. */
                    class GetBiddingStrategySimulationRequest implements IGetBiddingStrategySimulationRequest {

                        /**
                         * Constructs a new GetBiddingStrategySimulationRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetBiddingStrategySimulationRequest);

                        /** GetBiddingStrategySimulationRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetBiddingStrategySimulationRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetBiddingStrategySimulationRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetBiddingStrategySimulationRequest): google.ads.googleads.v8.services.GetBiddingStrategySimulationRequest;

                        /**
                         * Encodes the specified GetBiddingStrategySimulationRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetBiddingStrategySimulationRequest.verify|verify} messages.
                         * @param m GetBiddingStrategySimulationRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetBiddingStrategySimulationRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetBiddingStrategySimulationRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetBiddingStrategySimulationRequest.verify|verify} messages.
                         * @param message GetBiddingStrategySimulationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetBiddingStrategySimulationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetBiddingStrategySimulationRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetBiddingStrategySimulationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetBiddingStrategySimulationRequest;

                        /**
                         * Decodes a GetBiddingStrategySimulationRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetBiddingStrategySimulationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetBiddingStrategySimulationRequest;

                        /**
                         * Verifies a GetBiddingStrategySimulationRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetBiddingStrategySimulationRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetBiddingStrategySimulationRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetBiddingStrategySimulationRequest;

                        /**
                         * Creates a plain object from a GetBiddingStrategySimulationRequest message. Also converts values to other types if specified.
                         * @param m GetBiddingStrategySimulationRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetBiddingStrategySimulationRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetBiddingStrategySimulationRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetBillingSetup.
                         * @param request GetBillingSetupRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and BillingSetup
                         */
                        public getBillingSetup(request: google.ads.googleads.v8.services.IGetBillingSetupRequest, callback: google.ads.googleads.v8.services.BillingSetupService.GetBillingSetupCallback): void;

                        /**
                         * Calls GetBillingSetup.
                         * @param request GetBillingSetupRequest message or plain object
                         * @returns Promise
                         */
                        public getBillingSetup(request: google.ads.googleads.v8.services.IGetBillingSetupRequest): Promise<google.ads.googleads.v8.resources.BillingSetup>;

                        /**
                         * 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.v8.services.IMutateBillingSetupRequest, callback: google.ads.googleads.v8.services.BillingSetupService.MutateBillingSetupCallback): void;

                        /**
                         * Calls MutateBillingSetup.
                         * @param request MutateBillingSetupRequest message or plain object
                         * @returns Promise
                         */
                        public mutateBillingSetup(request: google.ads.googleads.v8.services.IMutateBillingSetupRequest): Promise<google.ads.googleads.v8.services.MutateBillingSetupResponse>;
                    }

                    namespace BillingSetupService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.BillingSetupService#getBillingSetup}.
                         * @param error Error, if any
                         * @param [response] BillingSetup
                         */
                        type GetBillingSetupCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.BillingSetup) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.BillingSetupService#mutateBillingSetup}.
                         * @param error Error, if any
                         * @param [response] MutateBillingSetupResponse
                         */
                        type MutateBillingSetupCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateBillingSetupResponse) => void;
                    }

                    /** Properties of a GetBillingSetupRequest. */
                    interface IGetBillingSetupRequest {

                        /** GetBillingSetupRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetBillingSetupRequest. */
                    class GetBillingSetupRequest implements IGetBillingSetupRequest {

                        /**
                         * Constructs a new GetBillingSetupRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetBillingSetupRequest);

                        /** GetBillingSetupRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetBillingSetupRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetBillingSetupRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetBillingSetupRequest): google.ads.googleads.v8.services.GetBillingSetupRequest;

                        /**
                         * Encodes the specified GetBillingSetupRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetBillingSetupRequest.verify|verify} messages.
                         * @param m GetBillingSetupRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetBillingSetupRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetBillingSetupRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetBillingSetupRequest.verify|verify} messages.
                         * @param message GetBillingSetupRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetBillingSetupRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetBillingSetupRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetBillingSetupRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetBillingSetupRequest;

                        /**
                         * Decodes a GetBillingSetupRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetBillingSetupRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetBillingSetupRequest;

                        /**
                         * Verifies a GetBillingSetupRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetBillingSetupRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetBillingSetupRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetBillingSetupRequest;

                        /**
                         * Creates a plain object from a GetBillingSetupRequest message. Also converts values to other types if specified.
                         * @param m GetBillingSetupRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetBillingSetupRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetBillingSetupRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateBillingSetupRequest. */
                    interface IMutateBillingSetupRequest {

                        /** MutateBillingSetupRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateBillingSetupRequest operation */
                        operation?: (google.ads.googleads.v8.services.IBillingSetupOperation|null);
                    }

                    /** Represents a MutateBillingSetupRequest. */
                    class MutateBillingSetupRequest implements IMutateBillingSetupRequest {

                        /**
                         * Constructs a new MutateBillingSetupRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateBillingSetupRequest);

                        /** MutateBillingSetupRequest customer_id. */
                        public customer_id: string;

                        /** MutateBillingSetupRequest operation. */
                        public operation?: (google.ads.googleads.v8.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.v8.services.IMutateBillingSetupRequest): google.ads.googleads.v8.services.MutateBillingSetupRequest;

                        /**
                         * Encodes the specified MutateBillingSetupRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateBillingSetupRequest.verify|verify} messages.
                         * @param m MutateBillingSetupRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateBillingSetupRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBillingSetupRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateBillingSetupRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBillingSetupRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateBillingSetupRequest;

                        /**
                         * Verifies a MutateBillingSetupRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBillingSetupRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateBillingSetupRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateBillingSetupRequest;

                        /**
                         * Creates a plain object from a MutateBillingSetupRequest message. Also converts values to other types if specified.
                         * @param m MutateBillingSetupRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateBillingSetupRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBillingSetupRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a BillingSetupOperation. */
                    interface IBillingSetupOperation {

                        /** BillingSetupOperation create */
                        create?: (google.ads.googleads.v8.resources.IBillingSetup|null);

                        /** BillingSetupOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a BillingSetupOperation. */
                    class BillingSetupOperation implements IBillingSetupOperation {

                        /**
                         * Constructs a new BillingSetupOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IBillingSetupOperation);

                        /** BillingSetupOperation create. */
                        public create?: (google.ads.googleads.v8.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.v8.services.IBillingSetupOperation): google.ads.googleads.v8.services.BillingSetupOperation;

                        /**
                         * Encodes the specified BillingSetupOperation message. Does not implicitly {@link google.ads.googleads.v8.services.BillingSetupOperation.verify|verify} messages.
                         * @param m BillingSetupOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IBillingSetupOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BillingSetupOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IBillingSetupOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BillingSetupOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.BillingSetupOperation;

                        /**
                         * Verifies a BillingSetupOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a BillingSetupOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns BillingSetupOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.BillingSetupOperation;

                        /**
                         * Creates a plain object from a BillingSetupOperation message. Also converts values to other types if specified.
                         * @param m BillingSetupOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.BillingSetupOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BillingSetupOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateBillingSetupResponse. */
                    interface IMutateBillingSetupResponse {

                        /** MutateBillingSetupResponse result */
                        result?: (google.ads.googleads.v8.services.IMutateBillingSetupResult|null);
                    }

                    /** Represents a MutateBillingSetupResponse. */
                    class MutateBillingSetupResponse implements IMutateBillingSetupResponse {

                        /**
                         * Constructs a new MutateBillingSetupResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateBillingSetupResponse);

                        /** MutateBillingSetupResponse result. */
                        public result?: (google.ads.googleads.v8.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.v8.services.IMutateBillingSetupResponse): google.ads.googleads.v8.services.MutateBillingSetupResponse;

                        /**
                         * Encodes the specified MutateBillingSetupResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateBillingSetupResponse.verify|verify} messages.
                         * @param m MutateBillingSetupResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateBillingSetupResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBillingSetupResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateBillingSetupResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBillingSetupResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateBillingSetupResponse;

                        /**
                         * Verifies a MutateBillingSetupResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBillingSetupResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateBillingSetupResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateBillingSetupResponse;

                        /**
                         * Creates a plain object from a MutateBillingSetupResponse message. Also converts values to other types if specified.
                         * @param m MutateBillingSetupResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateBillingSetupResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBillingSetupResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IMutateBillingSetupResult): google.ads.googleads.v8.services.MutateBillingSetupResult;

                        /**
                         * Encodes the specified MutateBillingSetupResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateBillingSetupResult.verify|verify} messages.
                         * @param m MutateBillingSetupResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateBillingSetupResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateBillingSetupResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateBillingSetupResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateBillingSetupResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateBillingSetupResult;

                        /**
                         * Verifies a MutateBillingSetupResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateBillingSetupResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateBillingSetupResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateBillingSetupResult;

                        /**
                         * Creates a plain object from a MutateBillingSetupResult message. Also converts values to other types if specified.
                         * @param m MutateBillingSetupResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateBillingSetupResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateBillingSetupResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a CampaignAudienceViewService */
                    class CampaignAudienceViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CampaignAudienceViewService 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 CampaignAudienceViewService 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): CampaignAudienceViewService;

                        /**
                         * Calls GetCampaignAudienceView.
                         * @param request GetCampaignAudienceViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CampaignAudienceView
                         */
                        public getCampaignAudienceView(request: google.ads.googleads.v8.services.IGetCampaignAudienceViewRequest, callback: google.ads.googleads.v8.services.CampaignAudienceViewService.GetCampaignAudienceViewCallback): void;

                        /**
                         * Calls GetCampaignAudienceView.
                         * @param request GetCampaignAudienceViewRequest message or plain object
                         * @returns Promise
                         */
                        public getCampaignAudienceView(request: google.ads.googleads.v8.services.IGetCampaignAudienceViewRequest): Promise<google.ads.googleads.v8.resources.CampaignAudienceView>;
                    }

                    namespace CampaignAudienceViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignAudienceViewService#getCampaignAudienceView}.
                         * @param error Error, if any
                         * @param [response] CampaignAudienceView
                         */
                        type GetCampaignAudienceViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CampaignAudienceView) => void;
                    }

                    /** Properties of a GetCampaignAudienceViewRequest. */
                    interface IGetCampaignAudienceViewRequest {

                        /** GetCampaignAudienceViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCampaignAudienceViewRequest. */
                    class GetCampaignAudienceViewRequest implements IGetCampaignAudienceViewRequest {

                        /**
                         * Constructs a new GetCampaignAudienceViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCampaignAudienceViewRequest);

                        /** GetCampaignAudienceViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCampaignAudienceViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCampaignAudienceViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCampaignAudienceViewRequest): google.ads.googleads.v8.services.GetCampaignAudienceViewRequest;

                        /**
                         * Encodes the specified GetCampaignAudienceViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignAudienceViewRequest.verify|verify} messages.
                         * @param m GetCampaignAudienceViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCampaignAudienceViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCampaignAudienceViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignAudienceViewRequest.verify|verify} messages.
                         * @param message GetCampaignAudienceViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCampaignAudienceViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCampaignAudienceViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCampaignAudienceViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCampaignAudienceViewRequest;

                        /**
                         * Decodes a GetCampaignAudienceViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCampaignAudienceViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCampaignAudienceViewRequest;

                        /**
                         * Verifies a GetCampaignAudienceViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCampaignAudienceViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCampaignAudienceViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCampaignAudienceViewRequest;

                        /**
                         * Creates a plain object from a GetCampaignAudienceViewRequest message. Also converts values to other types if specified.
                         * @param m GetCampaignAudienceViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCampaignAudienceViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCampaignAudienceViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a CampaignCriterionSimulationService */
                    class CampaignCriterionSimulationService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CampaignCriterionSimulationService 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 CampaignCriterionSimulationService 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): CampaignCriterionSimulationService;

                        /**
                         * Calls GetCampaignCriterionSimulation.
                         * @param request GetCampaignCriterionSimulationRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CampaignCriterionSimulation
                         */
                        public getCampaignCriterionSimulation(request: google.ads.googleads.v8.services.IGetCampaignCriterionSimulationRequest, callback: google.ads.googleads.v8.services.CampaignCriterionSimulationService.GetCampaignCriterionSimulationCallback): void;

                        /**
                         * Calls GetCampaignCriterionSimulation.
                         * @param request GetCampaignCriterionSimulationRequest message or plain object
                         * @returns Promise
                         */
                        public getCampaignCriterionSimulation(request: google.ads.googleads.v8.services.IGetCampaignCriterionSimulationRequest): Promise<google.ads.googleads.v8.resources.CampaignCriterionSimulation>;
                    }

                    namespace CampaignCriterionSimulationService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignCriterionSimulationService#getCampaignCriterionSimulation}.
                         * @param error Error, if any
                         * @param [response] CampaignCriterionSimulation
                         */
                        type GetCampaignCriterionSimulationCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CampaignCriterionSimulation) => void;
                    }

                    /** Properties of a GetCampaignCriterionSimulationRequest. */
                    interface IGetCampaignCriterionSimulationRequest {

                        /** GetCampaignCriterionSimulationRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCampaignCriterionSimulationRequest. */
                    class GetCampaignCriterionSimulationRequest implements IGetCampaignCriterionSimulationRequest {

                        /**
                         * Constructs a new GetCampaignCriterionSimulationRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCampaignCriterionSimulationRequest);

                        /** GetCampaignCriterionSimulationRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCampaignCriterionSimulationRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCampaignCriterionSimulationRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCampaignCriterionSimulationRequest): google.ads.googleads.v8.services.GetCampaignCriterionSimulationRequest;

                        /**
                         * Encodes the specified GetCampaignCriterionSimulationRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignCriterionSimulationRequest.verify|verify} messages.
                         * @param m GetCampaignCriterionSimulationRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCampaignCriterionSimulationRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCampaignCriterionSimulationRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignCriterionSimulationRequest.verify|verify} messages.
                         * @param message GetCampaignCriterionSimulationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCampaignCriterionSimulationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCampaignCriterionSimulationRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCampaignCriterionSimulationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCampaignCriterionSimulationRequest;

                        /**
                         * Decodes a GetCampaignCriterionSimulationRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCampaignCriterionSimulationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCampaignCriterionSimulationRequest;

                        /**
                         * Verifies a GetCampaignCriterionSimulationRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCampaignCriterionSimulationRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCampaignCriterionSimulationRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCampaignCriterionSimulationRequest;

                        /**
                         * Creates a plain object from a GetCampaignCriterionSimulationRequest message. Also converts values to other types if specified.
                         * @param m GetCampaignCriterionSimulationRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCampaignCriterionSimulationRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCampaignCriterionSimulationRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a CampaignSimulationService */
                    class CampaignSimulationService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CampaignSimulationService 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 CampaignSimulationService 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): CampaignSimulationService;

                        /**
                         * Calls GetCampaignSimulation.
                         * @param request GetCampaignSimulationRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CampaignSimulation
                         */
                        public getCampaignSimulation(request: google.ads.googleads.v8.services.IGetCampaignSimulationRequest, callback: google.ads.googleads.v8.services.CampaignSimulationService.GetCampaignSimulationCallback): void;

                        /**
                         * Calls GetCampaignSimulation.
                         * @param request GetCampaignSimulationRequest message or plain object
                         * @returns Promise
                         */
                        public getCampaignSimulation(request: google.ads.googleads.v8.services.IGetCampaignSimulationRequest): Promise<google.ads.googleads.v8.resources.CampaignSimulation>;
                    }

                    namespace CampaignSimulationService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CampaignSimulationService#getCampaignSimulation}.
                         * @param error Error, if any
                         * @param [response] CampaignSimulation
                         */
                        type GetCampaignSimulationCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CampaignSimulation) => void;
                    }

                    /** Properties of a GetCampaignSimulationRequest. */
                    interface IGetCampaignSimulationRequest {

                        /** GetCampaignSimulationRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCampaignSimulationRequest. */
                    class GetCampaignSimulationRequest implements IGetCampaignSimulationRequest {

                        /**
                         * Constructs a new GetCampaignSimulationRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCampaignSimulationRequest);

                        /** GetCampaignSimulationRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCampaignSimulationRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCampaignSimulationRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCampaignSimulationRequest): google.ads.googleads.v8.services.GetCampaignSimulationRequest;

                        /**
                         * Encodes the specified GetCampaignSimulationRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignSimulationRequest.verify|verify} messages.
                         * @param m GetCampaignSimulationRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCampaignSimulationRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCampaignSimulationRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCampaignSimulationRequest.verify|verify} messages.
                         * @param message GetCampaignSimulationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCampaignSimulationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCampaignSimulationRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCampaignSimulationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCampaignSimulationRequest;

                        /**
                         * Decodes a GetCampaignSimulationRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCampaignSimulationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCampaignSimulationRequest;

                        /**
                         * Verifies a GetCampaignSimulationRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCampaignSimulationRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCampaignSimulationRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCampaignSimulationRequest;

                        /**
                         * Creates a plain object from a GetCampaignSimulationRequest message. Also converts values to other types if specified.
                         * @param m GetCampaignSimulationRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCampaignSimulationRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCampaignSimulationRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a CarrierConstantService */
                    class CarrierConstantService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CarrierConstantService 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 CarrierConstantService 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): CarrierConstantService;

                        /**
                         * Calls GetCarrierConstant.
                         * @param request GetCarrierConstantRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CarrierConstant
                         */
                        public getCarrierConstant(request: google.ads.googleads.v8.services.IGetCarrierConstantRequest, callback: google.ads.googleads.v8.services.CarrierConstantService.GetCarrierConstantCallback): void;

                        /**
                         * Calls GetCarrierConstant.
                         * @param request GetCarrierConstantRequest message or plain object
                         * @returns Promise
                         */
                        public getCarrierConstant(request: google.ads.googleads.v8.services.IGetCarrierConstantRequest): Promise<google.ads.googleads.v8.resources.CarrierConstant>;
                    }

                    namespace CarrierConstantService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CarrierConstantService#getCarrierConstant}.
                         * @param error Error, if any
                         * @param [response] CarrierConstant
                         */
                        type GetCarrierConstantCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CarrierConstant) => void;
                    }

                    /** Properties of a GetCarrierConstantRequest. */
                    interface IGetCarrierConstantRequest {

                        /** GetCarrierConstantRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCarrierConstantRequest. */
                    class GetCarrierConstantRequest implements IGetCarrierConstantRequest {

                        /**
                         * Constructs a new GetCarrierConstantRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCarrierConstantRequest);

                        /** GetCarrierConstantRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCarrierConstantRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCarrierConstantRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCarrierConstantRequest): google.ads.googleads.v8.services.GetCarrierConstantRequest;

                        /**
                         * Encodes the specified GetCarrierConstantRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCarrierConstantRequest.verify|verify} messages.
                         * @param m GetCarrierConstantRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCarrierConstantRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCarrierConstantRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCarrierConstantRequest.verify|verify} messages.
                         * @param message GetCarrierConstantRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCarrierConstantRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCarrierConstantRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCarrierConstantRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCarrierConstantRequest;

                        /**
                         * Decodes a GetCarrierConstantRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCarrierConstantRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCarrierConstantRequest;

                        /**
                         * Verifies a GetCarrierConstantRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCarrierConstantRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCarrierConstantRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCarrierConstantRequest;

                        /**
                         * Creates a plain object from a GetCarrierConstantRequest message. Also converts values to other types if specified.
                         * @param m GetCarrierConstantRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCarrierConstantRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCarrierConstantRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a ChangeStatusService */
                    class ChangeStatusService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new ChangeStatusService 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 ChangeStatusService 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): ChangeStatusService;

                        /**
                         * Calls GetChangeStatus.
                         * @param request GetChangeStatusRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ChangeStatus
                         */
                        public getChangeStatus(request: google.ads.googleads.v8.services.IGetChangeStatusRequest, callback: google.ads.googleads.v8.services.ChangeStatusService.GetChangeStatusCallback): void;

                        /**
                         * Calls GetChangeStatus.
                         * @param request GetChangeStatusRequest message or plain object
                         * @returns Promise
                         */
                        public getChangeStatus(request: google.ads.googleads.v8.services.IGetChangeStatusRequest): Promise<google.ads.googleads.v8.resources.ChangeStatus>;
                    }

                    namespace ChangeStatusService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ChangeStatusService#getChangeStatus}.
                         * @param error Error, if any
                         * @param [response] ChangeStatus
                         */
                        type GetChangeStatusCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.ChangeStatus) => void;
                    }

                    /** Properties of a GetChangeStatusRequest. */
                    interface IGetChangeStatusRequest {

                        /** GetChangeStatusRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetChangeStatusRequest. */
                    class GetChangeStatusRequest implements IGetChangeStatusRequest {

                        /**
                         * Constructs a new GetChangeStatusRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetChangeStatusRequest);

                        /** GetChangeStatusRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetChangeStatusRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetChangeStatusRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetChangeStatusRequest): google.ads.googleads.v8.services.GetChangeStatusRequest;

                        /**
                         * Encodes the specified GetChangeStatusRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetChangeStatusRequest.verify|verify} messages.
                         * @param m GetChangeStatusRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetChangeStatusRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetChangeStatusRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetChangeStatusRequest.verify|verify} messages.
                         * @param message GetChangeStatusRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetChangeStatusRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetChangeStatusRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetChangeStatusRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetChangeStatusRequest;

                        /**
                         * Decodes a GetChangeStatusRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetChangeStatusRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetChangeStatusRequest;

                        /**
                         * Verifies a GetChangeStatusRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetChangeStatusRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetChangeStatusRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetChangeStatusRequest;

                        /**
                         * Creates a plain object from a GetChangeStatusRequest message. Also converts values to other types if specified.
                         * @param m GetChangeStatusRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetChangeStatusRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetChangeStatusRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a ClickViewService */
                    class ClickViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new ClickViewService 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 ClickViewService 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): ClickViewService;

                        /**
                         * Calls GetClickView.
                         * @param request GetClickViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ClickView
                         */
                        public getClickView(request: google.ads.googleads.v8.services.IGetClickViewRequest, callback: google.ads.googleads.v8.services.ClickViewService.GetClickViewCallback): void;

                        /**
                         * Calls GetClickView.
                         * @param request GetClickViewRequest message or plain object
                         * @returns Promise
                         */
                        public getClickView(request: google.ads.googleads.v8.services.IGetClickViewRequest): Promise<google.ads.googleads.v8.resources.ClickView>;
                    }

                    namespace ClickViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ClickViewService#getClickView}.
                         * @param error Error, if any
                         * @param [response] ClickView
                         */
                        type GetClickViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.ClickView) => void;
                    }

                    /** Properties of a GetClickViewRequest. */
                    interface IGetClickViewRequest {

                        /** GetClickViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetClickViewRequest. */
                    class GetClickViewRequest implements IGetClickViewRequest {

                        /**
                         * Constructs a new GetClickViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetClickViewRequest);

                        /** GetClickViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetClickViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetClickViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetClickViewRequest): google.ads.googleads.v8.services.GetClickViewRequest;

                        /**
                         * Encodes the specified GetClickViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetClickViewRequest.verify|verify} messages.
                         * @param m GetClickViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetClickViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetClickViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetClickViewRequest.verify|verify} messages.
                         * @param message GetClickViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetClickViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetClickViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetClickViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetClickViewRequest;

                        /**
                         * Decodes a GetClickViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetClickViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetClickViewRequest;

                        /**
                         * Verifies a GetClickViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetClickViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetClickViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetClickViewRequest;

                        /**
                         * Creates a plain object from a GetClickViewRequest message. Also converts values to other types if specified.
                         * @param m GetClickViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetClickViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetClickViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a CombinedAudienceService */
                    class CombinedAudienceService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CombinedAudienceService 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 CombinedAudienceService 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): CombinedAudienceService;

                        /**
                         * Calls GetCombinedAudience.
                         * @param request GetCombinedAudienceRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CombinedAudience
                         */
                        public getCombinedAudience(request: google.ads.googleads.v8.services.IGetCombinedAudienceRequest, callback: google.ads.googleads.v8.services.CombinedAudienceService.GetCombinedAudienceCallback): void;

                        /**
                         * Calls GetCombinedAudience.
                         * @param request GetCombinedAudienceRequest message or plain object
                         * @returns Promise
                         */
                        public getCombinedAudience(request: google.ads.googleads.v8.services.IGetCombinedAudienceRequest): Promise<google.ads.googleads.v8.resources.CombinedAudience>;
                    }

                    namespace CombinedAudienceService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CombinedAudienceService#getCombinedAudience}.
                         * @param error Error, if any
                         * @param [response] CombinedAudience
                         */
                        type GetCombinedAudienceCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CombinedAudience) => void;
                    }

                    /** Properties of a GetCombinedAudienceRequest. */
                    interface IGetCombinedAudienceRequest {

                        /** GetCombinedAudienceRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCombinedAudienceRequest. */
                    class GetCombinedAudienceRequest implements IGetCombinedAudienceRequest {

                        /**
                         * Constructs a new GetCombinedAudienceRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCombinedAudienceRequest);

                        /** GetCombinedAudienceRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCombinedAudienceRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCombinedAudienceRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCombinedAudienceRequest): google.ads.googleads.v8.services.GetCombinedAudienceRequest;

                        /**
                         * Encodes the specified GetCombinedAudienceRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCombinedAudienceRequest.verify|verify} messages.
                         * @param m GetCombinedAudienceRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCombinedAudienceRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCombinedAudienceRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCombinedAudienceRequest.verify|verify} messages.
                         * @param message GetCombinedAudienceRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCombinedAudienceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCombinedAudienceRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCombinedAudienceRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCombinedAudienceRequest;

                        /**
                         * Decodes a GetCombinedAudienceRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCombinedAudienceRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCombinedAudienceRequest;

                        /**
                         * Verifies a GetCombinedAudienceRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCombinedAudienceRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCombinedAudienceRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCombinedAudienceRequest;

                        /**
                         * Creates a plain object from a GetCombinedAudienceRequest message. Also converts values to other types if specified.
                         * @param m GetCombinedAudienceRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCombinedAudienceRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCombinedAudienceRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.services.IUploadConversionAdjustmentsRequest, callback: google.ads.googleads.v8.services.ConversionAdjustmentUploadService.UploadConversionAdjustmentsCallback): void;

                        /**
                         * Calls UploadConversionAdjustments.
                         * @param request UploadConversionAdjustmentsRequest message or plain object
                         * @returns Promise
                         */
                        public uploadConversionAdjustments(request: google.ads.googleads.v8.services.IUploadConversionAdjustmentsRequest): Promise<google.ads.googleads.v8.services.UploadConversionAdjustmentsResponse>;
                    }

                    namespace ConversionAdjustmentUploadService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ConversionAdjustmentUploadService#uploadConversionAdjustments}.
                         * @param error Error, if any
                         * @param [response] UploadConversionAdjustmentsResponse
                         */
                        type UploadConversionAdjustmentsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.UploadConversionAdjustmentsResponse) => void;
                    }

                    /** Properties of an UploadConversionAdjustmentsRequest. */
                    interface IUploadConversionAdjustmentsRequest {

                        /** UploadConversionAdjustmentsRequest customer_id */
                        customer_id?: (string|null);

                        /** UploadConversionAdjustmentsRequest conversion_adjustments */
                        conversion_adjustments?: (google.ads.googleads.v8.services.IConversionAdjustment[]|null);

                        /** UploadConversionAdjustmentsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** UploadConversionAdjustmentsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents an UploadConversionAdjustmentsRequest. */
                    class UploadConversionAdjustmentsRequest implements IUploadConversionAdjustmentsRequest {

                        /**
                         * Constructs a new UploadConversionAdjustmentsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IUploadConversionAdjustmentsRequest);

                        /** UploadConversionAdjustmentsRequest customer_id. */
                        public customer_id: string;

                        /** UploadConversionAdjustmentsRequest conversion_adjustments. */
                        public conversion_adjustments: google.ads.googleads.v8.services.IConversionAdjustment[];

                        /** UploadConversionAdjustmentsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** UploadConversionAdjustmentsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new UploadConversionAdjustmentsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UploadConversionAdjustmentsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IUploadConversionAdjustmentsRequest): google.ads.googleads.v8.services.UploadConversionAdjustmentsRequest;

                        /**
                         * Encodes the specified UploadConversionAdjustmentsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.UploadConversionAdjustmentsRequest.verify|verify} messages.
                         * @param m UploadConversionAdjustmentsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IUploadConversionAdjustmentsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UploadConversionAdjustmentsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IUploadConversionAdjustmentsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UploadConversionAdjustmentsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.UploadConversionAdjustmentsRequest;

                        /**
                         * Verifies an UploadConversionAdjustmentsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an UploadConversionAdjustmentsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UploadConversionAdjustmentsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.UploadConversionAdjustmentsRequest;

                        /**
                         * Creates a plain object from an UploadConversionAdjustmentsRequest message. Also converts values to other types if specified.
                         * @param m UploadConversionAdjustmentsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.UploadConversionAdjustmentsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UploadConversionAdjustmentsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an UploadConversionAdjustmentsResponse. */
                    interface IUploadConversionAdjustmentsResponse {

                        /** UploadConversionAdjustmentsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** UploadConversionAdjustmentsResponse results */
                        results?: (google.ads.googleads.v8.services.IConversionAdjustmentResult[]|null);
                    }

                    /** Represents an UploadConversionAdjustmentsResponse. */
                    class UploadConversionAdjustmentsResponse implements IUploadConversionAdjustmentsResponse {

                        /**
                         * Constructs a new UploadConversionAdjustmentsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IUploadConversionAdjustmentsResponse);

                        /** UploadConversionAdjustmentsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** UploadConversionAdjustmentsResponse results. */
                        public results: google.ads.googleads.v8.services.IConversionAdjustmentResult[];

                        /**
                         * Creates a new UploadConversionAdjustmentsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UploadConversionAdjustmentsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IUploadConversionAdjustmentsResponse): google.ads.googleads.v8.services.UploadConversionAdjustmentsResponse;

                        /**
                         * Encodes the specified UploadConversionAdjustmentsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.UploadConversionAdjustmentsResponse.verify|verify} messages.
                         * @param m UploadConversionAdjustmentsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IUploadConversionAdjustmentsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UploadConversionAdjustmentsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IUploadConversionAdjustmentsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UploadConversionAdjustmentsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.UploadConversionAdjustmentsResponse;

                        /**
                         * Verifies an UploadConversionAdjustmentsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an UploadConversionAdjustmentsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UploadConversionAdjustmentsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.UploadConversionAdjustmentsResponse;

                        /**
                         * Creates a plain object from an UploadConversionAdjustmentsResponse message. Also converts values to other types if specified.
                         * @param m UploadConversionAdjustmentsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.UploadConversionAdjustmentsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UploadConversionAdjustmentsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ConversionAdjustment. */
                    interface IConversionAdjustment {

                        /** ConversionAdjustment conversion_action */
                        conversion_action?: (string|null);

                        /** ConversionAdjustment adjustment_date_time */
                        adjustment_date_time?: (string|null);

                        /** ConversionAdjustment adjustment_type */
                        adjustment_type?: (google.ads.googleads.v8.enums.ConversionAdjustmentTypeEnum.ConversionAdjustmentType|keyof typeof google.ads.googleads.v8.enums.ConversionAdjustmentTypeEnum.ConversionAdjustmentType|null);

                        /** ConversionAdjustment restatement_value */
                        restatement_value?: (google.ads.googleads.v8.services.IRestatementValue|null);

                        /** ConversionAdjustment user_identifiers */
                        user_identifiers?: (google.ads.googleads.v8.common.IUserIdentifier[]|null);

                        /** ConversionAdjustment user_agent */
                        user_agent?: (string|null);

                        /** ConversionAdjustment gclid_date_time_pair */
                        gclid_date_time_pair?: (google.ads.googleads.v8.services.IGclidDateTimePair|null);

                        /** ConversionAdjustment order_id */
                        order_id?: (string|null);
                    }

                    /** Represents a ConversionAdjustment. */
                    class ConversionAdjustment implements IConversionAdjustment {

                        /**
                         * Constructs a new ConversionAdjustment.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IConversionAdjustment);

                        /** 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.v8.enums.ConversionAdjustmentTypeEnum.ConversionAdjustmentType|keyof typeof google.ads.googleads.v8.enums.ConversionAdjustmentTypeEnum.ConversionAdjustmentType);

                        /** ConversionAdjustment restatement_value. */
                        public restatement_value?: (google.ads.googleads.v8.services.IRestatementValue|null);

                        /** ConversionAdjustment user_identifiers. */
                        public user_identifiers: google.ads.googleads.v8.common.IUserIdentifier[];

                        /** ConversionAdjustment user_agent. */
                        public user_agent?: (string|null);

                        /** ConversionAdjustment gclid_date_time_pair. */
                        public gclid_date_time_pair?: (google.ads.googleads.v8.services.IGclidDateTimePair|null);

                        /** ConversionAdjustment order_id. */
                        public order_id?: (string|null);

                        /** ConversionAdjustment _conversion_action. */
                        public _conversion_action?: "conversion_action";

                        /** ConversionAdjustment _adjustment_date_time. */
                        public _adjustment_date_time?: "adjustment_date_time";

                        /** ConversionAdjustment _user_agent. */
                        public _user_agent?: "user_agent";

                        /** ConversionAdjustment conversion_identifier. */
                        public conversion_identifier?: ("gclid_date_time_pair"|"order_id");

                        /**
                         * Creates a new ConversionAdjustment instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionAdjustment instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IConversionAdjustment): google.ads.googleads.v8.services.ConversionAdjustment;

                        /**
                         * Encodes the specified ConversionAdjustment message. Does not implicitly {@link google.ads.googleads.v8.services.ConversionAdjustment.verify|verify} messages.
                         * @param m ConversionAdjustment message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IConversionAdjustment, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionAdjustment message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IConversionAdjustment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionAdjustment message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ConversionAdjustment;

                        /**
                         * Verifies a ConversionAdjustment message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionAdjustment message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionAdjustment
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ConversionAdjustment;

                        /**
                         * Creates a plain object from a ConversionAdjustment message. Also converts values to other types if specified.
                         * @param m ConversionAdjustment
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ConversionAdjustment, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionAdjustment to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IRestatementValue);

                        /** RestatementValue adjusted_value. */
                        public adjusted_value?: (number|null);

                        /** RestatementValue currency_code. */
                        public currency_code?: (string|null);

                        /** RestatementValue _adjusted_value. */
                        public _adjusted_value?: "adjusted_value";

                        /** RestatementValue _currency_code. */
                        public _currency_code?: "currency_code";

                        /**
                         * Creates a new RestatementValue instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RestatementValue instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IRestatementValue): google.ads.googleads.v8.services.RestatementValue;

                        /**
                         * Encodes the specified RestatementValue message. Does not implicitly {@link google.ads.googleads.v8.services.RestatementValue.verify|verify} messages.
                         * @param m RestatementValue message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IRestatementValue, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RestatementValue message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IRestatementValue, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RestatementValue message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.RestatementValue;

                        /**
                         * Verifies a RestatementValue message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RestatementValue message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns RestatementValue
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.RestatementValue;

                        /**
                         * Creates a plain object from a RestatementValue message. Also converts values to other types if specified.
                         * @param m RestatementValue
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.RestatementValue, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RestatementValue to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGclidDateTimePair);

                        /** GclidDateTimePair gclid. */
                        public gclid?: (string|null);

                        /** GclidDateTimePair conversion_date_time. */
                        public conversion_date_time?: (string|null);

                        /** GclidDateTimePair _gclid. */
                        public _gclid?: "gclid";

                        /** GclidDateTimePair _conversion_date_time. */
                        public _conversion_date_time?: "conversion_date_time";

                        /**
                         * Creates a new GclidDateTimePair instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GclidDateTimePair instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGclidDateTimePair): google.ads.googleads.v8.services.GclidDateTimePair;

                        /**
                         * Encodes the specified GclidDateTimePair message. Does not implicitly {@link google.ads.googleads.v8.services.GclidDateTimePair.verify|verify} messages.
                         * @param m GclidDateTimePair message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGclidDateTimePair, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GclidDateTimePair message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IGclidDateTimePair, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GclidDateTimePair message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.GclidDateTimePair;

                        /**
                         * Verifies a GclidDateTimePair message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GclidDateTimePair message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GclidDateTimePair
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GclidDateTimePair;

                        /**
                         * Creates a plain object from a GclidDateTimePair message. Also converts values to other types if specified.
                         * @param m GclidDateTimePair
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GclidDateTimePair, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GclidDateTimePair to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ConversionAdjustmentResult. */
                    interface IConversionAdjustmentResult {

                        /** ConversionAdjustmentResult conversion_action */
                        conversion_action?: (string|null);

                        /** ConversionAdjustmentResult adjustment_date_time */
                        adjustment_date_time?: (string|null);

                        /** ConversionAdjustmentResult adjustment_type */
                        adjustment_type?: (google.ads.googleads.v8.enums.ConversionAdjustmentTypeEnum.ConversionAdjustmentType|keyof typeof google.ads.googleads.v8.enums.ConversionAdjustmentTypeEnum.ConversionAdjustmentType|null);

                        /** ConversionAdjustmentResult gclid_date_time_pair */
                        gclid_date_time_pair?: (google.ads.googleads.v8.services.IGclidDateTimePair|null);

                        /** ConversionAdjustmentResult order_id */
                        order_id?: (string|null);
                    }

                    /** Represents a ConversionAdjustmentResult. */
                    class ConversionAdjustmentResult implements IConversionAdjustmentResult {

                        /**
                         * Constructs a new ConversionAdjustmentResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IConversionAdjustmentResult);

                        /** 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.v8.enums.ConversionAdjustmentTypeEnum.ConversionAdjustmentType|keyof typeof google.ads.googleads.v8.enums.ConversionAdjustmentTypeEnum.ConversionAdjustmentType);

                        /** ConversionAdjustmentResult gclid_date_time_pair. */
                        public gclid_date_time_pair?: (google.ads.googleads.v8.services.IGclidDateTimePair|null);

                        /** ConversionAdjustmentResult order_id. */
                        public order_id?: (string|null);

                        /** ConversionAdjustmentResult _conversion_action. */
                        public _conversion_action?: "conversion_action";

                        /** ConversionAdjustmentResult _adjustment_date_time. */
                        public _adjustment_date_time?: "adjustment_date_time";

                        /** ConversionAdjustmentResult conversion_identifier. */
                        public conversion_identifier?: ("gclid_date_time_pair"|"order_id");

                        /**
                         * Creates a new ConversionAdjustmentResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversionAdjustmentResult instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IConversionAdjustmentResult): google.ads.googleads.v8.services.ConversionAdjustmentResult;

                        /**
                         * Encodes the specified ConversionAdjustmentResult message. Does not implicitly {@link google.ads.googleads.v8.services.ConversionAdjustmentResult.verify|verify} messages.
                         * @param m ConversionAdjustmentResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IConversionAdjustmentResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversionAdjustmentResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IConversionAdjustmentResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversionAdjustmentResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ConversionAdjustmentResult;

                        /**
                         * Verifies a ConversionAdjustmentResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ConversionAdjustmentResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ConversionAdjustmentResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ConversionAdjustmentResult;

                        /**
                         * Creates a plain object from a ConversionAdjustmentResult message. Also converts values to other types if specified.
                         * @param m ConversionAdjustmentResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ConversionAdjustmentResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversionAdjustmentResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.services.IUploadClickConversionsRequest, callback: google.ads.googleads.v8.services.ConversionUploadService.UploadClickConversionsCallback): void;

                        /**
                         * Calls UploadClickConversions.
                         * @param request UploadClickConversionsRequest message or plain object
                         * @returns Promise
                         */
                        public uploadClickConversions(request: google.ads.googleads.v8.services.IUploadClickConversionsRequest): Promise<google.ads.googleads.v8.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.v8.services.IUploadCallConversionsRequest, callback: google.ads.googleads.v8.services.ConversionUploadService.UploadCallConversionsCallback): void;

                        /**
                         * Calls UploadCallConversions.
                         * @param request UploadCallConversionsRequest message or plain object
                         * @returns Promise
                         */
                        public uploadCallConversions(request: google.ads.googleads.v8.services.IUploadCallConversionsRequest): Promise<google.ads.googleads.v8.services.UploadCallConversionsResponse>;
                    }

                    namespace ConversionUploadService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ConversionUploadService#uploadClickConversions}.
                         * @param error Error, if any
                         * @param [response] UploadClickConversionsResponse
                         */
                        type UploadClickConversionsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.UploadClickConversionsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ConversionUploadService#uploadCallConversions}.
                         * @param error Error, if any
                         * @param [response] UploadCallConversionsResponse
                         */
                        type UploadCallConversionsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.UploadCallConversionsResponse) => void;
                    }

                    /** Properties of an UploadClickConversionsRequest. */
                    interface IUploadClickConversionsRequest {

                        /** UploadClickConversionsRequest customer_id */
                        customer_id?: (string|null);

                        /** UploadClickConversionsRequest conversions */
                        conversions?: (google.ads.googleads.v8.services.IClickConversion[]|null);

                        /** UploadClickConversionsRequest partial_failure */
                        partial_failure?: (boolean|null);

                        /** UploadClickConversionsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents an UploadClickConversionsRequest. */
                    class UploadClickConversionsRequest implements IUploadClickConversionsRequest {

                        /**
                         * Constructs a new UploadClickConversionsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IUploadClickConversionsRequest);

                        /** UploadClickConversionsRequest customer_id. */
                        public customer_id: string;

                        /** UploadClickConversionsRequest conversions. */
                        public conversions: google.ads.googleads.v8.services.IClickConversion[];

                        /** UploadClickConversionsRequest partial_failure. */
                        public partial_failure: boolean;

                        /** UploadClickConversionsRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new UploadClickConversionsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UploadClickConversionsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IUploadClickConversionsRequest): google.ads.googleads.v8.services.UploadClickConversionsRequest;

                        /**
                         * Encodes the specified UploadClickConversionsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.UploadClickConversionsRequest.verify|verify} messages.
                         * @param m UploadClickConversionsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IUploadClickConversionsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UploadClickConversionsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IUploadClickConversionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UploadClickConversionsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.UploadClickConversionsRequest;

                        /**
                         * Verifies an UploadClickConversionsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an UploadClickConversionsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UploadClickConversionsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.UploadClickConversionsRequest;

                        /**
                         * Creates a plain object from an UploadClickConversionsRequest message. Also converts values to other types if specified.
                         * @param m UploadClickConversionsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.UploadClickConversionsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UploadClickConversionsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an UploadClickConversionsResponse. */
                    interface IUploadClickConversionsResponse {

                        /** UploadClickConversionsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** UploadClickConversionsResponse results */
                        results?: (google.ads.googleads.v8.services.IClickConversionResult[]|null);
                    }

                    /** Represents an UploadClickConversionsResponse. */
                    class UploadClickConversionsResponse implements IUploadClickConversionsResponse {

                        /**
                         * Constructs a new UploadClickConversionsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IUploadClickConversionsResponse);

                        /** UploadClickConversionsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** UploadClickConversionsResponse results. */
                        public results: google.ads.googleads.v8.services.IClickConversionResult[];

                        /**
                         * Creates a new UploadClickConversionsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UploadClickConversionsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IUploadClickConversionsResponse): google.ads.googleads.v8.services.UploadClickConversionsResponse;

                        /**
                         * Encodes the specified UploadClickConversionsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.UploadClickConversionsResponse.verify|verify} messages.
                         * @param m UploadClickConversionsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IUploadClickConversionsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UploadClickConversionsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IUploadClickConversionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UploadClickConversionsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.UploadClickConversionsResponse;

                        /**
                         * Verifies an UploadClickConversionsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an UploadClickConversionsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UploadClickConversionsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.UploadClickConversionsResponse;

                        /**
                         * Creates a plain object from an UploadClickConversionsResponse message. Also converts values to other types if specified.
                         * @param m UploadClickConversionsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.UploadClickConversionsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UploadClickConversionsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an UploadCallConversionsRequest. */
                    interface IUploadCallConversionsRequest {

                        /** UploadCallConversionsRequest customer_id */
                        customer_id?: (string|null);

                        /** UploadCallConversionsRequest conversions */
                        conversions?: (google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IUploadCallConversionsRequest);

                        /** UploadCallConversionsRequest customer_id. */
                        public customer_id: string;

                        /** UploadCallConversionsRequest conversions. */
                        public conversions: google.ads.googleads.v8.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.v8.services.IUploadCallConversionsRequest): google.ads.googleads.v8.services.UploadCallConversionsRequest;

                        /**
                         * Encodes the specified UploadCallConversionsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.UploadCallConversionsRequest.verify|verify} messages.
                         * @param m UploadCallConversionsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IUploadCallConversionsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UploadCallConversionsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IUploadCallConversionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UploadCallConversionsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.UploadCallConversionsRequest;

                        /**
                         * Verifies an UploadCallConversionsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an UploadCallConversionsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UploadCallConversionsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.UploadCallConversionsRequest;

                        /**
                         * Creates a plain object from an UploadCallConversionsRequest message. Also converts values to other types if specified.
                         * @param m UploadCallConversionsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.UploadCallConversionsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UploadCallConversionsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an UploadCallConversionsResponse. */
                    interface IUploadCallConversionsResponse {

                        /** UploadCallConversionsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);

                        /** UploadCallConversionsResponse results */
                        results?: (google.ads.googleads.v8.services.ICallConversionResult[]|null);
                    }

                    /** Represents an UploadCallConversionsResponse. */
                    class UploadCallConversionsResponse implements IUploadCallConversionsResponse {

                        /**
                         * Constructs a new UploadCallConversionsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IUploadCallConversionsResponse);

                        /** UploadCallConversionsResponse partial_failure_error. */
                        public partial_failure_error?: (google.rpc.IStatus|null);

                        /** UploadCallConversionsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IUploadCallConversionsResponse): google.ads.googleads.v8.services.UploadCallConversionsResponse;

                        /**
                         * Encodes the specified UploadCallConversionsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.UploadCallConversionsResponse.verify|verify} messages.
                         * @param m UploadCallConversionsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IUploadCallConversionsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UploadCallConversionsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IUploadCallConversionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UploadCallConversionsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.UploadCallConversionsResponse;

                        /**
                         * Verifies an UploadCallConversionsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an UploadCallConversionsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UploadCallConversionsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.UploadCallConversionsResponse;

                        /**
                         * Creates a plain object from an UploadCallConversionsResponse message. Also converts values to other types if specified.
                         * @param m UploadCallConversionsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.UploadCallConversionsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UploadCallConversionsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ClickConversion. */
                    interface IClickConversion {

                        /** ClickConversion gclid */
                        gclid?: (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.v8.services.IExternalAttributionData|null);

                        /** ClickConversion custom_variables */
                        custom_variables?: (google.ads.googleads.v8.services.ICustomVariable[]|null);

                        /** ClickConversion cart_data */
                        cart_data?: (google.ads.googleads.v8.services.ICartData|null);

                        /** ClickConversion user_identifiers */
                        user_identifiers?: (google.ads.googleads.v8.common.IUserIdentifier[]|null);
                    }

                    /** Represents a ClickConversion. */
                    class ClickConversion implements IClickConversion {

                        /**
                         * Constructs a new ClickConversion.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IClickConversion);

                        /** ClickConversion gclid. */
                        public gclid?: (string|null);

                        /** 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.v8.services.IExternalAttributionData|null);

                        /** ClickConversion custom_variables. */
                        public custom_variables: google.ads.googleads.v8.services.ICustomVariable[];

                        /** ClickConversion cart_data. */
                        public cart_data?: (google.ads.googleads.v8.services.ICartData|null);

                        /** ClickConversion user_identifiers. */
                        public user_identifiers: google.ads.googleads.v8.common.IUserIdentifier[];

                        /** ClickConversion _gclid. */
                        public _gclid?: "gclid";

                        /** ClickConversion _conversion_action. */
                        public _conversion_action?: "conversion_action";

                        /** ClickConversion _conversion_date_time. */
                        public _conversion_date_time?: "conversion_date_time";

                        /** ClickConversion _conversion_value. */
                        public _conversion_value?: "conversion_value";

                        /** ClickConversion _currency_code. */
                        public _currency_code?: "currency_code";

                        /** ClickConversion _order_id. */
                        public _order_id?: "order_id";

                        /**
                         * Creates a new ClickConversion instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ClickConversion instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IClickConversion): google.ads.googleads.v8.services.ClickConversion;

                        /**
                         * Encodes the specified ClickConversion message. Does not implicitly {@link google.ads.googleads.v8.services.ClickConversion.verify|verify} messages.
                         * @param m ClickConversion message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IClickConversion, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ClickConversion message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IClickConversion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ClickConversion message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ClickConversion;

                        /**
                         * Verifies a ClickConversion message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ClickConversion message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ClickConversion
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ClickConversion;

                        /**
                         * Creates a plain object from a ClickConversion message. Also converts values to other types if specified.
                         * @param m ClickConversion
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ClickConversion, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ClickConversion to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.services.ICustomVariable[]|null);
                    }

                    /** Represents a CallConversion. */
                    class CallConversion implements ICallConversion {

                        /**
                         * Constructs a new CallConversion.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.ICustomVariable[];

                        /** CallConversion _caller_id. */
                        public _caller_id?: "caller_id";

                        /** CallConversion _call_start_date_time. */
                        public _call_start_date_time?: "call_start_date_time";

                        /** CallConversion _conversion_action. */
                        public _conversion_action?: "conversion_action";

                        /** CallConversion _conversion_date_time. */
                        public _conversion_date_time?: "conversion_date_time";

                        /** CallConversion _conversion_value. */
                        public _conversion_value?: "conversion_value";

                        /** CallConversion _currency_code. */
                        public _currency_code?: "currency_code";

                        /**
                         * Creates a new CallConversion instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CallConversion instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.ICallConversion): google.ads.googleads.v8.services.CallConversion;

                        /**
                         * Encodes the specified CallConversion message. Does not implicitly {@link google.ads.googleads.v8.services.CallConversion.verify|verify} messages.
                         * @param m CallConversion message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICallConversion, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CallConversion message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICallConversion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CallConversion message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CallConversion;

                        /**
                         * Verifies a CallConversion message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CallConversion message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CallConversion
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CallConversion;

                        /**
                         * Creates a plain object from a CallConversion message. Also converts values to other types if specified.
                         * @param m CallConversion
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CallConversion, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CallConversion to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IExternalAttributionData);

                        /** ExternalAttributionData external_attribution_credit. */
                        public external_attribution_credit?: (number|null);

                        /** ExternalAttributionData external_attribution_model. */
                        public external_attribution_model?: (string|null);

                        /** ExternalAttributionData _external_attribution_credit. */
                        public _external_attribution_credit?: "external_attribution_credit";

                        /** ExternalAttributionData _external_attribution_model. */
                        public _external_attribution_model?: "external_attribution_model";

                        /**
                         * Creates a new ExternalAttributionData instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ExternalAttributionData instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IExternalAttributionData): google.ads.googleads.v8.services.ExternalAttributionData;

                        /**
                         * Encodes the specified ExternalAttributionData message. Does not implicitly {@link google.ads.googleads.v8.services.ExternalAttributionData.verify|verify} messages.
                         * @param m ExternalAttributionData message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IExternalAttributionData, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ExternalAttributionData message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IExternalAttributionData, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ExternalAttributionData message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ExternalAttributionData;

                        /**
                         * Verifies an ExternalAttributionData message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an ExternalAttributionData message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ExternalAttributionData
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ExternalAttributionData;

                        /**
                         * Creates a plain object from an ExternalAttributionData message. Also converts values to other types if specified.
                         * @param m ExternalAttributionData
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ExternalAttributionData, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ExternalAttributionData to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ClickConversionResult. */
                    interface IClickConversionResult {

                        /** ClickConversionResult gclid */
                        gclid?: (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.v8.common.IUserIdentifier[]|null);
                    }

                    /** Represents a ClickConversionResult. */
                    class ClickConversionResult implements IClickConversionResult {

                        /**
                         * Constructs a new ClickConversionResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IClickConversionResult);

                        /** ClickConversionResult gclid. */
                        public gclid?: (string|null);

                        /** 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.v8.common.IUserIdentifier[];

                        /** ClickConversionResult _gclid. */
                        public _gclid?: "gclid";

                        /** ClickConversionResult _conversion_action. */
                        public _conversion_action?: "conversion_action";

                        /** ClickConversionResult _conversion_date_time. */
                        public _conversion_date_time?: "conversion_date_time";

                        /**
                         * Creates a new ClickConversionResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ClickConversionResult instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IClickConversionResult): google.ads.googleads.v8.services.ClickConversionResult;

                        /**
                         * Encodes the specified ClickConversionResult message. Does not implicitly {@link google.ads.googleads.v8.services.ClickConversionResult.verify|verify} messages.
                         * @param m ClickConversionResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IClickConversionResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ClickConversionResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IClickConversionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ClickConversionResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ClickConversionResult;

                        /**
                         * Verifies a ClickConversionResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ClickConversionResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ClickConversionResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ClickConversionResult;

                        /**
                         * Creates a plain object from a ClickConversionResult message. Also converts values to other types if specified.
                         * @param m ClickConversionResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ClickConversionResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ClickConversionResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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);

                        /** CallConversionResult _caller_id. */
                        public _caller_id?: "caller_id";

                        /** CallConversionResult _call_start_date_time. */
                        public _call_start_date_time?: "call_start_date_time";

                        /** CallConversionResult _conversion_action. */
                        public _conversion_action?: "conversion_action";

                        /** CallConversionResult _conversion_date_time. */
                        public _conversion_date_time?: "conversion_date_time";

                        /**
                         * Creates a new CallConversionResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CallConversionResult instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.ICallConversionResult): google.ads.googleads.v8.services.CallConversionResult;

                        /**
                         * Encodes the specified CallConversionResult message. Does not implicitly {@link google.ads.googleads.v8.services.CallConversionResult.verify|verify} messages.
                         * @param m CallConversionResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICallConversionResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CallConversionResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICallConversionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CallConversionResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CallConversionResult;

                        /**
                         * Verifies a CallConversionResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CallConversionResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CallConversionResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CallConversionResult;

                        /**
                         * Creates a plain object from a CallConversionResult message. Also converts values to other types if specified.
                         * @param m CallConversionResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CallConversionResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CallConversionResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.ICustomVariable): google.ads.googleads.v8.services.CustomVariable;

                        /**
                         * Encodes the specified CustomVariable message. Does not implicitly {@link google.ads.googleads.v8.services.CustomVariable.verify|verify} messages.
                         * @param m CustomVariable message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICustomVariable, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomVariable message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICustomVariable, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomVariable message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CustomVariable;

                        /**
                         * Verifies a CustomVariable message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomVariable message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomVariable
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CustomVariable;

                        /**
                         * Creates a plain object from a CustomVariable message. Also converts values to other types if specified.
                         * @param m CustomVariable
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CustomVariable, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomVariable to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CartData. */
                    interface ICartData {

                        /** CartData merchant_id */
                        merchant_id?: (string|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.v8.services.CartData.IItem[]|null);
                    }

                    /** Represents a CartData. */
                    class CartData implements ICartData {

                        /**
                         * Constructs a new CartData.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICartData);

                        /** CartData merchant_id. */
                        public merchant_id: string;

                        /** 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.v8.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.v8.services.ICartData): google.ads.googleads.v8.services.CartData;

                        /**
                         * Encodes the specified CartData message. Does not implicitly {@link google.ads.googleads.v8.services.CartData.verify|verify} messages.
                         * @param m CartData message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICartData, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CartData message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICartData, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CartData message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CartData;

                        /**
                         * Verifies a CartData message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CartData message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CartData
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CartData;

                        /**
                         * Creates a plain object from a CartData message. Also converts values to other types if specified.
                         * @param m CartData
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CartData, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CartData to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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.v8.services.CartData.IItem): google.ads.googleads.v8.services.CartData.Item;

                            /**
                             * Encodes the specified Item message. Does not implicitly {@link google.ads.googleads.v8.services.CartData.Item.verify|verify} messages.
                             * @param m Item message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.services.CartData.IItem, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Item message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.CartData.IItem, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an Item message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CartData.Item;

                            /**
                             * Verifies an Item message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates an Item message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns Item
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CartData.Item;

                            /**
                             * Creates a plain object from an Item message. Also converts values to other types if specified.
                             * @param m Item
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.services.CartData.Item, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this Item to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }
                    }

                    /** Represents a CurrencyConstantService */
                    class CurrencyConstantService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CurrencyConstantService 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 CurrencyConstantService 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): CurrencyConstantService;

                        /**
                         * Calls GetCurrencyConstant.
                         * @param request GetCurrencyConstantRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CurrencyConstant
                         */
                        public getCurrencyConstant(request: google.ads.googleads.v8.services.IGetCurrencyConstantRequest, callback: google.ads.googleads.v8.services.CurrencyConstantService.GetCurrencyConstantCallback): void;

                        /**
                         * Calls GetCurrencyConstant.
                         * @param request GetCurrencyConstantRequest message or plain object
                         * @returns Promise
                         */
                        public getCurrencyConstant(request: google.ads.googleads.v8.services.IGetCurrencyConstantRequest): Promise<google.ads.googleads.v8.resources.CurrencyConstant>;
                    }

                    namespace CurrencyConstantService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CurrencyConstantService#getCurrencyConstant}.
                         * @param error Error, if any
                         * @param [response] CurrencyConstant
                         */
                        type GetCurrencyConstantCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CurrencyConstant) => void;
                    }

                    /** Properties of a GetCurrencyConstantRequest. */
                    interface IGetCurrencyConstantRequest {

                        /** GetCurrencyConstantRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCurrencyConstantRequest. */
                    class GetCurrencyConstantRequest implements IGetCurrencyConstantRequest {

                        /**
                         * Constructs a new GetCurrencyConstantRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCurrencyConstantRequest);

                        /** GetCurrencyConstantRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCurrencyConstantRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCurrencyConstantRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCurrencyConstantRequest): google.ads.googleads.v8.services.GetCurrencyConstantRequest;

                        /**
                         * Encodes the specified GetCurrencyConstantRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCurrencyConstantRequest.verify|verify} messages.
                         * @param m GetCurrencyConstantRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCurrencyConstantRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCurrencyConstantRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCurrencyConstantRequest.verify|verify} messages.
                         * @param message GetCurrencyConstantRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCurrencyConstantRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCurrencyConstantRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCurrencyConstantRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCurrencyConstantRequest;

                        /**
                         * Decodes a GetCurrencyConstantRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCurrencyConstantRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCurrencyConstantRequest;

                        /**
                         * Verifies a GetCurrencyConstantRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCurrencyConstantRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCurrencyConstantRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCurrencyConstantRequest;

                        /**
                         * Creates a plain object from a GetCurrencyConstantRequest message. Also converts values to other types if specified.
                         * @param m GetCurrencyConstantRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCurrencyConstantRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCurrencyConstantRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetCustomAudience.
                         * @param request GetCustomAudienceRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CustomAudience
                         */
                        public getCustomAudience(request: google.ads.googleads.v8.services.IGetCustomAudienceRequest, callback: google.ads.googleads.v8.services.CustomAudienceService.GetCustomAudienceCallback): void;

                        /**
                         * Calls GetCustomAudience.
                         * @param request GetCustomAudienceRequest message or plain object
                         * @returns Promise
                         */
                        public getCustomAudience(request: google.ads.googleads.v8.services.IGetCustomAudienceRequest): Promise<google.ads.googleads.v8.resources.CustomAudience>;

                        /**
                         * 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.v8.services.IMutateCustomAudiencesRequest, callback: google.ads.googleads.v8.services.CustomAudienceService.MutateCustomAudiencesCallback): void;

                        /**
                         * Calls MutateCustomAudiences.
                         * @param request MutateCustomAudiencesRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomAudiences(request: google.ads.googleads.v8.services.IMutateCustomAudiencesRequest): Promise<google.ads.googleads.v8.services.MutateCustomAudiencesResponse>;
                    }

                    namespace CustomAudienceService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomAudienceService#getCustomAudience}.
                         * @param error Error, if any
                         * @param [response] CustomAudience
                         */
                        type GetCustomAudienceCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CustomAudience) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomAudienceService#mutateCustomAudiences}.
                         * @param error Error, if any
                         * @param [response] MutateCustomAudiencesResponse
                         */
                        type MutateCustomAudiencesCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateCustomAudiencesResponse) => void;
                    }

                    /** Properties of a GetCustomAudienceRequest. */
                    interface IGetCustomAudienceRequest {

                        /** GetCustomAudienceRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCustomAudienceRequest. */
                    class GetCustomAudienceRequest implements IGetCustomAudienceRequest {

                        /**
                         * Constructs a new GetCustomAudienceRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCustomAudienceRequest);

                        /** GetCustomAudienceRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCustomAudienceRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCustomAudienceRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCustomAudienceRequest): google.ads.googleads.v8.services.GetCustomAudienceRequest;

                        /**
                         * Encodes the specified GetCustomAudienceRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomAudienceRequest.verify|verify} messages.
                         * @param m GetCustomAudienceRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCustomAudienceRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCustomAudienceRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomAudienceRequest.verify|verify} messages.
                         * @param message GetCustomAudienceRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCustomAudienceRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCustomAudienceRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCustomAudienceRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCustomAudienceRequest;

                        /**
                         * Decodes a GetCustomAudienceRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCustomAudienceRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCustomAudienceRequest;

                        /**
                         * Verifies a GetCustomAudienceRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCustomAudienceRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCustomAudienceRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCustomAudienceRequest;

                        /**
                         * Creates a plain object from a GetCustomAudienceRequest message. Also converts values to other types if specified.
                         * @param m GetCustomAudienceRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCustomAudienceRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCustomAudienceRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomAudiencesRequest. */
                    interface IMutateCustomAudiencesRequest {

                        /** MutateCustomAudiencesRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomAudiencesRequest operations */
                        operations?: (google.ads.googleads.v8.services.ICustomAudienceOperation[]|null);

                        /** MutateCustomAudiencesRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateCustomAudiencesRequest. */
                    class MutateCustomAudiencesRequest implements IMutateCustomAudiencesRequest {

                        /**
                         * Constructs a new MutateCustomAudiencesRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomAudiencesRequest);

                        /** MutateCustomAudiencesRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomAudiencesRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.services.IMutateCustomAudiencesRequest): google.ads.googleads.v8.services.MutateCustomAudiencesRequest;

                        /**
                         * Encodes the specified MutateCustomAudiencesRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomAudiencesRequest.verify|verify} messages.
                         * @param m MutateCustomAudiencesRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomAudiencesRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomAudiencesRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomAudiencesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomAudiencesRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomAudiencesRequest;

                        /**
                         * Verifies a MutateCustomAudiencesRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomAudiencesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomAudiencesRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomAudiencesRequest;

                        /**
                         * Creates a plain object from a MutateCustomAudiencesRequest message. Also converts values to other types if specified.
                         * @param m MutateCustomAudiencesRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomAudiencesRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomAudiencesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CustomAudienceOperation. */
                    interface ICustomAudienceOperation {

                        /** CustomAudienceOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomAudienceOperation create */
                        create?: (google.ads.googleads.v8.resources.ICustomAudience|null);

                        /** CustomAudienceOperation update */
                        update?: (google.ads.googleads.v8.resources.ICustomAudience|null);

                        /** CustomAudienceOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CustomAudienceOperation. */
                    class CustomAudienceOperation implements ICustomAudienceOperation {

                        /**
                         * Constructs a new CustomAudienceOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICustomAudienceOperation);

                        /** CustomAudienceOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomAudienceOperation create. */
                        public create?: (google.ads.googleads.v8.resources.ICustomAudience|null);

                        /** CustomAudienceOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.ICustomAudienceOperation): google.ads.googleads.v8.services.CustomAudienceOperation;

                        /**
                         * Encodes the specified CustomAudienceOperation message. Does not implicitly {@link google.ads.googleads.v8.services.CustomAudienceOperation.verify|verify} messages.
                         * @param m CustomAudienceOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICustomAudienceOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomAudienceOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICustomAudienceOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomAudienceOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CustomAudienceOperation;

                        /**
                         * Verifies a CustomAudienceOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomAudienceOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomAudienceOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CustomAudienceOperation;

                        /**
                         * Creates a plain object from a CustomAudienceOperation message. Also converts values to other types if specified.
                         * @param m CustomAudienceOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CustomAudienceOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomAudienceOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomAudiencesResponse. */
                    interface IMutateCustomAudiencesResponse {

                        /** MutateCustomAudiencesResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateCustomAudienceResult[]|null);
                    }

                    /** Represents a MutateCustomAudiencesResponse. */
                    class MutateCustomAudiencesResponse implements IMutateCustomAudiencesResponse {

                        /**
                         * Constructs a new MutateCustomAudiencesResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomAudiencesResponse);

                        /** MutateCustomAudiencesResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateCustomAudiencesResponse): google.ads.googleads.v8.services.MutateCustomAudiencesResponse;

                        /**
                         * Encodes the specified MutateCustomAudiencesResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomAudiencesResponse.verify|verify} messages.
                         * @param m MutateCustomAudiencesResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomAudiencesResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomAudiencesResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomAudiencesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomAudiencesResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomAudiencesResponse;

                        /**
                         * Verifies a MutateCustomAudiencesResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomAudiencesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomAudiencesResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomAudiencesResponse;

                        /**
                         * Creates a plain object from a MutateCustomAudiencesResponse message. Also converts values to other types if specified.
                         * @param m MutateCustomAudiencesResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomAudiencesResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomAudiencesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IMutateCustomAudienceResult): google.ads.googleads.v8.services.MutateCustomAudienceResult;

                        /**
                         * Encodes the specified MutateCustomAudienceResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomAudienceResult.verify|verify} messages.
                         * @param m MutateCustomAudienceResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomAudienceResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomAudienceResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomAudienceResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomAudienceResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomAudienceResult;

                        /**
                         * Verifies a MutateCustomAudienceResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomAudienceResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomAudienceResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomAudienceResult;

                        /**
                         * Creates a plain object from a MutateCustomAudienceResult message. Also converts values to other types if specified.
                         * @param m MutateCustomAudienceResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomAudienceResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomAudienceResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetCustomInterest.
                         * @param request GetCustomInterestRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CustomInterest
                         */
                        public getCustomInterest(request: google.ads.googleads.v8.services.IGetCustomInterestRequest, callback: google.ads.googleads.v8.services.CustomInterestService.GetCustomInterestCallback): void;

                        /**
                         * Calls GetCustomInterest.
                         * @param request GetCustomInterestRequest message or plain object
                         * @returns Promise
                         */
                        public getCustomInterest(request: google.ads.googleads.v8.services.IGetCustomInterestRequest): Promise<google.ads.googleads.v8.resources.CustomInterest>;

                        /**
                         * 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.v8.services.IMutateCustomInterestsRequest, callback: google.ads.googleads.v8.services.CustomInterestService.MutateCustomInterestsCallback): void;

                        /**
                         * Calls MutateCustomInterests.
                         * @param request MutateCustomInterestsRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomInterests(request: google.ads.googleads.v8.services.IMutateCustomInterestsRequest): Promise<google.ads.googleads.v8.services.MutateCustomInterestsResponse>;
                    }

                    namespace CustomInterestService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomInterestService#getCustomInterest}.
                         * @param error Error, if any
                         * @param [response] CustomInterest
                         */
                        type GetCustomInterestCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CustomInterest) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomInterestService#mutateCustomInterests}.
                         * @param error Error, if any
                         * @param [response] MutateCustomInterestsResponse
                         */
                        type MutateCustomInterestsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateCustomInterestsResponse) => void;
                    }

                    /** Properties of a GetCustomInterestRequest. */
                    interface IGetCustomInterestRequest {

                        /** GetCustomInterestRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCustomInterestRequest. */
                    class GetCustomInterestRequest implements IGetCustomInterestRequest {

                        /**
                         * Constructs a new GetCustomInterestRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCustomInterestRequest);

                        /** GetCustomInterestRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCustomInterestRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCustomInterestRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCustomInterestRequest): google.ads.googleads.v8.services.GetCustomInterestRequest;

                        /**
                         * Encodes the specified GetCustomInterestRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomInterestRequest.verify|verify} messages.
                         * @param m GetCustomInterestRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCustomInterestRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCustomInterestRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomInterestRequest.verify|verify} messages.
                         * @param message GetCustomInterestRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCustomInterestRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCustomInterestRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCustomInterestRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCustomInterestRequest;

                        /**
                         * Decodes a GetCustomInterestRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCustomInterestRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCustomInterestRequest;

                        /**
                         * Verifies a GetCustomInterestRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCustomInterestRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCustomInterestRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCustomInterestRequest;

                        /**
                         * Creates a plain object from a GetCustomInterestRequest message. Also converts values to other types if specified.
                         * @param m GetCustomInterestRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCustomInterestRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCustomInterestRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomInterestsRequest. */
                    interface IMutateCustomInterestsRequest {

                        /** MutateCustomInterestsRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomInterestsRequest operations */
                        operations?: (google.ads.googleads.v8.services.ICustomInterestOperation[]|null);

                        /** MutateCustomInterestsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateCustomInterestsRequest. */
                    class MutateCustomInterestsRequest implements IMutateCustomInterestsRequest {

                        /**
                         * Constructs a new MutateCustomInterestsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomInterestsRequest);

                        /** MutateCustomInterestsRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomInterestsRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.services.IMutateCustomInterestsRequest): google.ads.googleads.v8.services.MutateCustomInterestsRequest;

                        /**
                         * Encodes the specified MutateCustomInterestsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomInterestsRequest.verify|verify} messages.
                         * @param m MutateCustomInterestsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomInterestsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomInterestsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomInterestsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomInterestsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomInterestsRequest;

                        /**
                         * Verifies a MutateCustomInterestsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomInterestsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomInterestsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomInterestsRequest;

                        /**
                         * Creates a plain object from a MutateCustomInterestsRequest message. Also converts values to other types if specified.
                         * @param m MutateCustomInterestsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomInterestsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomInterestsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CustomInterestOperation. */
                    interface ICustomInterestOperation {

                        /** CustomInterestOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomInterestOperation create */
                        create?: (google.ads.googleads.v8.resources.ICustomInterest|null);

                        /** CustomInterestOperation update */
                        update?: (google.ads.googleads.v8.resources.ICustomInterest|null);
                    }

                    /** Represents a CustomInterestOperation. */
                    class CustomInterestOperation implements ICustomInterestOperation {

                        /**
                         * Constructs a new CustomInterestOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICustomInterestOperation);

                        /** CustomInterestOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomInterestOperation create. */
                        public create?: (google.ads.googleads.v8.resources.ICustomInterest|null);

                        /** CustomInterestOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.ICustomInterestOperation): google.ads.googleads.v8.services.CustomInterestOperation;

                        /**
                         * Encodes the specified CustomInterestOperation message. Does not implicitly {@link google.ads.googleads.v8.services.CustomInterestOperation.verify|verify} messages.
                         * @param m CustomInterestOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICustomInterestOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomInterestOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICustomInterestOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomInterestOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CustomInterestOperation;

                        /**
                         * Verifies a CustomInterestOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomInterestOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomInterestOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CustomInterestOperation;

                        /**
                         * Creates a plain object from a CustomInterestOperation message. Also converts values to other types if specified.
                         * @param m CustomInterestOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CustomInterestOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomInterestOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomInterestsResponse. */
                    interface IMutateCustomInterestsResponse {

                        /** MutateCustomInterestsResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateCustomInterestResult[]|null);
                    }

                    /** Represents a MutateCustomInterestsResponse. */
                    class MutateCustomInterestsResponse implements IMutateCustomInterestsResponse {

                        /**
                         * Constructs a new MutateCustomInterestsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomInterestsResponse);

                        /** MutateCustomInterestsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateCustomInterestsResponse): google.ads.googleads.v8.services.MutateCustomInterestsResponse;

                        /**
                         * Encodes the specified MutateCustomInterestsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomInterestsResponse.verify|verify} messages.
                         * @param m MutateCustomInterestsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomInterestsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomInterestsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomInterestsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomInterestsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomInterestsResponse;

                        /**
                         * Verifies a MutateCustomInterestsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomInterestsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomInterestsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomInterestsResponse;

                        /**
                         * Creates a plain object from a MutateCustomInterestsResponse message. Also converts values to other types if specified.
                         * @param m MutateCustomInterestsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomInterestsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomInterestsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IMutateCustomInterestResult): google.ads.googleads.v8.services.MutateCustomInterestResult;

                        /**
                         * Encodes the specified MutateCustomInterestResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomInterestResult.verify|verify} messages.
                         * @param m MutateCustomInterestResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomInterestResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomInterestResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomInterestResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomInterestResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomInterestResult;

                        /**
                         * Verifies a MutateCustomInterestResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomInterestResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomInterestResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomInterestResult;

                        /**
                         * Creates a plain object from a MutateCustomInterestResult message. Also converts values to other types if specified.
                         * @param m MutateCustomInterestResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomInterestResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomInterestResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetCustomerClientLink.
                         * @param request GetCustomerClientLinkRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CustomerClientLink
                         */
                        public getCustomerClientLink(request: google.ads.googleads.v8.services.IGetCustomerClientLinkRequest, callback: google.ads.googleads.v8.services.CustomerClientLinkService.GetCustomerClientLinkCallback): void;

                        /**
                         * Calls GetCustomerClientLink.
                         * @param request GetCustomerClientLinkRequest message or plain object
                         * @returns Promise
                         */
                        public getCustomerClientLink(request: google.ads.googleads.v8.services.IGetCustomerClientLinkRequest): Promise<google.ads.googleads.v8.resources.CustomerClientLink>;

                        /**
                         * 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.v8.services.IMutateCustomerClientLinkRequest, callback: google.ads.googleads.v8.services.CustomerClientLinkService.MutateCustomerClientLinkCallback): void;

                        /**
                         * Calls MutateCustomerClientLink.
                         * @param request MutateCustomerClientLinkRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomerClientLink(request: google.ads.googleads.v8.services.IMutateCustomerClientLinkRequest): Promise<google.ads.googleads.v8.services.MutateCustomerClientLinkResponse>;
                    }

                    namespace CustomerClientLinkService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomerClientLinkService#getCustomerClientLink}.
                         * @param error Error, if any
                         * @param [response] CustomerClientLink
                         */
                        type GetCustomerClientLinkCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CustomerClientLink) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomerClientLinkService#mutateCustomerClientLink}.
                         * @param error Error, if any
                         * @param [response] MutateCustomerClientLinkResponse
                         */
                        type MutateCustomerClientLinkCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateCustomerClientLinkResponse) => void;
                    }

                    /** Properties of a GetCustomerClientLinkRequest. */
                    interface IGetCustomerClientLinkRequest {

                        /** GetCustomerClientLinkRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCustomerClientLinkRequest. */
                    class GetCustomerClientLinkRequest implements IGetCustomerClientLinkRequest {

                        /**
                         * Constructs a new GetCustomerClientLinkRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCustomerClientLinkRequest);

                        /** GetCustomerClientLinkRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCustomerClientLinkRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCustomerClientLinkRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCustomerClientLinkRequest): google.ads.googleads.v8.services.GetCustomerClientLinkRequest;

                        /**
                         * Encodes the specified GetCustomerClientLinkRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomerClientLinkRequest.verify|verify} messages.
                         * @param m GetCustomerClientLinkRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCustomerClientLinkRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCustomerClientLinkRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomerClientLinkRequest.verify|verify} messages.
                         * @param message GetCustomerClientLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCustomerClientLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCustomerClientLinkRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCustomerClientLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCustomerClientLinkRequest;

                        /**
                         * Decodes a GetCustomerClientLinkRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCustomerClientLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCustomerClientLinkRequest;

                        /**
                         * Verifies a GetCustomerClientLinkRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCustomerClientLinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCustomerClientLinkRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCustomerClientLinkRequest;

                        /**
                         * Creates a plain object from a GetCustomerClientLinkRequest message. Also converts values to other types if specified.
                         * @param m GetCustomerClientLinkRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCustomerClientLinkRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCustomerClientLinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomerClientLinkRequest. */
                    interface IMutateCustomerClientLinkRequest {

                        /** MutateCustomerClientLinkRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomerClientLinkRequest operation */
                        operation?: (google.ads.googleads.v8.services.ICustomerClientLinkOperation|null);

                        /** MutateCustomerClientLinkRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateCustomerClientLinkRequest. */
                    class MutateCustomerClientLinkRequest implements IMutateCustomerClientLinkRequest {

                        /**
                         * Constructs a new MutateCustomerClientLinkRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomerClientLinkRequest);

                        /** MutateCustomerClientLinkRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomerClientLinkRequest operation. */
                        public operation?: (google.ads.googleads.v8.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.v8.services.IMutateCustomerClientLinkRequest): google.ads.googleads.v8.services.MutateCustomerClientLinkRequest;

                        /**
                         * Encodes the specified MutateCustomerClientLinkRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerClientLinkRequest.verify|verify} messages.
                         * @param m MutateCustomerClientLinkRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerClientLinkRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerClientLinkRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomerClientLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerClientLinkRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomerClientLinkRequest;

                        /**
                         * Verifies a MutateCustomerClientLinkRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerClientLinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerClientLinkRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerClientLinkRequest;

                        /**
                         * Creates a plain object from a MutateCustomerClientLinkRequest message. Also converts values to other types if specified.
                         * @param m MutateCustomerClientLinkRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerClientLinkRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerClientLinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CustomerClientLinkOperation. */
                    interface ICustomerClientLinkOperation {

                        /** CustomerClientLinkOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomerClientLinkOperation create */
                        create?: (google.ads.googleads.v8.resources.ICustomerClientLink|null);

                        /** CustomerClientLinkOperation update */
                        update?: (google.ads.googleads.v8.resources.ICustomerClientLink|null);
                    }

                    /** Represents a CustomerClientLinkOperation. */
                    class CustomerClientLinkOperation implements ICustomerClientLinkOperation {

                        /**
                         * Constructs a new CustomerClientLinkOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICustomerClientLinkOperation);

                        /** CustomerClientLinkOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomerClientLinkOperation create. */
                        public create?: (google.ads.googleads.v8.resources.ICustomerClientLink|null);

                        /** CustomerClientLinkOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.ICustomerClientLinkOperation): google.ads.googleads.v8.services.CustomerClientLinkOperation;

                        /**
                         * Encodes the specified CustomerClientLinkOperation message. Does not implicitly {@link google.ads.googleads.v8.services.CustomerClientLinkOperation.verify|verify} messages.
                         * @param m CustomerClientLinkOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICustomerClientLinkOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerClientLinkOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICustomerClientLinkOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerClientLinkOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CustomerClientLinkOperation;

                        /**
                         * Verifies a CustomerClientLinkOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerClientLinkOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerClientLinkOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CustomerClientLinkOperation;

                        /**
                         * Creates a plain object from a CustomerClientLinkOperation message. Also converts values to other types if specified.
                         * @param m CustomerClientLinkOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CustomerClientLinkOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerClientLinkOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomerClientLinkResponse. */
                    interface IMutateCustomerClientLinkResponse {

                        /** MutateCustomerClientLinkResponse result */
                        result?: (google.ads.googleads.v8.services.IMutateCustomerClientLinkResult|null);
                    }

                    /** Represents a MutateCustomerClientLinkResponse. */
                    class MutateCustomerClientLinkResponse implements IMutateCustomerClientLinkResponse {

                        /**
                         * Constructs a new MutateCustomerClientLinkResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomerClientLinkResponse);

                        /** MutateCustomerClientLinkResponse result. */
                        public result?: (google.ads.googleads.v8.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.v8.services.IMutateCustomerClientLinkResponse): google.ads.googleads.v8.services.MutateCustomerClientLinkResponse;

                        /**
                         * Encodes the specified MutateCustomerClientLinkResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerClientLinkResponse.verify|verify} messages.
                         * @param m MutateCustomerClientLinkResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerClientLinkResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerClientLinkResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomerClientLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerClientLinkResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomerClientLinkResponse;

                        /**
                         * Verifies a MutateCustomerClientLinkResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerClientLinkResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerClientLinkResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerClientLinkResponse;

                        /**
                         * Creates a plain object from a MutateCustomerClientLinkResponse message. Also converts values to other types if specified.
                         * @param m MutateCustomerClientLinkResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerClientLinkResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerClientLinkResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IMutateCustomerClientLinkResult): google.ads.googleads.v8.services.MutateCustomerClientLinkResult;

                        /**
                         * Encodes the specified MutateCustomerClientLinkResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerClientLinkResult.verify|verify} messages.
                         * @param m MutateCustomerClientLinkResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerClientLinkResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerClientLinkResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomerClientLinkResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerClientLinkResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomerClientLinkResult;

                        /**
                         * Verifies a MutateCustomerClientLinkResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerClientLinkResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerClientLinkResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerClientLinkResult;

                        /**
                         * Creates a plain object from a MutateCustomerClientLinkResult message. Also converts values to other types if specified.
                         * @param m MutateCustomerClientLinkResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerClientLinkResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerClientLinkResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a CustomerClientService */
                    class CustomerClientService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new CustomerClientService 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 CustomerClientService 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): CustomerClientService;

                        /**
                         * Calls GetCustomerClient.
                         * @param request GetCustomerClientRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CustomerClient
                         */
                        public getCustomerClient(request: google.ads.googleads.v8.services.IGetCustomerClientRequest, callback: google.ads.googleads.v8.services.CustomerClientService.GetCustomerClientCallback): void;

                        /**
                         * Calls GetCustomerClient.
                         * @param request GetCustomerClientRequest message or plain object
                         * @returns Promise
                         */
                        public getCustomerClient(request: google.ads.googleads.v8.services.IGetCustomerClientRequest): Promise<google.ads.googleads.v8.resources.CustomerClient>;
                    }

                    namespace CustomerClientService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomerClientService#getCustomerClient}.
                         * @param error Error, if any
                         * @param [response] CustomerClient
                         */
                        type GetCustomerClientCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CustomerClient) => void;
                    }

                    /** Properties of a GetCustomerClientRequest. */
                    interface IGetCustomerClientRequest {

                        /** GetCustomerClientRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCustomerClientRequest. */
                    class GetCustomerClientRequest implements IGetCustomerClientRequest {

                        /**
                         * Constructs a new GetCustomerClientRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCustomerClientRequest);

                        /** GetCustomerClientRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCustomerClientRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCustomerClientRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCustomerClientRequest): google.ads.googleads.v8.services.GetCustomerClientRequest;

                        /**
                         * Encodes the specified GetCustomerClientRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomerClientRequest.verify|verify} messages.
                         * @param m GetCustomerClientRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCustomerClientRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCustomerClientRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomerClientRequest.verify|verify} messages.
                         * @param message GetCustomerClientRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCustomerClientRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCustomerClientRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCustomerClientRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCustomerClientRequest;

                        /**
                         * Decodes a GetCustomerClientRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCustomerClientRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCustomerClientRequest;

                        /**
                         * Verifies a GetCustomerClientRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCustomerClientRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCustomerClientRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCustomerClientRequest;

                        /**
                         * Creates a plain object from a GetCustomerClientRequest message. Also converts values to other types if specified.
                         * @param m GetCustomerClientRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCustomerClientRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCustomerClientRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetCustomerManagerLink.
                         * @param request GetCustomerManagerLinkRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CustomerManagerLink
                         */
                        public getCustomerManagerLink(request: google.ads.googleads.v8.services.IGetCustomerManagerLinkRequest, callback: google.ads.googleads.v8.services.CustomerManagerLinkService.GetCustomerManagerLinkCallback): void;

                        /**
                         * Calls GetCustomerManagerLink.
                         * @param request GetCustomerManagerLinkRequest message or plain object
                         * @returns Promise
                         */
                        public getCustomerManagerLink(request: google.ads.googleads.v8.services.IGetCustomerManagerLinkRequest): Promise<google.ads.googleads.v8.resources.CustomerManagerLink>;

                        /**
                         * 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.v8.services.IMutateCustomerManagerLinkRequest, callback: google.ads.googleads.v8.services.CustomerManagerLinkService.MutateCustomerManagerLinkCallback): void;

                        /**
                         * Calls MutateCustomerManagerLink.
                         * @param request MutateCustomerManagerLinkRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomerManagerLink(request: google.ads.googleads.v8.services.IMutateCustomerManagerLinkRequest): Promise<google.ads.googleads.v8.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.v8.services.IMoveManagerLinkRequest, callback: google.ads.googleads.v8.services.CustomerManagerLinkService.MoveManagerLinkCallback): void;

                        /**
                         * Calls MoveManagerLink.
                         * @param request MoveManagerLinkRequest message or plain object
                         * @returns Promise
                         */
                        public moveManagerLink(request: google.ads.googleads.v8.services.IMoveManagerLinkRequest): Promise<google.ads.googleads.v8.services.MoveManagerLinkResponse>;
                    }

                    namespace CustomerManagerLinkService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomerManagerLinkService#getCustomerManagerLink}.
                         * @param error Error, if any
                         * @param [response] CustomerManagerLink
                         */
                        type GetCustomerManagerLinkCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CustomerManagerLink) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomerManagerLinkService#mutateCustomerManagerLink}.
                         * @param error Error, if any
                         * @param [response] MutateCustomerManagerLinkResponse
                         */
                        type MutateCustomerManagerLinkCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateCustomerManagerLinkResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomerManagerLinkService#moveManagerLink}.
                         * @param error Error, if any
                         * @param [response] MoveManagerLinkResponse
                         */
                        type MoveManagerLinkCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MoveManagerLinkResponse) => void;
                    }

                    /** Properties of a GetCustomerManagerLinkRequest. */
                    interface IGetCustomerManagerLinkRequest {

                        /** GetCustomerManagerLinkRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCustomerManagerLinkRequest. */
                    class GetCustomerManagerLinkRequest implements IGetCustomerManagerLinkRequest {

                        /**
                         * Constructs a new GetCustomerManagerLinkRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCustomerManagerLinkRequest);

                        /** GetCustomerManagerLinkRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCustomerManagerLinkRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCustomerManagerLinkRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCustomerManagerLinkRequest): google.ads.googleads.v8.services.GetCustomerManagerLinkRequest;

                        /**
                         * Encodes the specified GetCustomerManagerLinkRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomerManagerLinkRequest.verify|verify} messages.
                         * @param m GetCustomerManagerLinkRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCustomerManagerLinkRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCustomerManagerLinkRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomerManagerLinkRequest.verify|verify} messages.
                         * @param message GetCustomerManagerLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCustomerManagerLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCustomerManagerLinkRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCustomerManagerLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCustomerManagerLinkRequest;

                        /**
                         * Decodes a GetCustomerManagerLinkRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCustomerManagerLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCustomerManagerLinkRequest;

                        /**
                         * Verifies a GetCustomerManagerLinkRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCustomerManagerLinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCustomerManagerLinkRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCustomerManagerLinkRequest;

                        /**
                         * Creates a plain object from a GetCustomerManagerLinkRequest message. Also converts values to other types if specified.
                         * @param m GetCustomerManagerLinkRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCustomerManagerLinkRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCustomerManagerLinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomerManagerLinkRequest. */
                    interface IMutateCustomerManagerLinkRequest {

                        /** MutateCustomerManagerLinkRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomerManagerLinkRequest operations */
                        operations?: (google.ads.googleads.v8.services.ICustomerManagerLinkOperation[]|null);

                        /** MutateCustomerManagerLinkRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateCustomerManagerLinkRequest. */
                    class MutateCustomerManagerLinkRequest implements IMutateCustomerManagerLinkRequest {

                        /**
                         * Constructs a new MutateCustomerManagerLinkRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomerManagerLinkRequest);

                        /** MutateCustomerManagerLinkRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomerManagerLinkRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.services.IMutateCustomerManagerLinkRequest): google.ads.googleads.v8.services.MutateCustomerManagerLinkRequest;

                        /**
                         * Encodes the specified MutateCustomerManagerLinkRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerManagerLinkRequest.verify|verify} messages.
                         * @param m MutateCustomerManagerLinkRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerManagerLinkRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerManagerLinkRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomerManagerLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerManagerLinkRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomerManagerLinkRequest;

                        /**
                         * Verifies a MutateCustomerManagerLinkRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerManagerLinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerManagerLinkRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerManagerLinkRequest;

                        /**
                         * Creates a plain object from a MutateCustomerManagerLinkRequest message. Also converts values to other types if specified.
                         * @param m MutateCustomerManagerLinkRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerManagerLinkRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerManagerLinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IMoveManagerLinkRequest): google.ads.googleads.v8.services.MoveManagerLinkRequest;

                        /**
                         * Encodes the specified MoveManagerLinkRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MoveManagerLinkRequest.verify|verify} messages.
                         * @param m MoveManagerLinkRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMoveManagerLinkRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MoveManagerLinkRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMoveManagerLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MoveManagerLinkRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MoveManagerLinkRequest;

                        /**
                         * Verifies a MoveManagerLinkRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MoveManagerLinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MoveManagerLinkRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MoveManagerLinkRequest;

                        /**
                         * Creates a plain object from a MoveManagerLinkRequest message. Also converts values to other types if specified.
                         * @param m MoveManagerLinkRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MoveManagerLinkRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MoveManagerLinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CustomerManagerLinkOperation. */
                    interface ICustomerManagerLinkOperation {

                        /** CustomerManagerLinkOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomerManagerLinkOperation update */
                        update?: (google.ads.googleads.v8.resources.ICustomerManagerLink|null);
                    }

                    /** Represents a CustomerManagerLinkOperation. */
                    class CustomerManagerLinkOperation implements ICustomerManagerLinkOperation {

                        /**
                         * Constructs a new CustomerManagerLinkOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICustomerManagerLinkOperation);

                        /** CustomerManagerLinkOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomerManagerLinkOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.ICustomerManagerLinkOperation): google.ads.googleads.v8.services.CustomerManagerLinkOperation;

                        /**
                         * Encodes the specified CustomerManagerLinkOperation message. Does not implicitly {@link google.ads.googleads.v8.services.CustomerManagerLinkOperation.verify|verify} messages.
                         * @param m CustomerManagerLinkOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICustomerManagerLinkOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerManagerLinkOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICustomerManagerLinkOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerManagerLinkOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CustomerManagerLinkOperation;

                        /**
                         * Verifies a CustomerManagerLinkOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerManagerLinkOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerManagerLinkOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CustomerManagerLinkOperation;

                        /**
                         * Creates a plain object from a CustomerManagerLinkOperation message. Also converts values to other types if specified.
                         * @param m CustomerManagerLinkOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CustomerManagerLinkOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerManagerLinkOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomerManagerLinkResponse. */
                    interface IMutateCustomerManagerLinkResponse {

                        /** MutateCustomerManagerLinkResponse results */
                        results?: (google.ads.googleads.v8.services.IMutateCustomerManagerLinkResult[]|null);
                    }

                    /** Represents a MutateCustomerManagerLinkResponse. */
                    class MutateCustomerManagerLinkResponse implements IMutateCustomerManagerLinkResponse {

                        /**
                         * Constructs a new MutateCustomerManagerLinkResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomerManagerLinkResponse);

                        /** MutateCustomerManagerLinkResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IMutateCustomerManagerLinkResponse): google.ads.googleads.v8.services.MutateCustomerManagerLinkResponse;

                        /**
                         * Encodes the specified MutateCustomerManagerLinkResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerManagerLinkResponse.verify|verify} messages.
                         * @param m MutateCustomerManagerLinkResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerManagerLinkResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerManagerLinkResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomerManagerLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerManagerLinkResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomerManagerLinkResponse;

                        /**
                         * Verifies a MutateCustomerManagerLinkResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerManagerLinkResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerManagerLinkResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerManagerLinkResponse;

                        /**
                         * Creates a plain object from a MutateCustomerManagerLinkResponse message. Also converts values to other types if specified.
                         * @param m MutateCustomerManagerLinkResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerManagerLinkResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerManagerLinkResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IMoveManagerLinkResponse): google.ads.googleads.v8.services.MoveManagerLinkResponse;

                        /**
                         * Encodes the specified MoveManagerLinkResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MoveManagerLinkResponse.verify|verify} messages.
                         * @param m MoveManagerLinkResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMoveManagerLinkResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MoveManagerLinkResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMoveManagerLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MoveManagerLinkResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MoveManagerLinkResponse;

                        /**
                         * Verifies a MoveManagerLinkResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MoveManagerLinkResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MoveManagerLinkResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MoveManagerLinkResponse;

                        /**
                         * Creates a plain object from a MoveManagerLinkResponse message. Also converts values to other types if specified.
                         * @param m MoveManagerLinkResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MoveManagerLinkResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MoveManagerLinkResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IMutateCustomerManagerLinkResult): google.ads.googleads.v8.services.MutateCustomerManagerLinkResult;

                        /**
                         * Encodes the specified MutateCustomerManagerLinkResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerManagerLinkResult.verify|verify} messages.
                         * @param m MutateCustomerManagerLinkResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerManagerLinkResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerManagerLinkResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomerManagerLinkResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerManagerLinkResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomerManagerLinkResult;

                        /**
                         * Verifies a MutateCustomerManagerLinkResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerManagerLinkResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerManagerLinkResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerManagerLinkResult;

                        /**
                         * Creates a plain object from a MutateCustomerManagerLinkResult message. Also converts values to other types if specified.
                         * @param m MutateCustomerManagerLinkResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerManagerLinkResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerManagerLinkResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetCustomerUserAccessInvitation.
                         * @param request GetCustomerUserAccessInvitationRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CustomerUserAccessInvitation
                         */
                        public getCustomerUserAccessInvitation(request: google.ads.googleads.v8.services.IGetCustomerUserAccessInvitationRequest, callback: google.ads.googleads.v8.services.CustomerUserAccessInvitationService.GetCustomerUserAccessInvitationCallback): void;

                        /**
                         * Calls GetCustomerUserAccessInvitation.
                         * @param request GetCustomerUserAccessInvitationRequest message or plain object
                         * @returns Promise
                         */
                        public getCustomerUserAccessInvitation(request: google.ads.googleads.v8.services.IGetCustomerUserAccessInvitationRequest): Promise<google.ads.googleads.v8.resources.CustomerUserAccessInvitation>;

                        /**
                         * 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.v8.services.IMutateCustomerUserAccessInvitationRequest, callback: google.ads.googleads.v8.services.CustomerUserAccessInvitationService.MutateCustomerUserAccessInvitationCallback): void;

                        /**
                         * Calls MutateCustomerUserAccessInvitation.
                         * @param request MutateCustomerUserAccessInvitationRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomerUserAccessInvitation(request: google.ads.googleads.v8.services.IMutateCustomerUserAccessInvitationRequest): Promise<google.ads.googleads.v8.services.MutateCustomerUserAccessInvitationResponse>;
                    }

                    namespace CustomerUserAccessInvitationService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomerUserAccessInvitationService#getCustomerUserAccessInvitation}.
                         * @param error Error, if any
                         * @param [response] CustomerUserAccessInvitation
                         */
                        type GetCustomerUserAccessInvitationCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CustomerUserAccessInvitation) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomerUserAccessInvitationService#mutateCustomerUserAccessInvitation}.
                         * @param error Error, if any
                         * @param [response] MutateCustomerUserAccessInvitationResponse
                         */
                        type MutateCustomerUserAccessInvitationCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateCustomerUserAccessInvitationResponse) => void;
                    }

                    /** Properties of a GetCustomerUserAccessInvitationRequest. */
                    interface IGetCustomerUserAccessInvitationRequest {

                        /** GetCustomerUserAccessInvitationRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCustomerUserAccessInvitationRequest. */
                    class GetCustomerUserAccessInvitationRequest implements IGetCustomerUserAccessInvitationRequest {

                        /**
                         * Constructs a new GetCustomerUserAccessInvitationRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCustomerUserAccessInvitationRequest);

                        /** GetCustomerUserAccessInvitationRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCustomerUserAccessInvitationRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCustomerUserAccessInvitationRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCustomerUserAccessInvitationRequest): google.ads.googleads.v8.services.GetCustomerUserAccessInvitationRequest;

                        /**
                         * Encodes the specified GetCustomerUserAccessInvitationRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomerUserAccessInvitationRequest.verify|verify} messages.
                         * @param m GetCustomerUserAccessInvitationRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCustomerUserAccessInvitationRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCustomerUserAccessInvitationRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomerUserAccessInvitationRequest.verify|verify} messages.
                         * @param message GetCustomerUserAccessInvitationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCustomerUserAccessInvitationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCustomerUserAccessInvitationRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCustomerUserAccessInvitationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCustomerUserAccessInvitationRequest;

                        /**
                         * Decodes a GetCustomerUserAccessInvitationRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCustomerUserAccessInvitationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCustomerUserAccessInvitationRequest;

                        /**
                         * Verifies a GetCustomerUserAccessInvitationRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCustomerUserAccessInvitationRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCustomerUserAccessInvitationRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCustomerUserAccessInvitationRequest;

                        /**
                         * Creates a plain object from a GetCustomerUserAccessInvitationRequest message. Also converts values to other types if specified.
                         * @param m GetCustomerUserAccessInvitationRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCustomerUserAccessInvitationRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCustomerUserAccessInvitationRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomerUserAccessInvitationRequest. */
                    interface IMutateCustomerUserAccessInvitationRequest {

                        /** MutateCustomerUserAccessInvitationRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomerUserAccessInvitationRequest operation */
                        operation?: (google.ads.googleads.v8.services.ICustomerUserAccessInvitationOperation|null);
                    }

                    /** Represents a MutateCustomerUserAccessInvitationRequest. */
                    class MutateCustomerUserAccessInvitationRequest implements IMutateCustomerUserAccessInvitationRequest {

                        /**
                         * Constructs a new MutateCustomerUserAccessInvitationRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomerUserAccessInvitationRequest);

                        /** MutateCustomerUserAccessInvitationRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomerUserAccessInvitationRequest operation. */
                        public operation?: (google.ads.googleads.v8.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.v8.services.IMutateCustomerUserAccessInvitationRequest): google.ads.googleads.v8.services.MutateCustomerUserAccessInvitationRequest;

                        /**
                         * Encodes the specified MutateCustomerUserAccessInvitationRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerUserAccessInvitationRequest.verify|verify} messages.
                         * @param m MutateCustomerUserAccessInvitationRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerUserAccessInvitationRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerUserAccessInvitationRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomerUserAccessInvitationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerUserAccessInvitationRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomerUserAccessInvitationRequest;

                        /**
                         * Verifies a MutateCustomerUserAccessInvitationRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerUserAccessInvitationRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerUserAccessInvitationRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerUserAccessInvitationRequest;

                        /**
                         * Creates a plain object from a MutateCustomerUserAccessInvitationRequest message. Also converts values to other types if specified.
                         * @param m MutateCustomerUserAccessInvitationRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerUserAccessInvitationRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerUserAccessInvitationRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CustomerUserAccessInvitationOperation. */
                    interface ICustomerUserAccessInvitationOperation {

                        /** CustomerUserAccessInvitationOperation create */
                        create?: (google.ads.googleads.v8.resources.ICustomerUserAccessInvitation|null);

                        /** CustomerUserAccessInvitationOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CustomerUserAccessInvitationOperation. */
                    class CustomerUserAccessInvitationOperation implements ICustomerUserAccessInvitationOperation {

                        /**
                         * Constructs a new CustomerUserAccessInvitationOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICustomerUserAccessInvitationOperation);

                        /** CustomerUserAccessInvitationOperation create. */
                        public create?: (google.ads.googleads.v8.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.v8.services.ICustomerUserAccessInvitationOperation): google.ads.googleads.v8.services.CustomerUserAccessInvitationOperation;

                        /**
                         * Encodes the specified CustomerUserAccessInvitationOperation message. Does not implicitly {@link google.ads.googleads.v8.services.CustomerUserAccessInvitationOperation.verify|verify} messages.
                         * @param m CustomerUserAccessInvitationOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICustomerUserAccessInvitationOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerUserAccessInvitationOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICustomerUserAccessInvitationOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerUserAccessInvitationOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CustomerUserAccessInvitationOperation;

                        /**
                         * Verifies a CustomerUserAccessInvitationOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerUserAccessInvitationOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerUserAccessInvitationOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CustomerUserAccessInvitationOperation;

                        /**
                         * Creates a plain object from a CustomerUserAccessInvitationOperation message. Also converts values to other types if specified.
                         * @param m CustomerUserAccessInvitationOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CustomerUserAccessInvitationOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerUserAccessInvitationOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomerUserAccessInvitationResponse. */
                    interface IMutateCustomerUserAccessInvitationResponse {

                        /** MutateCustomerUserAccessInvitationResponse result */
                        result?: (google.ads.googleads.v8.services.IMutateCustomerUserAccessInvitationResult|null);
                    }

                    /** Represents a MutateCustomerUserAccessInvitationResponse. */
                    class MutateCustomerUserAccessInvitationResponse implements IMutateCustomerUserAccessInvitationResponse {

                        /**
                         * Constructs a new MutateCustomerUserAccessInvitationResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomerUserAccessInvitationResponse);

                        /** MutateCustomerUserAccessInvitationResponse result. */
                        public result?: (google.ads.googleads.v8.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.v8.services.IMutateCustomerUserAccessInvitationResponse): google.ads.googleads.v8.services.MutateCustomerUserAccessInvitationResponse;

                        /**
                         * Encodes the specified MutateCustomerUserAccessInvitationResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerUserAccessInvitationResponse.verify|verify} messages.
                         * @param m MutateCustomerUserAccessInvitationResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerUserAccessInvitationResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerUserAccessInvitationResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomerUserAccessInvitationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerUserAccessInvitationResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomerUserAccessInvitationResponse;

                        /**
                         * Verifies a MutateCustomerUserAccessInvitationResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerUserAccessInvitationResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerUserAccessInvitationResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerUserAccessInvitationResponse;

                        /**
                         * Creates a plain object from a MutateCustomerUserAccessInvitationResponse message. Also converts values to other types if specified.
                         * @param m MutateCustomerUserAccessInvitationResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerUserAccessInvitationResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerUserAccessInvitationResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IMutateCustomerUserAccessInvitationResult): google.ads.googleads.v8.services.MutateCustomerUserAccessInvitationResult;

                        /**
                         * Encodes the specified MutateCustomerUserAccessInvitationResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerUserAccessInvitationResult.verify|verify} messages.
                         * @param m MutateCustomerUserAccessInvitationResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerUserAccessInvitationResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerUserAccessInvitationResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomerUserAccessInvitationResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerUserAccessInvitationResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomerUserAccessInvitationResult;

                        /**
                         * Verifies a MutateCustomerUserAccessInvitationResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerUserAccessInvitationResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerUserAccessInvitationResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerUserAccessInvitationResult;

                        /**
                         * Creates a plain object from a MutateCustomerUserAccessInvitationResult message. Also converts values to other types if specified.
                         * @param m MutateCustomerUserAccessInvitationResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerUserAccessInvitationResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerUserAccessInvitationResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetCustomerUserAccess.
                         * @param request GetCustomerUserAccessRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and CustomerUserAccess
                         */
                        public getCustomerUserAccess(request: google.ads.googleads.v8.services.IGetCustomerUserAccessRequest, callback: google.ads.googleads.v8.services.CustomerUserAccessService.GetCustomerUserAccessCallback): void;

                        /**
                         * Calls GetCustomerUserAccess.
                         * @param request GetCustomerUserAccessRequest message or plain object
                         * @returns Promise
                         */
                        public getCustomerUserAccess(request: google.ads.googleads.v8.services.IGetCustomerUserAccessRequest): Promise<google.ads.googleads.v8.resources.CustomerUserAccess>;

                        /**
                         * 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.v8.services.IMutateCustomerUserAccessRequest, callback: google.ads.googleads.v8.services.CustomerUserAccessService.MutateCustomerUserAccessCallback): void;

                        /**
                         * Calls MutateCustomerUserAccess.
                         * @param request MutateCustomerUserAccessRequest message or plain object
                         * @returns Promise
                         */
                        public mutateCustomerUserAccess(request: google.ads.googleads.v8.services.IMutateCustomerUserAccessRequest): Promise<google.ads.googleads.v8.services.MutateCustomerUserAccessResponse>;
                    }

                    namespace CustomerUserAccessService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomerUserAccessService#getCustomerUserAccess}.
                         * @param error Error, if any
                         * @param [response] CustomerUserAccess
                         */
                        type GetCustomerUserAccessCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.CustomerUserAccess) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.CustomerUserAccessService#mutateCustomerUserAccess}.
                         * @param error Error, if any
                         * @param [response] MutateCustomerUserAccessResponse
                         */
                        type MutateCustomerUserAccessCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateCustomerUserAccessResponse) => void;
                    }

                    /** Properties of a GetCustomerUserAccessRequest. */
                    interface IGetCustomerUserAccessRequest {

                        /** GetCustomerUserAccessRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetCustomerUserAccessRequest. */
                    class GetCustomerUserAccessRequest implements IGetCustomerUserAccessRequest {

                        /**
                         * Constructs a new GetCustomerUserAccessRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetCustomerUserAccessRequest);

                        /** GetCustomerUserAccessRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetCustomerUserAccessRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetCustomerUserAccessRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetCustomerUserAccessRequest): google.ads.googleads.v8.services.GetCustomerUserAccessRequest;

                        /**
                         * Encodes the specified GetCustomerUserAccessRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomerUserAccessRequest.verify|verify} messages.
                         * @param m GetCustomerUserAccessRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetCustomerUserAccessRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetCustomerUserAccessRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetCustomerUserAccessRequest.verify|verify} messages.
                         * @param message GetCustomerUserAccessRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetCustomerUserAccessRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetCustomerUserAccessRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetCustomerUserAccessRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetCustomerUserAccessRequest;

                        /**
                         * Decodes a GetCustomerUserAccessRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetCustomerUserAccessRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetCustomerUserAccessRequest;

                        /**
                         * Verifies a GetCustomerUserAccessRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetCustomerUserAccessRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetCustomerUserAccessRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetCustomerUserAccessRequest;

                        /**
                         * Creates a plain object from a GetCustomerUserAccessRequest message. Also converts values to other types if specified.
                         * @param m GetCustomerUserAccessRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetCustomerUserAccessRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetCustomerUserAccessRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomerUserAccessRequest. */
                    interface IMutateCustomerUserAccessRequest {

                        /** MutateCustomerUserAccessRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateCustomerUserAccessRequest operation */
                        operation?: (google.ads.googleads.v8.services.ICustomerUserAccessOperation|null);
                    }

                    /** Represents a MutateCustomerUserAccessRequest. */
                    class MutateCustomerUserAccessRequest implements IMutateCustomerUserAccessRequest {

                        /**
                         * Constructs a new MutateCustomerUserAccessRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomerUserAccessRequest);

                        /** MutateCustomerUserAccessRequest customer_id. */
                        public customer_id: string;

                        /** MutateCustomerUserAccessRequest operation. */
                        public operation?: (google.ads.googleads.v8.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.v8.services.IMutateCustomerUserAccessRequest): google.ads.googleads.v8.services.MutateCustomerUserAccessRequest;

                        /**
                         * Encodes the specified MutateCustomerUserAccessRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerUserAccessRequest.verify|verify} messages.
                         * @param m MutateCustomerUserAccessRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerUserAccessRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerUserAccessRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomerUserAccessRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerUserAccessRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomerUserAccessRequest;

                        /**
                         * Verifies a MutateCustomerUserAccessRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerUserAccessRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerUserAccessRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerUserAccessRequest;

                        /**
                         * Creates a plain object from a MutateCustomerUserAccessRequest message. Also converts values to other types if specified.
                         * @param m MutateCustomerUserAccessRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerUserAccessRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerUserAccessRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CustomerUserAccessOperation. */
                    interface ICustomerUserAccessOperation {

                        /** CustomerUserAccessOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomerUserAccessOperation update */
                        update?: (google.ads.googleads.v8.resources.ICustomerUserAccess|null);

                        /** CustomerUserAccessOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a CustomerUserAccessOperation. */
                    class CustomerUserAccessOperation implements ICustomerUserAccessOperation {

                        /**
                         * Constructs a new CustomerUserAccessOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICustomerUserAccessOperation);

                        /** CustomerUserAccessOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** CustomerUserAccessOperation update. */
                        public update?: (google.ads.googleads.v8.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.v8.services.ICustomerUserAccessOperation): google.ads.googleads.v8.services.CustomerUserAccessOperation;

                        /**
                         * Encodes the specified CustomerUserAccessOperation message. Does not implicitly {@link google.ads.googleads.v8.services.CustomerUserAccessOperation.verify|verify} messages.
                         * @param m CustomerUserAccessOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICustomerUserAccessOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CustomerUserAccessOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICustomerUserAccessOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CustomerUserAccessOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CustomerUserAccessOperation;

                        /**
                         * Verifies a CustomerUserAccessOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CustomerUserAccessOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CustomerUserAccessOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CustomerUserAccessOperation;

                        /**
                         * Creates a plain object from a CustomerUserAccessOperation message. Also converts values to other types if specified.
                         * @param m CustomerUserAccessOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CustomerUserAccessOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CustomerUserAccessOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateCustomerUserAccessResponse. */
                    interface IMutateCustomerUserAccessResponse {

                        /** MutateCustomerUserAccessResponse result */
                        result?: (google.ads.googleads.v8.services.IMutateCustomerUserAccessResult|null);
                    }

                    /** Represents a MutateCustomerUserAccessResponse. */
                    class MutateCustomerUserAccessResponse implements IMutateCustomerUserAccessResponse {

                        /**
                         * Constructs a new MutateCustomerUserAccessResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateCustomerUserAccessResponse);

                        /** MutateCustomerUserAccessResponse result. */
                        public result?: (google.ads.googleads.v8.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.v8.services.IMutateCustomerUserAccessResponse): google.ads.googleads.v8.services.MutateCustomerUserAccessResponse;

                        /**
                         * Encodes the specified MutateCustomerUserAccessResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerUserAccessResponse.verify|verify} messages.
                         * @param m MutateCustomerUserAccessResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerUserAccessResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerUserAccessResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomerUserAccessResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerUserAccessResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomerUserAccessResponse;

                        /**
                         * Verifies a MutateCustomerUserAccessResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerUserAccessResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerUserAccessResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerUserAccessResponse;

                        /**
                         * Creates a plain object from a MutateCustomerUserAccessResponse message. Also converts values to other types if specified.
                         * @param m MutateCustomerUserAccessResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerUserAccessResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerUserAccessResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IMutateCustomerUserAccessResult): google.ads.googleads.v8.services.MutateCustomerUserAccessResult;

                        /**
                         * Encodes the specified MutateCustomerUserAccessResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateCustomerUserAccessResult.verify|verify} messages.
                         * @param m MutateCustomerUserAccessResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateCustomerUserAccessResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateCustomerUserAccessResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IMutateCustomerUserAccessResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateCustomerUserAccessResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.MutateCustomerUserAccessResult;

                        /**
                         * Verifies a MutateCustomerUserAccessResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateCustomerUserAccessResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateCustomerUserAccessResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateCustomerUserAccessResult;

                        /**
                         * Creates a plain object from a MutateCustomerUserAccessResult message. Also converts values to other types if specified.
                         * @param m MutateCustomerUserAccessResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateCustomerUserAccessResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateCustomerUserAccessResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a DetailPlacementViewService */
                    class DetailPlacementViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new DetailPlacementViewService 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 DetailPlacementViewService 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): DetailPlacementViewService;

                        /**
                         * Calls GetDetailPlacementView.
                         * @param request GetDetailPlacementViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and DetailPlacementView
                         */
                        public getDetailPlacementView(request: google.ads.googleads.v8.services.IGetDetailPlacementViewRequest, callback: google.ads.googleads.v8.services.DetailPlacementViewService.GetDetailPlacementViewCallback): void;

                        /**
                         * Calls GetDetailPlacementView.
                         * @param request GetDetailPlacementViewRequest message or plain object
                         * @returns Promise
                         */
                        public getDetailPlacementView(request: google.ads.googleads.v8.services.IGetDetailPlacementViewRequest): Promise<google.ads.googleads.v8.resources.DetailPlacementView>;
                    }

                    namespace DetailPlacementViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.DetailPlacementViewService#getDetailPlacementView}.
                         * @param error Error, if any
                         * @param [response] DetailPlacementView
                         */
                        type GetDetailPlacementViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.DetailPlacementView) => void;
                    }

                    /** Properties of a GetDetailPlacementViewRequest. */
                    interface IGetDetailPlacementViewRequest {

                        /** GetDetailPlacementViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetDetailPlacementViewRequest. */
                    class GetDetailPlacementViewRequest implements IGetDetailPlacementViewRequest {

                        /**
                         * Constructs a new GetDetailPlacementViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetDetailPlacementViewRequest);

                        /** GetDetailPlacementViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetDetailPlacementViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetDetailPlacementViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetDetailPlacementViewRequest): google.ads.googleads.v8.services.GetDetailPlacementViewRequest;

                        /**
                         * Encodes the specified GetDetailPlacementViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetDetailPlacementViewRequest.verify|verify} messages.
                         * @param m GetDetailPlacementViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetDetailPlacementViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetDetailPlacementViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetDetailPlacementViewRequest.verify|verify} messages.
                         * @param message GetDetailPlacementViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetDetailPlacementViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetDetailPlacementViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetDetailPlacementViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetDetailPlacementViewRequest;

                        /**
                         * Decodes a GetDetailPlacementViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetDetailPlacementViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetDetailPlacementViewRequest;

                        /**
                         * Verifies a GetDetailPlacementViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetDetailPlacementViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetDetailPlacementViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetDetailPlacementViewRequest;

                        /**
                         * Creates a plain object from a GetDetailPlacementViewRequest message. Also converts values to other types if specified.
                         * @param m GetDetailPlacementViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetDetailPlacementViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetDetailPlacementViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a DetailedDemographicService */
                    class DetailedDemographicService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new DetailedDemographicService 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 DetailedDemographicService 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): DetailedDemographicService;

                        /**
                         * Calls GetDetailedDemographic.
                         * @param request GetDetailedDemographicRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and DetailedDemographic
                         */
                        public getDetailedDemographic(request: google.ads.googleads.v8.services.IGetDetailedDemographicRequest, callback: google.ads.googleads.v8.services.DetailedDemographicService.GetDetailedDemographicCallback): void;

                        /**
                         * Calls GetDetailedDemographic.
                         * @param request GetDetailedDemographicRequest message or plain object
                         * @returns Promise
                         */
                        public getDetailedDemographic(request: google.ads.googleads.v8.services.IGetDetailedDemographicRequest): Promise<google.ads.googleads.v8.resources.DetailedDemographic>;
                    }

                    namespace DetailedDemographicService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.DetailedDemographicService#getDetailedDemographic}.
                         * @param error Error, if any
                         * @param [response] DetailedDemographic
                         */
                        type GetDetailedDemographicCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.DetailedDemographic) => void;
                    }

                    /** Properties of a GetDetailedDemographicRequest. */
                    interface IGetDetailedDemographicRequest {

                        /** GetDetailedDemographicRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetDetailedDemographicRequest. */
                    class GetDetailedDemographicRequest implements IGetDetailedDemographicRequest {

                        /**
                         * Constructs a new GetDetailedDemographicRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetDetailedDemographicRequest);

                        /** GetDetailedDemographicRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetDetailedDemographicRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetDetailedDemographicRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetDetailedDemographicRequest): google.ads.googleads.v8.services.GetDetailedDemographicRequest;

                        /**
                         * Encodes the specified GetDetailedDemographicRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetDetailedDemographicRequest.verify|verify} messages.
                         * @param m GetDetailedDemographicRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetDetailedDemographicRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetDetailedDemographicRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetDetailedDemographicRequest.verify|verify} messages.
                         * @param message GetDetailedDemographicRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetDetailedDemographicRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetDetailedDemographicRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetDetailedDemographicRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetDetailedDemographicRequest;

                        /**
                         * Decodes a GetDetailedDemographicRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetDetailedDemographicRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetDetailedDemographicRequest;

                        /**
                         * Verifies a GetDetailedDemographicRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetDetailedDemographicRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetDetailedDemographicRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetDetailedDemographicRequest;

                        /**
                         * Creates a plain object from a GetDetailedDemographicRequest message. Also converts values to other types if specified.
                         * @param m GetDetailedDemographicRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetDetailedDemographicRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetDetailedDemographicRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a DisplayKeywordViewService */
                    class DisplayKeywordViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new DisplayKeywordViewService 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 DisplayKeywordViewService 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): DisplayKeywordViewService;

                        /**
                         * Calls GetDisplayKeywordView.
                         * @param request GetDisplayKeywordViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and DisplayKeywordView
                         */
                        public getDisplayKeywordView(request: google.ads.googleads.v8.services.IGetDisplayKeywordViewRequest, callback: google.ads.googleads.v8.services.DisplayKeywordViewService.GetDisplayKeywordViewCallback): void;

                        /**
                         * Calls GetDisplayKeywordView.
                         * @param request GetDisplayKeywordViewRequest message or plain object
                         * @returns Promise
                         */
                        public getDisplayKeywordView(request: google.ads.googleads.v8.services.IGetDisplayKeywordViewRequest): Promise<google.ads.googleads.v8.resources.DisplayKeywordView>;
                    }

                    namespace DisplayKeywordViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.DisplayKeywordViewService#getDisplayKeywordView}.
                         * @param error Error, if any
                         * @param [response] DisplayKeywordView
                         */
                        type GetDisplayKeywordViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.DisplayKeywordView) => void;
                    }

                    /** Properties of a GetDisplayKeywordViewRequest. */
                    interface IGetDisplayKeywordViewRequest {

                        /** GetDisplayKeywordViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetDisplayKeywordViewRequest. */
                    class GetDisplayKeywordViewRequest implements IGetDisplayKeywordViewRequest {

                        /**
                         * Constructs a new GetDisplayKeywordViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetDisplayKeywordViewRequest);

                        /** GetDisplayKeywordViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetDisplayKeywordViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetDisplayKeywordViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetDisplayKeywordViewRequest): google.ads.googleads.v8.services.GetDisplayKeywordViewRequest;

                        /**
                         * Encodes the specified GetDisplayKeywordViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetDisplayKeywordViewRequest.verify|verify} messages.
                         * @param m GetDisplayKeywordViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetDisplayKeywordViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetDisplayKeywordViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetDisplayKeywordViewRequest.verify|verify} messages.
                         * @param message GetDisplayKeywordViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetDisplayKeywordViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetDisplayKeywordViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetDisplayKeywordViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetDisplayKeywordViewRequest;

                        /**
                         * Decodes a GetDisplayKeywordViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetDisplayKeywordViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetDisplayKeywordViewRequest;

                        /**
                         * Verifies a GetDisplayKeywordViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetDisplayKeywordViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetDisplayKeywordViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetDisplayKeywordViewRequest;

                        /**
                         * Creates a plain object from a GetDisplayKeywordViewRequest message. Also converts values to other types if specified.
                         * @param m GetDisplayKeywordViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetDisplayKeywordViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetDisplayKeywordViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a DistanceViewService */
                    class DistanceViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new DistanceViewService 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 DistanceViewService 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): DistanceViewService;

                        /**
                         * Calls GetDistanceView.
                         * @param request GetDistanceViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and DistanceView
                         */
                        public getDistanceView(request: google.ads.googleads.v8.services.IGetDistanceViewRequest, callback: google.ads.googleads.v8.services.DistanceViewService.GetDistanceViewCallback): void;

                        /**
                         * Calls GetDistanceView.
                         * @param request GetDistanceViewRequest message or plain object
                         * @returns Promise
                         */
                        public getDistanceView(request: google.ads.googleads.v8.services.IGetDistanceViewRequest): Promise<google.ads.googleads.v8.resources.DistanceView>;
                    }

                    namespace DistanceViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.DistanceViewService#getDistanceView}.
                         * @param error Error, if any
                         * @param [response] DistanceView
                         */
                        type GetDistanceViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.DistanceView) => void;
                    }

                    /** Properties of a GetDistanceViewRequest. */
                    interface IGetDistanceViewRequest {

                        /** GetDistanceViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetDistanceViewRequest. */
                    class GetDistanceViewRequest implements IGetDistanceViewRequest {

                        /**
                         * Constructs a new GetDistanceViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetDistanceViewRequest);

                        /** GetDistanceViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetDistanceViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetDistanceViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetDistanceViewRequest): google.ads.googleads.v8.services.GetDistanceViewRequest;

                        /**
                         * Encodes the specified GetDistanceViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetDistanceViewRequest.verify|verify} messages.
                         * @param m GetDistanceViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetDistanceViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetDistanceViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetDistanceViewRequest.verify|verify} messages.
                         * @param message GetDistanceViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetDistanceViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetDistanceViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetDistanceViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetDistanceViewRequest;

                        /**
                         * Decodes a GetDistanceViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetDistanceViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetDistanceViewRequest;

                        /**
                         * Verifies a GetDistanceViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetDistanceViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetDistanceViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetDistanceViewRequest;

                        /**
                         * Creates a plain object from a GetDistanceViewRequest message. Also converts values to other types if specified.
                         * @param m GetDistanceViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetDistanceViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetDistanceViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a DomainCategoryService */
                    class DomainCategoryService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new DomainCategoryService 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 DomainCategoryService 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): DomainCategoryService;

                        /**
                         * Calls GetDomainCategory.
                         * @param request GetDomainCategoryRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and DomainCategory
                         */
                        public getDomainCategory(request: google.ads.googleads.v8.services.IGetDomainCategoryRequest, callback: google.ads.googleads.v8.services.DomainCategoryService.GetDomainCategoryCallback): void;

                        /**
                         * Calls GetDomainCategory.
                         * @param request GetDomainCategoryRequest message or plain object
                         * @returns Promise
                         */
                        public getDomainCategory(request: google.ads.googleads.v8.services.IGetDomainCategoryRequest): Promise<google.ads.googleads.v8.resources.DomainCategory>;
                    }

                    namespace DomainCategoryService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.DomainCategoryService#getDomainCategory}.
                         * @param error Error, if any
                         * @param [response] DomainCategory
                         */
                        type GetDomainCategoryCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.DomainCategory) => void;
                    }

                    /** Properties of a GetDomainCategoryRequest. */
                    interface IGetDomainCategoryRequest {

                        /** GetDomainCategoryRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetDomainCategoryRequest. */
                    class GetDomainCategoryRequest implements IGetDomainCategoryRequest {

                        /**
                         * Constructs a new GetDomainCategoryRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetDomainCategoryRequest);

                        /** GetDomainCategoryRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetDomainCategoryRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetDomainCategoryRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetDomainCategoryRequest): google.ads.googleads.v8.services.GetDomainCategoryRequest;

                        /**
                         * Encodes the specified GetDomainCategoryRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetDomainCategoryRequest.verify|verify} messages.
                         * @param m GetDomainCategoryRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetDomainCategoryRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetDomainCategoryRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetDomainCategoryRequest.verify|verify} messages.
                         * @param message GetDomainCategoryRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetDomainCategoryRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetDomainCategoryRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetDomainCategoryRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetDomainCategoryRequest;

                        /**
                         * Decodes a GetDomainCategoryRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetDomainCategoryRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetDomainCategoryRequest;

                        /**
                         * Verifies a GetDomainCategoryRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetDomainCategoryRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetDomainCategoryRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetDomainCategoryRequest;

                        /**
                         * Creates a plain object from a GetDomainCategoryRequest message. Also converts values to other types if specified.
                         * @param m GetDomainCategoryRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetDomainCategoryRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetDomainCategoryRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a DynamicSearchAdsSearchTermViewService */
                    class DynamicSearchAdsSearchTermViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new DynamicSearchAdsSearchTermViewService 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 DynamicSearchAdsSearchTermViewService 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): DynamicSearchAdsSearchTermViewService;

                        /**
                         * Calls GetDynamicSearchAdsSearchTermView.
                         * @param request GetDynamicSearchAdsSearchTermViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and DynamicSearchAdsSearchTermView
                         */
                        public getDynamicSearchAdsSearchTermView(request: google.ads.googleads.v8.services.IGetDynamicSearchAdsSearchTermViewRequest, callback: google.ads.googleads.v8.services.DynamicSearchAdsSearchTermViewService.GetDynamicSearchAdsSearchTermViewCallback): void;

                        /**
                         * Calls GetDynamicSearchAdsSearchTermView.
                         * @param request GetDynamicSearchAdsSearchTermViewRequest message or plain object
                         * @returns Promise
                         */
                        public getDynamicSearchAdsSearchTermView(request: google.ads.googleads.v8.services.IGetDynamicSearchAdsSearchTermViewRequest): Promise<google.ads.googleads.v8.resources.DynamicSearchAdsSearchTermView>;
                    }

                    namespace DynamicSearchAdsSearchTermViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.DynamicSearchAdsSearchTermViewService#getDynamicSearchAdsSearchTermView}.
                         * @param error Error, if any
                         * @param [response] DynamicSearchAdsSearchTermView
                         */
                        type GetDynamicSearchAdsSearchTermViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.DynamicSearchAdsSearchTermView) => void;
                    }

                    /** Properties of a GetDynamicSearchAdsSearchTermViewRequest. */
                    interface IGetDynamicSearchAdsSearchTermViewRequest {

                        /** GetDynamicSearchAdsSearchTermViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetDynamicSearchAdsSearchTermViewRequest. */
                    class GetDynamicSearchAdsSearchTermViewRequest implements IGetDynamicSearchAdsSearchTermViewRequest {

                        /**
                         * Constructs a new GetDynamicSearchAdsSearchTermViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetDynamicSearchAdsSearchTermViewRequest);

                        /** GetDynamicSearchAdsSearchTermViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetDynamicSearchAdsSearchTermViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetDynamicSearchAdsSearchTermViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetDynamicSearchAdsSearchTermViewRequest): google.ads.googleads.v8.services.GetDynamicSearchAdsSearchTermViewRequest;

                        /**
                         * Encodes the specified GetDynamicSearchAdsSearchTermViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetDynamicSearchAdsSearchTermViewRequest.verify|verify} messages.
                         * @param m GetDynamicSearchAdsSearchTermViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetDynamicSearchAdsSearchTermViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetDynamicSearchAdsSearchTermViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetDynamicSearchAdsSearchTermViewRequest.verify|verify} messages.
                         * @param message GetDynamicSearchAdsSearchTermViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetDynamicSearchAdsSearchTermViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetDynamicSearchAdsSearchTermViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetDynamicSearchAdsSearchTermViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetDynamicSearchAdsSearchTermViewRequest;

                        /**
                         * Decodes a GetDynamicSearchAdsSearchTermViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetDynamicSearchAdsSearchTermViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetDynamicSearchAdsSearchTermViewRequest;

                        /**
                         * Verifies a GetDynamicSearchAdsSearchTermViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetDynamicSearchAdsSearchTermViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetDynamicSearchAdsSearchTermViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetDynamicSearchAdsSearchTermViewRequest;

                        /**
                         * Creates a plain object from a GetDynamicSearchAdsSearchTermViewRequest message. Also converts values to other types if specified.
                         * @param m GetDynamicSearchAdsSearchTermViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetDynamicSearchAdsSearchTermViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetDynamicSearchAdsSearchTermViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents an ExpandedLandingPageViewService */
                    class ExpandedLandingPageViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new ExpandedLandingPageViewService 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 ExpandedLandingPageViewService 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): ExpandedLandingPageViewService;

                        /**
                         * Calls GetExpandedLandingPageView.
                         * @param request GetExpandedLandingPageViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ExpandedLandingPageView
                         */
                        public getExpandedLandingPageView(request: google.ads.googleads.v8.services.IGetExpandedLandingPageViewRequest, callback: google.ads.googleads.v8.services.ExpandedLandingPageViewService.GetExpandedLandingPageViewCallback): void;

                        /**
                         * Calls GetExpandedLandingPageView.
                         * @param request GetExpandedLandingPageViewRequest message or plain object
                         * @returns Promise
                         */
                        public getExpandedLandingPageView(request: google.ads.googleads.v8.services.IGetExpandedLandingPageViewRequest): Promise<google.ads.googleads.v8.resources.ExpandedLandingPageView>;
                    }

                    namespace ExpandedLandingPageViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ExpandedLandingPageViewService#getExpandedLandingPageView}.
                         * @param error Error, if any
                         * @param [response] ExpandedLandingPageView
                         */
                        type GetExpandedLandingPageViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.ExpandedLandingPageView) => void;
                    }

                    /** Properties of a GetExpandedLandingPageViewRequest. */
                    interface IGetExpandedLandingPageViewRequest {

                        /** GetExpandedLandingPageViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetExpandedLandingPageViewRequest. */
                    class GetExpandedLandingPageViewRequest implements IGetExpandedLandingPageViewRequest {

                        /**
                         * Constructs a new GetExpandedLandingPageViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetExpandedLandingPageViewRequest);

                        /** GetExpandedLandingPageViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetExpandedLandingPageViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetExpandedLandingPageViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetExpandedLandingPageViewRequest): google.ads.googleads.v8.services.GetExpandedLandingPageViewRequest;

                        /**
                         * Encodes the specified GetExpandedLandingPageViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetExpandedLandingPageViewRequest.verify|verify} messages.
                         * @param m GetExpandedLandingPageViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetExpandedLandingPageViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetExpandedLandingPageViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetExpandedLandingPageViewRequest.verify|verify} messages.
                         * @param message GetExpandedLandingPageViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetExpandedLandingPageViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetExpandedLandingPageViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetExpandedLandingPageViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetExpandedLandingPageViewRequest;

                        /**
                         * Decodes a GetExpandedLandingPageViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetExpandedLandingPageViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetExpandedLandingPageViewRequest;

                        /**
                         * Verifies a GetExpandedLandingPageViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetExpandedLandingPageViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetExpandedLandingPageViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetExpandedLandingPageViewRequest;

                        /**
                         * Creates a plain object from a GetExpandedLandingPageViewRequest message. Also converts values to other types if specified.
                         * @param m GetExpandedLandingPageViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetExpandedLandingPageViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetExpandedLandingPageViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a FeedPlaceholderViewService */
                    class FeedPlaceholderViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new FeedPlaceholderViewService 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 FeedPlaceholderViewService 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): FeedPlaceholderViewService;

                        /**
                         * Calls GetFeedPlaceholderView.
                         * @param request GetFeedPlaceholderViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and FeedPlaceholderView
                         */
                        public getFeedPlaceholderView(request: google.ads.googleads.v8.services.IGetFeedPlaceholderViewRequest, callback: google.ads.googleads.v8.services.FeedPlaceholderViewService.GetFeedPlaceholderViewCallback): void;

                        /**
                         * Calls GetFeedPlaceholderView.
                         * @param request GetFeedPlaceholderViewRequest message or plain object
                         * @returns Promise
                         */
                        public getFeedPlaceholderView(request: google.ads.googleads.v8.services.IGetFeedPlaceholderViewRequest): Promise<google.ads.googleads.v8.resources.FeedPlaceholderView>;
                    }

                    namespace FeedPlaceholderViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.FeedPlaceholderViewService#getFeedPlaceholderView}.
                         * @param error Error, if any
                         * @param [response] FeedPlaceholderView
                         */
                        type GetFeedPlaceholderViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.FeedPlaceholderView) => void;
                    }

                    /** Properties of a GetFeedPlaceholderViewRequest. */
                    interface IGetFeedPlaceholderViewRequest {

                        /** GetFeedPlaceholderViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetFeedPlaceholderViewRequest. */
                    class GetFeedPlaceholderViewRequest implements IGetFeedPlaceholderViewRequest {

                        /**
                         * Constructs a new GetFeedPlaceholderViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetFeedPlaceholderViewRequest);

                        /** GetFeedPlaceholderViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetFeedPlaceholderViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetFeedPlaceholderViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetFeedPlaceholderViewRequest): google.ads.googleads.v8.services.GetFeedPlaceholderViewRequest;

                        /**
                         * Encodes the specified GetFeedPlaceholderViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetFeedPlaceholderViewRequest.verify|verify} messages.
                         * @param m GetFeedPlaceholderViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetFeedPlaceholderViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetFeedPlaceholderViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetFeedPlaceholderViewRequest.verify|verify} messages.
                         * @param message GetFeedPlaceholderViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetFeedPlaceholderViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetFeedPlaceholderViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetFeedPlaceholderViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetFeedPlaceholderViewRequest;

                        /**
                         * Decodes a GetFeedPlaceholderViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetFeedPlaceholderViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetFeedPlaceholderViewRequest;

                        /**
                         * Verifies a GetFeedPlaceholderViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetFeedPlaceholderViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetFeedPlaceholderViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetFeedPlaceholderViewRequest;

                        /**
                         * Creates a plain object from a GetFeedPlaceholderViewRequest message. Also converts values to other types if specified.
                         * @param m GetFeedPlaceholderViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetFeedPlaceholderViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetFeedPlaceholderViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a GenderViewService */
                    class GenderViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new GenderViewService 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 GenderViewService 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): GenderViewService;

                        /**
                         * Calls GetGenderView.
                         * @param request GetGenderViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GenderView
                         */
                        public getGenderView(request: google.ads.googleads.v8.services.IGetGenderViewRequest, callback: google.ads.googleads.v8.services.GenderViewService.GetGenderViewCallback): void;

                        /**
                         * Calls GetGenderView.
                         * @param request GetGenderViewRequest message or plain object
                         * @returns Promise
                         */
                        public getGenderView(request: google.ads.googleads.v8.services.IGetGenderViewRequest): Promise<google.ads.googleads.v8.resources.GenderView>;
                    }

                    namespace GenderViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.GenderViewService#getGenderView}.
                         * @param error Error, if any
                         * @param [response] GenderView
                         */
                        type GetGenderViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.GenderView) => void;
                    }

                    /** Properties of a GetGenderViewRequest. */
                    interface IGetGenderViewRequest {

                        /** GetGenderViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetGenderViewRequest. */
                    class GetGenderViewRequest implements IGetGenderViewRequest {

                        /**
                         * Constructs a new GetGenderViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetGenderViewRequest);

                        /** GetGenderViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetGenderViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetGenderViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetGenderViewRequest): google.ads.googleads.v8.services.GetGenderViewRequest;

                        /**
                         * Encodes the specified GetGenderViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetGenderViewRequest.verify|verify} messages.
                         * @param m GetGenderViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetGenderViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetGenderViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetGenderViewRequest.verify|verify} messages.
                         * @param message GetGenderViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetGenderViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetGenderViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetGenderViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetGenderViewRequest;

                        /**
                         * Decodes a GetGenderViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetGenderViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetGenderViewRequest;

                        /**
                         * Verifies a GetGenderViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetGenderViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetGenderViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetGenderViewRequest;

                        /**
                         * Creates a plain object from a GetGenderViewRequest message. Also converts values to other types if specified.
                         * @param m GetGenderViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetGenderViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetGenderViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetGeoTargetConstant.
                         * @param request GetGeoTargetConstantRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GeoTargetConstant
                         */
                        public getGeoTargetConstant(request: google.ads.googleads.v8.services.IGetGeoTargetConstantRequest, callback: google.ads.googleads.v8.services.GeoTargetConstantService.GetGeoTargetConstantCallback): void;

                        /**
                         * Calls GetGeoTargetConstant.
                         * @param request GetGeoTargetConstantRequest message or plain object
                         * @returns Promise
                         */
                        public getGeoTargetConstant(request: google.ads.googleads.v8.services.IGetGeoTargetConstantRequest): Promise<google.ads.googleads.v8.resources.GeoTargetConstant>;

                        /**
                         * 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.v8.services.ISuggestGeoTargetConstantsRequest, callback: google.ads.googleads.v8.services.GeoTargetConstantService.SuggestGeoTargetConstantsCallback): void;

                        /**
                         * Calls SuggestGeoTargetConstants.
                         * @param request SuggestGeoTargetConstantsRequest message or plain object
                         * @returns Promise
                         */
                        public suggestGeoTargetConstants(request: google.ads.googleads.v8.services.ISuggestGeoTargetConstantsRequest): Promise<google.ads.googleads.v8.services.SuggestGeoTargetConstantsResponse>;
                    }

                    namespace GeoTargetConstantService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.GeoTargetConstantService#getGeoTargetConstant}.
                         * @param error Error, if any
                         * @param [response] GeoTargetConstant
                         */
                        type GetGeoTargetConstantCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.GeoTargetConstant) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.GeoTargetConstantService#suggestGeoTargetConstants}.
                         * @param error Error, if any
                         * @param [response] SuggestGeoTargetConstantsResponse
                         */
                        type SuggestGeoTargetConstantsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.SuggestGeoTargetConstantsResponse) => void;
                    }

                    /** Properties of a GetGeoTargetConstantRequest. */
                    interface IGetGeoTargetConstantRequest {

                        /** GetGeoTargetConstantRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetGeoTargetConstantRequest. */
                    class GetGeoTargetConstantRequest implements IGetGeoTargetConstantRequest {

                        /**
                         * Constructs a new GetGeoTargetConstantRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetGeoTargetConstantRequest);

                        /** GetGeoTargetConstantRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetGeoTargetConstantRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetGeoTargetConstantRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetGeoTargetConstantRequest): google.ads.googleads.v8.services.GetGeoTargetConstantRequest;

                        /**
                         * Encodes the specified GetGeoTargetConstantRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetGeoTargetConstantRequest.verify|verify} messages.
                         * @param m GetGeoTargetConstantRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetGeoTargetConstantRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetGeoTargetConstantRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetGeoTargetConstantRequest.verify|verify} messages.
                         * @param message GetGeoTargetConstantRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetGeoTargetConstantRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetGeoTargetConstantRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetGeoTargetConstantRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetGeoTargetConstantRequest;

                        /**
                         * Decodes a GetGeoTargetConstantRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetGeoTargetConstantRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetGeoTargetConstantRequest;

                        /**
                         * Verifies a GetGeoTargetConstantRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetGeoTargetConstantRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetGeoTargetConstantRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetGeoTargetConstantRequest;

                        /**
                         * Creates a plain object from a GetGeoTargetConstantRequest message. Also converts values to other types if specified.
                         * @param m GetGeoTargetConstantRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetGeoTargetConstantRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetGeoTargetConstantRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.services.SuggestGeoTargetConstantsRequest.ILocationNames|null);

                        /** SuggestGeoTargetConstantsRequest geo_targets */
                        geo_targets?: (google.ads.googleads.v8.services.SuggestGeoTargetConstantsRequest.IGeoTargets|null);
                    }

                    /** Represents a SuggestGeoTargetConstantsRequest. */
                    class SuggestGeoTargetConstantsRequest implements ISuggestGeoTargetConstantsRequest {

                        /**
                         * Constructs a new SuggestGeoTargetConstantsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.SuggestGeoTargetConstantsRequest.ILocationNames|null);

                        /** SuggestGeoTargetConstantsRequest geo_targets. */
                        public geo_targets?: (google.ads.googleads.v8.services.SuggestGeoTargetConstantsRequest.IGeoTargets|null);

                        /** SuggestGeoTargetConstantsRequest _locale. */
                        public _locale?: "locale";

                        /** SuggestGeoTargetConstantsRequest _country_code. */
                        public _country_code?: "country_code";

                        /** 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.v8.services.ISuggestGeoTargetConstantsRequest): google.ads.googleads.v8.services.SuggestGeoTargetConstantsRequest;

                        /**
                         * Encodes the specified SuggestGeoTargetConstantsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.SuggestGeoTargetConstantsRequest.verify|verify} messages.
                         * @param m SuggestGeoTargetConstantsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ISuggestGeoTargetConstantsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SuggestGeoTargetConstantsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ISuggestGeoTargetConstantsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SuggestGeoTargetConstantsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.SuggestGeoTargetConstantsRequest;

                        /**
                         * Verifies a SuggestGeoTargetConstantsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SuggestGeoTargetConstantsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SuggestGeoTargetConstantsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.SuggestGeoTargetConstantsRequest;

                        /**
                         * Creates a plain object from a SuggestGeoTargetConstantsRequest message. Also converts values to other types if specified.
                         * @param m SuggestGeoTargetConstantsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.SuggestGeoTargetConstantsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SuggestGeoTargetConstantsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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.v8.services.SuggestGeoTargetConstantsRequest.ILocationNames): google.ads.googleads.v8.services.SuggestGeoTargetConstantsRequest.LocationNames;

                            /**
                             * Encodes the specified LocationNames message. Does not implicitly {@link google.ads.googleads.v8.services.SuggestGeoTargetConstantsRequest.LocationNames.verify|verify} messages.
                             * @param m LocationNames message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.services.SuggestGeoTargetConstantsRequest.ILocationNames, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified LocationNames message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.SuggestGeoTargetConstantsRequest.ILocationNames, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a LocationNames message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.SuggestGeoTargetConstantsRequest.LocationNames;

                            /**
                             * Verifies a LocationNames message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a LocationNames message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns LocationNames
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.SuggestGeoTargetConstantsRequest.LocationNames;

                            /**
                             * Creates a plain object from a LocationNames message. Also converts values to other types if specified.
                             * @param m LocationNames
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.services.SuggestGeoTargetConstantsRequest.LocationNames, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this LocationNames to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** 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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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.v8.services.SuggestGeoTargetConstantsRequest.IGeoTargets): google.ads.googleads.v8.services.SuggestGeoTargetConstantsRequest.GeoTargets;

                            /**
                             * Encodes the specified GeoTargets message. Does not implicitly {@link google.ads.googleads.v8.services.SuggestGeoTargetConstantsRequest.GeoTargets.verify|verify} messages.
                             * @param m GeoTargets message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.services.SuggestGeoTargetConstantsRequest.IGeoTargets, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified GeoTargets message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.SuggestGeoTargetConstantsRequest.IGeoTargets, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a GeoTargets message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.SuggestGeoTargetConstantsRequest.GeoTargets;

                            /**
                             * Verifies a GeoTargets message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a GeoTargets message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns GeoTargets
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.SuggestGeoTargetConstantsRequest.GeoTargets;

                            /**
                             * Creates a plain object from a GeoTargets message. Also converts values to other types if specified.
                             * @param m GeoTargets
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.services.SuggestGeoTargetConstantsRequest.GeoTargets, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this GeoTargets to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }
                    }

                    /** Properties of a SuggestGeoTargetConstantsResponse. */
                    interface ISuggestGeoTargetConstantsResponse {

                        /** SuggestGeoTargetConstantsResponse geo_target_constant_suggestions */
                        geo_target_constant_suggestions?: (google.ads.googleads.v8.services.IGeoTargetConstantSuggestion[]|null);
                    }

                    /** Represents a SuggestGeoTargetConstantsResponse. */
                    class SuggestGeoTargetConstantsResponse implements ISuggestGeoTargetConstantsResponse {

                        /**
                         * Constructs a new SuggestGeoTargetConstantsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ISuggestGeoTargetConstantsResponse);

                        /** SuggestGeoTargetConstantsResponse geo_target_constant_suggestions. */
                        public geo_target_constant_suggestions: google.ads.googleads.v8.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.v8.services.ISuggestGeoTargetConstantsResponse): google.ads.googleads.v8.services.SuggestGeoTargetConstantsResponse;

                        /**
                         * Encodes the specified SuggestGeoTargetConstantsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.SuggestGeoTargetConstantsResponse.verify|verify} messages.
                         * @param m SuggestGeoTargetConstantsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ISuggestGeoTargetConstantsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SuggestGeoTargetConstantsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ISuggestGeoTargetConstantsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SuggestGeoTargetConstantsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.SuggestGeoTargetConstantsResponse;

                        /**
                         * Verifies a SuggestGeoTargetConstantsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SuggestGeoTargetConstantsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SuggestGeoTargetConstantsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.SuggestGeoTargetConstantsResponse;

                        /**
                         * Creates a plain object from a SuggestGeoTargetConstantsResponse message. Also converts values to other types if specified.
                         * @param m SuggestGeoTargetConstantsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.SuggestGeoTargetConstantsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SuggestGeoTargetConstantsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.resources.IGeoTargetConstant|null);

                        /** GeoTargetConstantSuggestion geo_target_constant_parents */
                        geo_target_constant_parents?: (google.ads.googleads.v8.resources.IGeoTargetConstant[]|null);
                    }

                    /** Represents a GeoTargetConstantSuggestion. */
                    class GeoTargetConstantSuggestion implements IGeoTargetConstantSuggestion {

                        /**
                         * Constructs a new GeoTargetConstantSuggestion.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.resources.IGeoTargetConstant|null);

                        /** GeoTargetConstantSuggestion geo_target_constant_parents. */
                        public geo_target_constant_parents: google.ads.googleads.v8.resources.IGeoTargetConstant[];

                        /** GeoTargetConstantSuggestion _locale. */
                        public _locale?: "locale";

                        /** GeoTargetConstantSuggestion _reach. */
                        public _reach?: "reach";

                        /** GeoTargetConstantSuggestion _search_term. */
                        public _search_term?: "search_term";

                        /**
                         * Creates a new GeoTargetConstantSuggestion instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GeoTargetConstantSuggestion instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGeoTargetConstantSuggestion): google.ads.googleads.v8.services.GeoTargetConstantSuggestion;

                        /**
                         * Encodes the specified GeoTargetConstantSuggestion message. Does not implicitly {@link google.ads.googleads.v8.services.GeoTargetConstantSuggestion.verify|verify} messages.
                         * @param m GeoTargetConstantSuggestion message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGeoTargetConstantSuggestion, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GeoTargetConstantSuggestion message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IGeoTargetConstantSuggestion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GeoTargetConstantSuggestion message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.GeoTargetConstantSuggestion;

                        /**
                         * Verifies a GeoTargetConstantSuggestion message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GeoTargetConstantSuggestion message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GeoTargetConstantSuggestion
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GeoTargetConstantSuggestion;

                        /**
                         * Creates a plain object from a GeoTargetConstantSuggestion message. Also converts values to other types if specified.
                         * @param m GeoTargetConstantSuggestion
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GeoTargetConstantSuggestion, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GeoTargetConstantSuggestion to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a GeographicViewService */
                    class GeographicViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new GeographicViewService 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 GeographicViewService 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): GeographicViewService;

                        /**
                         * Calls GetGeographicView.
                         * @param request GetGeographicViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GeographicView
                         */
                        public getGeographicView(request: google.ads.googleads.v8.services.IGetGeographicViewRequest, callback: google.ads.googleads.v8.services.GeographicViewService.GetGeographicViewCallback): void;

                        /**
                         * Calls GetGeographicView.
                         * @param request GetGeographicViewRequest message or plain object
                         * @returns Promise
                         */
                        public getGeographicView(request: google.ads.googleads.v8.services.IGetGeographicViewRequest): Promise<google.ads.googleads.v8.resources.GeographicView>;
                    }

                    namespace GeographicViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.GeographicViewService#getGeographicView}.
                         * @param error Error, if any
                         * @param [response] GeographicView
                         */
                        type GetGeographicViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.GeographicView) => void;
                    }

                    /** Properties of a GetGeographicViewRequest. */
                    interface IGetGeographicViewRequest {

                        /** GetGeographicViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetGeographicViewRequest. */
                    class GetGeographicViewRequest implements IGetGeographicViewRequest {

                        /**
                         * Constructs a new GetGeographicViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetGeographicViewRequest);

                        /** GetGeographicViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetGeographicViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetGeographicViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetGeographicViewRequest): google.ads.googleads.v8.services.GetGeographicViewRequest;

                        /**
                         * Encodes the specified GetGeographicViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetGeographicViewRequest.verify|verify} messages.
                         * @param m GetGeographicViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetGeographicViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetGeographicViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetGeographicViewRequest.verify|verify} messages.
                         * @param message GetGeographicViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetGeographicViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetGeographicViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetGeographicViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetGeographicViewRequest;

                        /**
                         * Decodes a GetGeographicViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetGeographicViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetGeographicViewRequest;

                        /**
                         * Verifies a GetGeographicViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetGeographicViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetGeographicViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetGeographicViewRequest;

                        /**
                         * Creates a plain object from a GetGeographicViewRequest message. Also converts values to other types if specified.
                         * @param m GetGeographicViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetGeographicViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetGeographicViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.services.IGetGoogleAdsFieldRequest, callback: google.ads.googleads.v8.services.GoogleAdsFieldService.GetGoogleAdsFieldCallback): void;

                        /**
                         * Calls GetGoogleAdsField.
                         * @param request GetGoogleAdsFieldRequest message or plain object
                         * @returns Promise
                         */
                        public getGoogleAdsField(request: google.ads.googleads.v8.services.IGetGoogleAdsFieldRequest): Promise<google.ads.googleads.v8.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.v8.services.ISearchGoogleAdsFieldsRequest, callback: google.ads.googleads.v8.services.GoogleAdsFieldService.SearchGoogleAdsFieldsCallback): void;

                        /**
                         * Calls SearchGoogleAdsFields.
                         * @param request SearchGoogleAdsFieldsRequest message or plain object
                         * @returns Promise
                         */
                        public searchGoogleAdsFields(request: google.ads.googleads.v8.services.ISearchGoogleAdsFieldsRequest): Promise<google.ads.googleads.v8.services.SearchGoogleAdsFieldsResponse>;
                    }

                    namespace GoogleAdsFieldService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.GoogleAdsFieldService#getGoogleAdsField}.
                         * @param error Error, if any
                         * @param [response] GoogleAdsField
                         */
                        type GetGoogleAdsFieldCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.GoogleAdsField) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.GoogleAdsFieldService#searchGoogleAdsFields}.
                         * @param error Error, if any
                         * @param [response] SearchGoogleAdsFieldsResponse
                         */
                        type SearchGoogleAdsFieldsCallback = (error: (Error|null), response?: google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IGetGoogleAdsFieldRequest): google.ads.googleads.v8.services.GetGoogleAdsFieldRequest;

                        /**
                         * Encodes the specified GetGoogleAdsFieldRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetGoogleAdsFieldRequest.verify|verify} messages.
                         * @param m GetGoogleAdsFieldRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetGoogleAdsFieldRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetGoogleAdsFieldRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IGetGoogleAdsFieldRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetGoogleAdsFieldRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.GetGoogleAdsFieldRequest;

                        /**
                         * Verifies a GetGoogleAdsFieldRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetGoogleAdsFieldRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetGoogleAdsFieldRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetGoogleAdsFieldRequest;

                        /**
                         * Creates a plain object from a GetGoogleAdsFieldRequest message. Also converts values to other types if specified.
                         * @param m GetGoogleAdsFieldRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetGoogleAdsFieldRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetGoogleAdsFieldRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.ISearchGoogleAdsFieldsRequest): google.ads.googleads.v8.services.SearchGoogleAdsFieldsRequest;

                        /**
                         * Encodes the specified SearchGoogleAdsFieldsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.SearchGoogleAdsFieldsRequest.verify|verify} messages.
                         * @param m SearchGoogleAdsFieldsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ISearchGoogleAdsFieldsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchGoogleAdsFieldsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ISearchGoogleAdsFieldsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchGoogleAdsFieldsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.SearchGoogleAdsFieldsRequest;

                        /**
                         * Verifies a SearchGoogleAdsFieldsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchGoogleAdsFieldsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SearchGoogleAdsFieldsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.SearchGoogleAdsFieldsRequest;

                        /**
                         * Creates a plain object from a SearchGoogleAdsFieldsRequest message. Also converts values to other types if specified.
                         * @param m SearchGoogleAdsFieldsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.SearchGoogleAdsFieldsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchGoogleAdsFieldsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a SearchGoogleAdsFieldsResponse. */
                    interface ISearchGoogleAdsFieldsResponse {

                        /** SearchGoogleAdsFieldsResponse results */
                        results?: (google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ISearchGoogleAdsFieldsResponse);

                        /** SearchGoogleAdsFieldsResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.ISearchGoogleAdsFieldsResponse): google.ads.googleads.v8.services.SearchGoogleAdsFieldsResponse;

                        /**
                         * Encodes the specified SearchGoogleAdsFieldsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.SearchGoogleAdsFieldsResponse.verify|verify} messages.
                         * @param m SearchGoogleAdsFieldsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ISearchGoogleAdsFieldsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchGoogleAdsFieldsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ISearchGoogleAdsFieldsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchGoogleAdsFieldsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.SearchGoogleAdsFieldsResponse;

                        /**
                         * Verifies a SearchGoogleAdsFieldsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SearchGoogleAdsFieldsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SearchGoogleAdsFieldsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.SearchGoogleAdsFieldsResponse;

                        /**
                         * Creates a plain object from a SearchGoogleAdsFieldsResponse message. Also converts values to other types if specified.
                         * @param m SearchGoogleAdsFieldsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.SearchGoogleAdsFieldsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchGoogleAdsFieldsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a GroupPlacementViewService */
                    class GroupPlacementViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new GroupPlacementViewService 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 GroupPlacementViewService 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): GroupPlacementViewService;

                        /**
                         * Calls GetGroupPlacementView.
                         * @param request GetGroupPlacementViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GroupPlacementView
                         */
                        public getGroupPlacementView(request: google.ads.googleads.v8.services.IGetGroupPlacementViewRequest, callback: google.ads.googleads.v8.services.GroupPlacementViewService.GetGroupPlacementViewCallback): void;

                        /**
                         * Calls GetGroupPlacementView.
                         * @param request GetGroupPlacementViewRequest message or plain object
                         * @returns Promise
                         */
                        public getGroupPlacementView(request: google.ads.googleads.v8.services.IGetGroupPlacementViewRequest): Promise<google.ads.googleads.v8.resources.GroupPlacementView>;
                    }

                    namespace GroupPlacementViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.GroupPlacementViewService#getGroupPlacementView}.
                         * @param error Error, if any
                         * @param [response] GroupPlacementView
                         */
                        type GetGroupPlacementViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.GroupPlacementView) => void;
                    }

                    /** Properties of a GetGroupPlacementViewRequest. */
                    interface IGetGroupPlacementViewRequest {

                        /** GetGroupPlacementViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetGroupPlacementViewRequest. */
                    class GetGroupPlacementViewRequest implements IGetGroupPlacementViewRequest {

                        /**
                         * Constructs a new GetGroupPlacementViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetGroupPlacementViewRequest);

                        /** GetGroupPlacementViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetGroupPlacementViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetGroupPlacementViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetGroupPlacementViewRequest): google.ads.googleads.v8.services.GetGroupPlacementViewRequest;

                        /**
                         * Encodes the specified GetGroupPlacementViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetGroupPlacementViewRequest.verify|verify} messages.
                         * @param m GetGroupPlacementViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetGroupPlacementViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetGroupPlacementViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetGroupPlacementViewRequest.verify|verify} messages.
                         * @param message GetGroupPlacementViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetGroupPlacementViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetGroupPlacementViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetGroupPlacementViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetGroupPlacementViewRequest;

                        /**
                         * Decodes a GetGroupPlacementViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetGroupPlacementViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetGroupPlacementViewRequest;

                        /**
                         * Verifies a GetGroupPlacementViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetGroupPlacementViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetGroupPlacementViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetGroupPlacementViewRequest;

                        /**
                         * Creates a plain object from a GetGroupPlacementViewRequest message. Also converts values to other types if specified.
                         * @param m GetGroupPlacementViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetGroupPlacementViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetGroupPlacementViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a HotelGroupViewService */
                    class HotelGroupViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new HotelGroupViewService 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 HotelGroupViewService 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): HotelGroupViewService;

                        /**
                         * Calls GetHotelGroupView.
                         * @param request GetHotelGroupViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and HotelGroupView
                         */
                        public getHotelGroupView(request: google.ads.googleads.v8.services.IGetHotelGroupViewRequest, callback: google.ads.googleads.v8.services.HotelGroupViewService.GetHotelGroupViewCallback): void;

                        /**
                         * Calls GetHotelGroupView.
                         * @param request GetHotelGroupViewRequest message or plain object
                         * @returns Promise
                         */
                        public getHotelGroupView(request: google.ads.googleads.v8.services.IGetHotelGroupViewRequest): Promise<google.ads.googleads.v8.resources.HotelGroupView>;
                    }

                    namespace HotelGroupViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.HotelGroupViewService#getHotelGroupView}.
                         * @param error Error, if any
                         * @param [response] HotelGroupView
                         */
                        type GetHotelGroupViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.HotelGroupView) => void;
                    }

                    /** Properties of a GetHotelGroupViewRequest. */
                    interface IGetHotelGroupViewRequest {

                        /** GetHotelGroupViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetHotelGroupViewRequest. */
                    class GetHotelGroupViewRequest implements IGetHotelGroupViewRequest {

                        /**
                         * Constructs a new GetHotelGroupViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetHotelGroupViewRequest);

                        /** GetHotelGroupViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetHotelGroupViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetHotelGroupViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetHotelGroupViewRequest): google.ads.googleads.v8.services.GetHotelGroupViewRequest;

                        /**
                         * Encodes the specified GetHotelGroupViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetHotelGroupViewRequest.verify|verify} messages.
                         * @param m GetHotelGroupViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetHotelGroupViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetHotelGroupViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetHotelGroupViewRequest.verify|verify} messages.
                         * @param message GetHotelGroupViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetHotelGroupViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetHotelGroupViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetHotelGroupViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetHotelGroupViewRequest;

                        /**
                         * Decodes a GetHotelGroupViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetHotelGroupViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetHotelGroupViewRequest;

                        /**
                         * Verifies a GetHotelGroupViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetHotelGroupViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetHotelGroupViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetHotelGroupViewRequest;

                        /**
                         * Creates a plain object from a GetHotelGroupViewRequest message. Also converts values to other types if specified.
                         * @param m GetHotelGroupViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetHotelGroupViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetHotelGroupViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a HotelPerformanceViewService */
                    class HotelPerformanceViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new HotelPerformanceViewService 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 HotelPerformanceViewService 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): HotelPerformanceViewService;

                        /**
                         * Calls GetHotelPerformanceView.
                         * @param request GetHotelPerformanceViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and HotelPerformanceView
                         */
                        public getHotelPerformanceView(request: google.ads.googleads.v8.services.IGetHotelPerformanceViewRequest, callback: google.ads.googleads.v8.services.HotelPerformanceViewService.GetHotelPerformanceViewCallback): void;

                        /**
                         * Calls GetHotelPerformanceView.
                         * @param request GetHotelPerformanceViewRequest message or plain object
                         * @returns Promise
                         */
                        public getHotelPerformanceView(request: google.ads.googleads.v8.services.IGetHotelPerformanceViewRequest): Promise<google.ads.googleads.v8.resources.HotelPerformanceView>;
                    }

                    namespace HotelPerformanceViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.HotelPerformanceViewService#getHotelPerformanceView}.
                         * @param error Error, if any
                         * @param [response] HotelPerformanceView
                         */
                        type GetHotelPerformanceViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.HotelPerformanceView) => void;
                    }

                    /** Properties of a GetHotelPerformanceViewRequest. */
                    interface IGetHotelPerformanceViewRequest {

                        /** GetHotelPerformanceViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetHotelPerformanceViewRequest. */
                    class GetHotelPerformanceViewRequest implements IGetHotelPerformanceViewRequest {

                        /**
                         * Constructs a new GetHotelPerformanceViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetHotelPerformanceViewRequest);

                        /** GetHotelPerformanceViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetHotelPerformanceViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetHotelPerformanceViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetHotelPerformanceViewRequest): google.ads.googleads.v8.services.GetHotelPerformanceViewRequest;

                        /**
                         * Encodes the specified GetHotelPerformanceViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetHotelPerformanceViewRequest.verify|verify} messages.
                         * @param m GetHotelPerformanceViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetHotelPerformanceViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetHotelPerformanceViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetHotelPerformanceViewRequest.verify|verify} messages.
                         * @param message GetHotelPerformanceViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetHotelPerformanceViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetHotelPerformanceViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetHotelPerformanceViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetHotelPerformanceViewRequest;

                        /**
                         * Decodes a GetHotelPerformanceViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetHotelPerformanceViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetHotelPerformanceViewRequest;

                        /**
                         * Verifies a GetHotelPerformanceViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetHotelPerformanceViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetHotelPerformanceViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetHotelPerformanceViewRequest;

                        /**
                         * Creates a plain object from a GetHotelPerformanceViewRequest message. Also converts values to other types if specified.
                         * @param m GetHotelPerformanceViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetHotelPerformanceViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetHotelPerformanceViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents an IncomeRangeViewService */
                    class IncomeRangeViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new IncomeRangeViewService 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 IncomeRangeViewService 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): IncomeRangeViewService;

                        /**
                         * Calls GetIncomeRangeView.
                         * @param request GetIncomeRangeViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and IncomeRangeView
                         */
                        public getIncomeRangeView(request: google.ads.googleads.v8.services.IGetIncomeRangeViewRequest, callback: google.ads.googleads.v8.services.IncomeRangeViewService.GetIncomeRangeViewCallback): void;

                        /**
                         * Calls GetIncomeRangeView.
                         * @param request GetIncomeRangeViewRequest message or plain object
                         * @returns Promise
                         */
                        public getIncomeRangeView(request: google.ads.googleads.v8.services.IGetIncomeRangeViewRequest): Promise<google.ads.googleads.v8.resources.IncomeRangeView>;
                    }

                    namespace IncomeRangeViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.IncomeRangeViewService#getIncomeRangeView}.
                         * @param error Error, if any
                         * @param [response] IncomeRangeView
                         */
                        type GetIncomeRangeViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.IncomeRangeView) => void;
                    }

                    /** Properties of a GetIncomeRangeViewRequest. */
                    interface IGetIncomeRangeViewRequest {

                        /** GetIncomeRangeViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetIncomeRangeViewRequest. */
                    class GetIncomeRangeViewRequest implements IGetIncomeRangeViewRequest {

                        /**
                         * Constructs a new GetIncomeRangeViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetIncomeRangeViewRequest);

                        /** GetIncomeRangeViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetIncomeRangeViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetIncomeRangeViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetIncomeRangeViewRequest): google.ads.googleads.v8.services.GetIncomeRangeViewRequest;

                        /**
                         * Encodes the specified GetIncomeRangeViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetIncomeRangeViewRequest.verify|verify} messages.
                         * @param m GetIncomeRangeViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetIncomeRangeViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetIncomeRangeViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetIncomeRangeViewRequest.verify|verify} messages.
                         * @param message GetIncomeRangeViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetIncomeRangeViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetIncomeRangeViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetIncomeRangeViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetIncomeRangeViewRequest;

                        /**
                         * Decodes a GetIncomeRangeViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetIncomeRangeViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetIncomeRangeViewRequest;

                        /**
                         * Verifies a GetIncomeRangeViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetIncomeRangeViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetIncomeRangeViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetIncomeRangeViewRequest;

                        /**
                         * Creates a plain object from a GetIncomeRangeViewRequest message. Also converts values to other types if specified.
                         * @param m GetIncomeRangeViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetIncomeRangeViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetIncomeRangeViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.services.IListInvoicesRequest, callback: google.ads.googleads.v8.services.InvoiceService.ListInvoicesCallback): void;

                        /**
                         * Calls ListInvoices.
                         * @param request ListInvoicesRequest message or plain object
                         * @returns Promise
                         */
                        public listInvoices(request: google.ads.googleads.v8.services.IListInvoicesRequest): Promise<google.ads.googleads.v8.services.ListInvoicesResponse>;
                    }

                    namespace InvoiceService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.InvoiceService#listInvoices}.
                         * @param error Error, if any
                         * @param [response] ListInvoicesResponse
                         */
                        type ListInvoicesCallback = (error: (Error|null), response?: google.ads.googleads.v8.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.v8.enums.MonthOfYearEnum.MonthOfYear|keyof typeof google.ads.googleads.v8.enums.MonthOfYearEnum.MonthOfYear|null);
                    }

                    /** Represents a ListInvoicesRequest. */
                    class ListInvoicesRequest implements IListInvoicesRequest {

                        /**
                         * Constructs a new ListInvoicesRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.MonthOfYearEnum.MonthOfYear|keyof typeof google.ads.googleads.v8.enums.MonthOfYearEnum.MonthOfYear);

                        /**
                         * Creates a new ListInvoicesRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListInvoicesRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IListInvoicesRequest): google.ads.googleads.v8.services.ListInvoicesRequest;

                        /**
                         * Encodes the specified ListInvoicesRequest message. Does not implicitly {@link google.ads.googleads.v8.services.ListInvoicesRequest.verify|verify} messages.
                         * @param m ListInvoicesRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IListInvoicesRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListInvoicesRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IListInvoicesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListInvoicesRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ListInvoicesRequest;

                        /**
                         * Verifies a ListInvoicesRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListInvoicesRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ListInvoicesRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ListInvoicesRequest;

                        /**
                         * Creates a plain object from a ListInvoicesRequest message. Also converts values to other types if specified.
                         * @param m ListInvoicesRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ListInvoicesRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListInvoicesRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ListInvoicesResponse. */
                    interface IListInvoicesResponse {

                        /** ListInvoicesResponse invoices */
                        invoices?: (google.ads.googleads.v8.resources.IInvoice[]|null);
                    }

                    /** Represents a ListInvoicesResponse. */
                    class ListInvoicesResponse implements IListInvoicesResponse {

                        /**
                         * Constructs a new ListInvoicesResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IListInvoicesResponse);

                        /** ListInvoicesResponse invoices. */
                        public invoices: google.ads.googleads.v8.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.v8.services.IListInvoicesResponse): google.ads.googleads.v8.services.ListInvoicesResponse;

                        /**
                         * Encodes the specified ListInvoicesResponse message. Does not implicitly {@link google.ads.googleads.v8.services.ListInvoicesResponse.verify|verify} messages.
                         * @param m ListInvoicesResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IListInvoicesResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListInvoicesResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IListInvoicesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListInvoicesResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ListInvoicesResponse;

                        /**
                         * Verifies a ListInvoicesResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListInvoicesResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ListInvoicesResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ListInvoicesResponse;

                        /**
                         * Creates a plain object from a ListInvoicesResponse message. Also converts values to other types if specified.
                         * @param m ListInvoicesResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ListInvoicesResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListInvoicesResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.services.IGenerateKeywordIdeasRequest, callback: google.ads.googleads.v8.services.KeywordPlanIdeaService.GenerateKeywordIdeasCallback): void;

                        /**
                         * Calls GenerateKeywordIdeas.
                         * @param request GenerateKeywordIdeasRequest message or plain object
                         * @returns Promise
                         */
                        public generateKeywordIdeas(request: google.ads.googleads.v8.services.IGenerateKeywordIdeasRequest): Promise<google.ads.googleads.v8.services.GenerateKeywordIdeaResponse>;
                    }

                    namespace KeywordPlanIdeaService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.KeywordPlanIdeaService#generateKeywordIdeas}.
                         * @param error Error, if any
                         * @param [response] GenerateKeywordIdeaResponse
                         */
                        type GenerateKeywordIdeasCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.GenerateKeywordIdeaResponse) => 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.v8.enums.KeywordPlanNetworkEnum.KeywordPlanNetwork|keyof typeof google.ads.googleads.v8.enums.KeywordPlanNetworkEnum.KeywordPlanNetwork|null);

                        /** GenerateKeywordIdeasRequest keyword_annotation */
                        keyword_annotation?: (google.ads.googleads.v8.enums.KeywordPlanKeywordAnnotationEnum.KeywordPlanKeywordAnnotation[]|null);

                        /** GenerateKeywordIdeasRequest aggregate_metrics */
                        aggregate_metrics?: (google.ads.googleads.v8.common.IKeywordPlanAggregateMetrics|null);

                        /** GenerateKeywordIdeasRequest historical_metrics_options */
                        historical_metrics_options?: (google.ads.googleads.v8.common.IHistoricalMetricsOptions|null);

                        /** GenerateKeywordIdeasRequest keyword_and_url_seed */
                        keyword_and_url_seed?: (google.ads.googleads.v8.services.IKeywordAndUrlSeed|null);

                        /** GenerateKeywordIdeasRequest keyword_seed */
                        keyword_seed?: (google.ads.googleads.v8.services.IKeywordSeed|null);

                        /** GenerateKeywordIdeasRequest url_seed */
                        url_seed?: (google.ads.googleads.v8.services.IUrlSeed|null);

                        /** GenerateKeywordIdeasRequest site_seed */
                        site_seed?: (google.ads.googleads.v8.services.ISiteSeed|null);
                    }

                    /** Represents a GenerateKeywordIdeasRequest. */
                    class GenerateKeywordIdeasRequest implements IGenerateKeywordIdeasRequest {

                        /**
                         * Constructs a new GenerateKeywordIdeasRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.enums.KeywordPlanNetworkEnum.KeywordPlanNetwork|keyof typeof google.ads.googleads.v8.enums.KeywordPlanNetworkEnum.KeywordPlanNetwork);

                        /** GenerateKeywordIdeasRequest keyword_annotation. */
                        public keyword_annotation: google.ads.googleads.v8.enums.KeywordPlanKeywordAnnotationEnum.KeywordPlanKeywordAnnotation[];

                        /** GenerateKeywordIdeasRequest aggregate_metrics. */
                        public aggregate_metrics?: (google.ads.googleads.v8.common.IKeywordPlanAggregateMetrics|null);

                        /** GenerateKeywordIdeasRequest historical_metrics_options. */
                        public historical_metrics_options?: (google.ads.googleads.v8.common.IHistoricalMetricsOptions|null);

                        /** GenerateKeywordIdeasRequest keyword_and_url_seed. */
                        public keyword_and_url_seed?: (google.ads.googleads.v8.services.IKeywordAndUrlSeed|null);

                        /** GenerateKeywordIdeasRequest keyword_seed. */
                        public keyword_seed?: (google.ads.googleads.v8.services.IKeywordSeed|null);

                        /** GenerateKeywordIdeasRequest url_seed. */
                        public url_seed?: (google.ads.googleads.v8.services.IUrlSeed|null);

                        /** GenerateKeywordIdeasRequest site_seed. */
                        public site_seed?: (google.ads.googleads.v8.services.ISiteSeed|null);

                        /** GenerateKeywordIdeasRequest _language. */
                        public _language?: "language";

                        /** 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.v8.services.IGenerateKeywordIdeasRequest): google.ads.googleads.v8.services.GenerateKeywordIdeasRequest;

                        /**
                         * Encodes the specified GenerateKeywordIdeasRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GenerateKeywordIdeasRequest.verify|verify} messages.
                         * @param m GenerateKeywordIdeasRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGenerateKeywordIdeasRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateKeywordIdeasRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IGenerateKeywordIdeasRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateKeywordIdeasRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.GenerateKeywordIdeasRequest;

                        /**
                         * Verifies a GenerateKeywordIdeasRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateKeywordIdeasRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GenerateKeywordIdeasRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GenerateKeywordIdeasRequest;

                        /**
                         * Creates a plain object from a GenerateKeywordIdeasRequest message. Also converts values to other types if specified.
                         * @param m GenerateKeywordIdeasRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GenerateKeywordIdeasRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateKeywordIdeasRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IKeywordAndUrlSeed);

                        /** KeywordAndUrlSeed url. */
                        public url?: (string|null);

                        /** KeywordAndUrlSeed keywords. */
                        public keywords: string[];

                        /** KeywordAndUrlSeed _url. */
                        public _url?: "url";

                        /**
                         * Creates a new KeywordAndUrlSeed instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns KeywordAndUrlSeed instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IKeywordAndUrlSeed): google.ads.googleads.v8.services.KeywordAndUrlSeed;

                        /**
                         * Encodes the specified KeywordAndUrlSeed message. Does not implicitly {@link google.ads.googleads.v8.services.KeywordAndUrlSeed.verify|verify} messages.
                         * @param m KeywordAndUrlSeed message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IKeywordAndUrlSeed, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordAndUrlSeed message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IKeywordAndUrlSeed, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordAndUrlSeed message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.KeywordAndUrlSeed;

                        /**
                         * Verifies a KeywordAndUrlSeed message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordAndUrlSeed message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordAndUrlSeed
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.KeywordAndUrlSeed;

                        /**
                         * Creates a plain object from a KeywordAndUrlSeed message. Also converts values to other types if specified.
                         * @param m KeywordAndUrlSeed
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.KeywordAndUrlSeed, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordAndUrlSeed to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a KeywordSeed. */
                    interface IKeywordSeed {

                        /** KeywordSeed keywords */
                        keywords?: (string[]|null);
                    }

                    /** Represents a KeywordSeed. */
                    class KeywordSeed implements IKeywordSeed {

                        /**
                         * Constructs a new KeywordSeed.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IKeywordSeed): google.ads.googleads.v8.services.KeywordSeed;

                        /**
                         * Encodes the specified KeywordSeed message. Does not implicitly {@link google.ads.googleads.v8.services.KeywordSeed.verify|verify} messages.
                         * @param m KeywordSeed message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IKeywordSeed, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified KeywordSeed message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IKeywordSeed, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a KeywordSeed message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.KeywordSeed;

                        /**
                         * Verifies a KeywordSeed message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a KeywordSeed message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns KeywordSeed
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.KeywordSeed;

                        /**
                         * Creates a plain object from a KeywordSeed message. Also converts values to other types if specified.
                         * @param m KeywordSeed
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.KeywordSeed, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this KeywordSeed to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a SiteSeed. */
                    interface ISiteSeed {

                        /** SiteSeed site */
                        site?: (string|null);
                    }

                    /** Represents a SiteSeed. */
                    class SiteSeed implements ISiteSeed {

                        /**
                         * Constructs a new SiteSeed.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ISiteSeed);

                        /** SiteSeed site. */
                        public site?: (string|null);

                        /** SiteSeed _site. */
                        public _site?: "site";

                        /**
                         * Creates a new SiteSeed instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SiteSeed instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.ISiteSeed): google.ads.googleads.v8.services.SiteSeed;

                        /**
                         * Encodes the specified SiteSeed message. Does not implicitly {@link google.ads.googleads.v8.services.SiteSeed.verify|verify} messages.
                         * @param m SiteSeed message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ISiteSeed, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SiteSeed message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ISiteSeed, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SiteSeed message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.SiteSeed;

                        /**
                         * Verifies a SiteSeed message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SiteSeed message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SiteSeed
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.SiteSeed;

                        /**
                         * Creates a plain object from a SiteSeed message. Also converts values to other types if specified.
                         * @param m SiteSeed
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.SiteSeed, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SiteSeed to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an UrlSeed. */
                    interface IUrlSeed {

                        /** UrlSeed url */
                        url?: (string|null);
                    }

                    /** Represents an UrlSeed. */
                    class UrlSeed implements IUrlSeed {

                        /**
                         * Constructs a new UrlSeed.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IUrlSeed);

                        /** UrlSeed url. */
                        public url?: (string|null);

                        /** UrlSeed _url. */
                        public _url?: "url";

                        /**
                         * Creates a new UrlSeed instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UrlSeed instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IUrlSeed): google.ads.googleads.v8.services.UrlSeed;

                        /**
                         * Encodes the specified UrlSeed message. Does not implicitly {@link google.ads.googleads.v8.services.UrlSeed.verify|verify} messages.
                         * @param m UrlSeed message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IUrlSeed, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UrlSeed message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IUrlSeed, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UrlSeed message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.UrlSeed;

                        /**
                         * Verifies an UrlSeed message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an UrlSeed message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UrlSeed
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.UrlSeed;

                        /**
                         * Creates a plain object from an UrlSeed message. Also converts values to other types if specified.
                         * @param m UrlSeed
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.UrlSeed, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UrlSeed to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a GenerateKeywordIdeaResponse. */
                    interface IGenerateKeywordIdeaResponse {

                        /** GenerateKeywordIdeaResponse results */
                        results?: (google.ads.googleads.v8.services.IGenerateKeywordIdeaResult[]|null);

                        /** GenerateKeywordIdeaResponse aggregate_metric_results */
                        aggregate_metric_results?: (google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGenerateKeywordIdeaResponse);

                        /** GenerateKeywordIdeaResponse results. */
                        public results: google.ads.googleads.v8.services.IGenerateKeywordIdeaResult[];

                        /** GenerateKeywordIdeaResponse aggregate_metric_results. */
                        public aggregate_metric_results?: (google.ads.googleads.v8.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.v8.services.IGenerateKeywordIdeaResponse): google.ads.googleads.v8.services.GenerateKeywordIdeaResponse;

                        /**
                         * Encodes the specified GenerateKeywordIdeaResponse message. Does not implicitly {@link google.ads.googleads.v8.services.GenerateKeywordIdeaResponse.verify|verify} messages.
                         * @param m GenerateKeywordIdeaResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGenerateKeywordIdeaResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateKeywordIdeaResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IGenerateKeywordIdeaResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateKeywordIdeaResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.GenerateKeywordIdeaResponse;

                        /**
                         * Verifies a GenerateKeywordIdeaResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateKeywordIdeaResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GenerateKeywordIdeaResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GenerateKeywordIdeaResponse;

                        /**
                         * Creates a plain object from a GenerateKeywordIdeaResponse message. Also converts values to other types if specified.
                         * @param m GenerateKeywordIdeaResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GenerateKeywordIdeaResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateKeywordIdeaResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a GenerateKeywordIdeaResult. */
                    interface IGenerateKeywordIdeaResult {

                        /** GenerateKeywordIdeaResult text */
                        text?: (string|null);

                        /** GenerateKeywordIdeaResult keyword_idea_metrics */
                        keyword_idea_metrics?: (google.ads.googleads.v8.common.IKeywordPlanHistoricalMetrics|null);

                        /** GenerateKeywordIdeaResult keyword_annotations */
                        keyword_annotations?: (google.ads.googleads.v8.common.IKeywordAnnotations|null);
                    }

                    /** Represents a GenerateKeywordIdeaResult. */
                    class GenerateKeywordIdeaResult implements IGenerateKeywordIdeaResult {

                        /**
                         * Constructs a new GenerateKeywordIdeaResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGenerateKeywordIdeaResult);

                        /** GenerateKeywordIdeaResult text. */
                        public text?: (string|null);

                        /** GenerateKeywordIdeaResult keyword_idea_metrics. */
                        public keyword_idea_metrics?: (google.ads.googleads.v8.common.IKeywordPlanHistoricalMetrics|null);

                        /** GenerateKeywordIdeaResult keyword_annotations. */
                        public keyword_annotations?: (google.ads.googleads.v8.common.IKeywordAnnotations|null);

                        /** GenerateKeywordIdeaResult _text. */
                        public _text?: "text";

                        /**
                         * Creates a new GenerateKeywordIdeaResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateKeywordIdeaResult instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGenerateKeywordIdeaResult): google.ads.googleads.v8.services.GenerateKeywordIdeaResult;

                        /**
                         * Encodes the specified GenerateKeywordIdeaResult message. Does not implicitly {@link google.ads.googleads.v8.services.GenerateKeywordIdeaResult.verify|verify} messages.
                         * @param m GenerateKeywordIdeaResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGenerateKeywordIdeaResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateKeywordIdeaResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IGenerateKeywordIdeaResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateKeywordIdeaResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.GenerateKeywordIdeaResult;

                        /**
                         * Verifies a GenerateKeywordIdeaResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateKeywordIdeaResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GenerateKeywordIdeaResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GenerateKeywordIdeaResult;

                        /**
                         * Creates a plain object from a GenerateKeywordIdeaResult message. Also converts values to other types if specified.
                         * @param m GenerateKeywordIdeaResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GenerateKeywordIdeaResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateKeywordIdeaResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetKeywordThemeConstant.
                         * @param request GetKeywordThemeConstantRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and KeywordThemeConstant
                         */
                        public getKeywordThemeConstant(request: google.ads.googleads.v8.services.IGetKeywordThemeConstantRequest, callback: google.ads.googleads.v8.services.KeywordThemeConstantService.GetKeywordThemeConstantCallback): void;

                        /**
                         * Calls GetKeywordThemeConstant.
                         * @param request GetKeywordThemeConstantRequest message or plain object
                         * @returns Promise
                         */
                        public getKeywordThemeConstant(request: google.ads.googleads.v8.services.IGetKeywordThemeConstantRequest): Promise<google.ads.googleads.v8.resources.KeywordThemeConstant>;

                        /**
                         * 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.v8.services.ISuggestKeywordThemeConstantsRequest, callback: google.ads.googleads.v8.services.KeywordThemeConstantService.SuggestKeywordThemeConstantsCallback): void;

                        /**
                         * Calls SuggestKeywordThemeConstants.
                         * @param request SuggestKeywordThemeConstantsRequest message or plain object
                         * @returns Promise
                         */
                        public suggestKeywordThemeConstants(request: google.ads.googleads.v8.services.ISuggestKeywordThemeConstantsRequest): Promise<google.ads.googleads.v8.services.SuggestKeywordThemeConstantsResponse>;
                    }

                    namespace KeywordThemeConstantService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.KeywordThemeConstantService#getKeywordThemeConstant}.
                         * @param error Error, if any
                         * @param [response] KeywordThemeConstant
                         */
                        type GetKeywordThemeConstantCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.KeywordThemeConstant) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.KeywordThemeConstantService#suggestKeywordThemeConstants}.
                         * @param error Error, if any
                         * @param [response] SuggestKeywordThemeConstantsResponse
                         */
                        type SuggestKeywordThemeConstantsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.SuggestKeywordThemeConstantsResponse) => void;
                    }

                    /** Properties of a GetKeywordThemeConstantRequest. */
                    interface IGetKeywordThemeConstantRequest {

                        /** GetKeywordThemeConstantRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetKeywordThemeConstantRequest. */
                    class GetKeywordThemeConstantRequest implements IGetKeywordThemeConstantRequest {

                        /**
                         * Constructs a new GetKeywordThemeConstantRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetKeywordThemeConstantRequest);

                        /** GetKeywordThemeConstantRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetKeywordThemeConstantRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetKeywordThemeConstantRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetKeywordThemeConstantRequest): google.ads.googleads.v8.services.GetKeywordThemeConstantRequest;

                        /**
                         * Encodes the specified GetKeywordThemeConstantRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetKeywordThemeConstantRequest.verify|verify} messages.
                         * @param m GetKeywordThemeConstantRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetKeywordThemeConstantRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetKeywordThemeConstantRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetKeywordThemeConstantRequest.verify|verify} messages.
                         * @param message GetKeywordThemeConstantRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetKeywordThemeConstantRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetKeywordThemeConstantRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetKeywordThemeConstantRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetKeywordThemeConstantRequest;

                        /**
                         * Decodes a GetKeywordThemeConstantRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetKeywordThemeConstantRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetKeywordThemeConstantRequest;

                        /**
                         * Verifies a GetKeywordThemeConstantRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetKeywordThemeConstantRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetKeywordThemeConstantRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetKeywordThemeConstantRequest;

                        /**
                         * Creates a plain object from a GetKeywordThemeConstantRequest message. Also converts values to other types if specified.
                         * @param m GetKeywordThemeConstantRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetKeywordThemeConstantRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetKeywordThemeConstantRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.ISuggestKeywordThemeConstantsRequest): google.ads.googleads.v8.services.SuggestKeywordThemeConstantsRequest;

                        /**
                         * Encodes the specified SuggestKeywordThemeConstantsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.SuggestKeywordThemeConstantsRequest.verify|verify} messages.
                         * @param m SuggestKeywordThemeConstantsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ISuggestKeywordThemeConstantsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SuggestKeywordThemeConstantsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ISuggestKeywordThemeConstantsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SuggestKeywordThemeConstantsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.SuggestKeywordThemeConstantsRequest;

                        /**
                         * Verifies a SuggestKeywordThemeConstantsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SuggestKeywordThemeConstantsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SuggestKeywordThemeConstantsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.SuggestKeywordThemeConstantsRequest;

                        /**
                         * Creates a plain object from a SuggestKeywordThemeConstantsRequest message. Also converts values to other types if specified.
                         * @param m SuggestKeywordThemeConstantsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.SuggestKeywordThemeConstantsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SuggestKeywordThemeConstantsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a SuggestKeywordThemeConstantsResponse. */
                    interface ISuggestKeywordThemeConstantsResponse {

                        /** SuggestKeywordThemeConstantsResponse keyword_theme_constants */
                        keyword_theme_constants?: (google.ads.googleads.v8.resources.IKeywordThemeConstant[]|null);
                    }

                    /** Represents a SuggestKeywordThemeConstantsResponse. */
                    class SuggestKeywordThemeConstantsResponse implements ISuggestKeywordThemeConstantsResponse {

                        /**
                         * Constructs a new SuggestKeywordThemeConstantsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ISuggestKeywordThemeConstantsResponse);

                        /** SuggestKeywordThemeConstantsResponse keyword_theme_constants. */
                        public keyword_theme_constants: google.ads.googleads.v8.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.v8.services.ISuggestKeywordThemeConstantsResponse): google.ads.googleads.v8.services.SuggestKeywordThemeConstantsResponse;

                        /**
                         * Encodes the specified SuggestKeywordThemeConstantsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.SuggestKeywordThemeConstantsResponse.verify|verify} messages.
                         * @param m SuggestKeywordThemeConstantsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ISuggestKeywordThemeConstantsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SuggestKeywordThemeConstantsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ISuggestKeywordThemeConstantsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SuggestKeywordThemeConstantsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.SuggestKeywordThemeConstantsResponse;

                        /**
                         * Verifies a SuggestKeywordThemeConstantsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SuggestKeywordThemeConstantsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SuggestKeywordThemeConstantsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.SuggestKeywordThemeConstantsResponse;

                        /**
                         * Creates a plain object from a SuggestKeywordThemeConstantsResponse message. Also converts values to other types if specified.
                         * @param m SuggestKeywordThemeConstantsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.SuggestKeywordThemeConstantsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SuggestKeywordThemeConstantsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a KeywordViewService */
                    class KeywordViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new KeywordViewService 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 KeywordViewService 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): KeywordViewService;

                        /**
                         * Calls GetKeywordView.
                         * @param request GetKeywordViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and KeywordView
                         */
                        public getKeywordView(request: google.ads.googleads.v8.services.IGetKeywordViewRequest, callback: google.ads.googleads.v8.services.KeywordViewService.GetKeywordViewCallback): void;

                        /**
                         * Calls GetKeywordView.
                         * @param request GetKeywordViewRequest message or plain object
                         * @returns Promise
                         */
                        public getKeywordView(request: google.ads.googleads.v8.services.IGetKeywordViewRequest): Promise<google.ads.googleads.v8.resources.KeywordView>;
                    }

                    namespace KeywordViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.KeywordViewService#getKeywordView}.
                         * @param error Error, if any
                         * @param [response] KeywordView
                         */
                        type GetKeywordViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.KeywordView) => void;
                    }

                    /** Properties of a GetKeywordViewRequest. */
                    interface IGetKeywordViewRequest {

                        /** GetKeywordViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetKeywordViewRequest. */
                    class GetKeywordViewRequest implements IGetKeywordViewRequest {

                        /**
                         * Constructs a new GetKeywordViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetKeywordViewRequest);

                        /** GetKeywordViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetKeywordViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetKeywordViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetKeywordViewRequest): google.ads.googleads.v8.services.GetKeywordViewRequest;

                        /**
                         * Encodes the specified GetKeywordViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetKeywordViewRequest.verify|verify} messages.
                         * @param m GetKeywordViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetKeywordViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetKeywordViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetKeywordViewRequest.verify|verify} messages.
                         * @param message GetKeywordViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetKeywordViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetKeywordViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetKeywordViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetKeywordViewRequest;

                        /**
                         * Decodes a GetKeywordViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetKeywordViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetKeywordViewRequest;

                        /**
                         * Verifies a GetKeywordViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetKeywordViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetKeywordViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetKeywordViewRequest;

                        /**
                         * Creates a plain object from a GetKeywordViewRequest message. Also converts values to other types if specified.
                         * @param m GetKeywordViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetKeywordViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetKeywordViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a LandingPageViewService */
                    class LandingPageViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new LandingPageViewService 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 LandingPageViewService 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): LandingPageViewService;

                        /**
                         * Calls GetLandingPageView.
                         * @param request GetLandingPageViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and LandingPageView
                         */
                        public getLandingPageView(request: google.ads.googleads.v8.services.IGetLandingPageViewRequest, callback: google.ads.googleads.v8.services.LandingPageViewService.GetLandingPageViewCallback): void;

                        /**
                         * Calls GetLandingPageView.
                         * @param request GetLandingPageViewRequest message or plain object
                         * @returns Promise
                         */
                        public getLandingPageView(request: google.ads.googleads.v8.services.IGetLandingPageViewRequest): Promise<google.ads.googleads.v8.resources.LandingPageView>;
                    }

                    namespace LandingPageViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.LandingPageViewService#getLandingPageView}.
                         * @param error Error, if any
                         * @param [response] LandingPageView
                         */
                        type GetLandingPageViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.LandingPageView) => void;
                    }

                    /** Properties of a GetLandingPageViewRequest. */
                    interface IGetLandingPageViewRequest {

                        /** GetLandingPageViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetLandingPageViewRequest. */
                    class GetLandingPageViewRequest implements IGetLandingPageViewRequest {

                        /**
                         * Constructs a new GetLandingPageViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetLandingPageViewRequest);

                        /** GetLandingPageViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetLandingPageViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetLandingPageViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetLandingPageViewRequest): google.ads.googleads.v8.services.GetLandingPageViewRequest;

                        /**
                         * Encodes the specified GetLandingPageViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetLandingPageViewRequest.verify|verify} messages.
                         * @param m GetLandingPageViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetLandingPageViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetLandingPageViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetLandingPageViewRequest.verify|verify} messages.
                         * @param message GetLandingPageViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetLandingPageViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetLandingPageViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetLandingPageViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetLandingPageViewRequest;

                        /**
                         * Decodes a GetLandingPageViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetLandingPageViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetLandingPageViewRequest;

                        /**
                         * Verifies a GetLandingPageViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetLandingPageViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetLandingPageViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetLandingPageViewRequest;

                        /**
                         * Creates a plain object from a GetLandingPageViewRequest message. Also converts values to other types if specified.
                         * @param m GetLandingPageViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetLandingPageViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetLandingPageViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a LanguageConstantService */
                    class LanguageConstantService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new LanguageConstantService 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 LanguageConstantService 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): LanguageConstantService;

                        /**
                         * Calls GetLanguageConstant.
                         * @param request GetLanguageConstantRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and LanguageConstant
                         */
                        public getLanguageConstant(request: google.ads.googleads.v8.services.IGetLanguageConstantRequest, callback: google.ads.googleads.v8.services.LanguageConstantService.GetLanguageConstantCallback): void;

                        /**
                         * Calls GetLanguageConstant.
                         * @param request GetLanguageConstantRequest message or plain object
                         * @returns Promise
                         */
                        public getLanguageConstant(request: google.ads.googleads.v8.services.IGetLanguageConstantRequest): Promise<google.ads.googleads.v8.resources.LanguageConstant>;
                    }

                    namespace LanguageConstantService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.LanguageConstantService#getLanguageConstant}.
                         * @param error Error, if any
                         * @param [response] LanguageConstant
                         */
                        type GetLanguageConstantCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.LanguageConstant) => void;
                    }

                    /** Properties of a GetLanguageConstantRequest. */
                    interface IGetLanguageConstantRequest {

                        /** GetLanguageConstantRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetLanguageConstantRequest. */
                    class GetLanguageConstantRequest implements IGetLanguageConstantRequest {

                        /**
                         * Constructs a new GetLanguageConstantRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetLanguageConstantRequest);

                        /** GetLanguageConstantRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetLanguageConstantRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetLanguageConstantRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetLanguageConstantRequest): google.ads.googleads.v8.services.GetLanguageConstantRequest;

                        /**
                         * Encodes the specified GetLanguageConstantRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetLanguageConstantRequest.verify|verify} messages.
                         * @param m GetLanguageConstantRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetLanguageConstantRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetLanguageConstantRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetLanguageConstantRequest.verify|verify} messages.
                         * @param message GetLanguageConstantRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetLanguageConstantRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetLanguageConstantRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetLanguageConstantRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetLanguageConstantRequest;

                        /**
                         * Decodes a GetLanguageConstantRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetLanguageConstantRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetLanguageConstantRequest;

                        /**
                         * Verifies a GetLanguageConstantRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetLanguageConstantRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetLanguageConstantRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetLanguageConstantRequest;

                        /**
                         * Creates a plain object from a GetLanguageConstantRequest message. Also converts values to other types if specified.
                         * @param m GetLanguageConstantRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetLanguageConstantRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetLanguageConstantRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a LifeEventService */
                    class LifeEventService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new LifeEventService 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 LifeEventService 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): LifeEventService;

                        /**
                         * Calls GetLifeEvent.
                         * @param request GetLifeEventRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and LifeEvent
                         */
                        public getLifeEvent(request: google.ads.googleads.v8.services.IGetLifeEventRequest, callback: google.ads.googleads.v8.services.LifeEventService.GetLifeEventCallback): void;

                        /**
                         * Calls GetLifeEvent.
                         * @param request GetLifeEventRequest message or plain object
                         * @returns Promise
                         */
                        public getLifeEvent(request: google.ads.googleads.v8.services.IGetLifeEventRequest): Promise<google.ads.googleads.v8.resources.LifeEvent>;
                    }

                    namespace LifeEventService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.LifeEventService#getLifeEvent}.
                         * @param error Error, if any
                         * @param [response] LifeEvent
                         */
                        type GetLifeEventCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.LifeEvent) => void;
                    }

                    /** Properties of a GetLifeEventRequest. */
                    interface IGetLifeEventRequest {

                        /** GetLifeEventRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetLifeEventRequest. */
                    class GetLifeEventRequest implements IGetLifeEventRequest {

                        /**
                         * Constructs a new GetLifeEventRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetLifeEventRequest);

                        /** GetLifeEventRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetLifeEventRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetLifeEventRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetLifeEventRequest): google.ads.googleads.v8.services.GetLifeEventRequest;

                        /**
                         * Encodes the specified GetLifeEventRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetLifeEventRequest.verify|verify} messages.
                         * @param m GetLifeEventRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetLifeEventRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetLifeEventRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetLifeEventRequest.verify|verify} messages.
                         * @param message GetLifeEventRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetLifeEventRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetLifeEventRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetLifeEventRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetLifeEventRequest;

                        /**
                         * Decodes a GetLifeEventRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetLifeEventRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetLifeEventRequest;

                        /**
                         * Verifies a GetLifeEventRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetLifeEventRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetLifeEventRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetLifeEventRequest;

                        /**
                         * Creates a plain object from a GetLifeEventRequest message. Also converts values to other types if specified.
                         * @param m GetLifeEventRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetLifeEventRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetLifeEventRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a LocationViewService */
                    class LocationViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new LocationViewService 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 LocationViewService 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): LocationViewService;

                        /**
                         * Calls GetLocationView.
                         * @param request GetLocationViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and LocationView
                         */
                        public getLocationView(request: google.ads.googleads.v8.services.IGetLocationViewRequest, callback: google.ads.googleads.v8.services.LocationViewService.GetLocationViewCallback): void;

                        /**
                         * Calls GetLocationView.
                         * @param request GetLocationViewRequest message or plain object
                         * @returns Promise
                         */
                        public getLocationView(request: google.ads.googleads.v8.services.IGetLocationViewRequest): Promise<google.ads.googleads.v8.resources.LocationView>;
                    }

                    namespace LocationViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.LocationViewService#getLocationView}.
                         * @param error Error, if any
                         * @param [response] LocationView
                         */
                        type GetLocationViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.LocationView) => void;
                    }

                    /** Properties of a GetLocationViewRequest. */
                    interface IGetLocationViewRequest {

                        /** GetLocationViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetLocationViewRequest. */
                    class GetLocationViewRequest implements IGetLocationViewRequest {

                        /**
                         * Constructs a new GetLocationViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetLocationViewRequest);

                        /** GetLocationViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetLocationViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetLocationViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetLocationViewRequest): google.ads.googleads.v8.services.GetLocationViewRequest;

                        /**
                         * Encodes the specified GetLocationViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetLocationViewRequest.verify|verify} messages.
                         * @param m GetLocationViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetLocationViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetLocationViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetLocationViewRequest.verify|verify} messages.
                         * @param message GetLocationViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetLocationViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetLocationViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetLocationViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetLocationViewRequest;

                        /**
                         * Decodes a GetLocationViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetLocationViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetLocationViewRequest;

                        /**
                         * Verifies a GetLocationViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetLocationViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetLocationViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetLocationViewRequest;

                        /**
                         * Creates a plain object from a GetLocationViewRequest message. Also converts values to other types if specified.
                         * @param m GetLocationViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetLocationViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetLocationViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a ManagedPlacementViewService */
                    class ManagedPlacementViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new ManagedPlacementViewService 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 ManagedPlacementViewService 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): ManagedPlacementViewService;

                        /**
                         * Calls GetManagedPlacementView.
                         * @param request GetManagedPlacementViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ManagedPlacementView
                         */
                        public getManagedPlacementView(request: google.ads.googleads.v8.services.IGetManagedPlacementViewRequest, callback: google.ads.googleads.v8.services.ManagedPlacementViewService.GetManagedPlacementViewCallback): void;

                        /**
                         * Calls GetManagedPlacementView.
                         * @param request GetManagedPlacementViewRequest message or plain object
                         * @returns Promise
                         */
                        public getManagedPlacementView(request: google.ads.googleads.v8.services.IGetManagedPlacementViewRequest): Promise<google.ads.googleads.v8.resources.ManagedPlacementView>;
                    }

                    namespace ManagedPlacementViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ManagedPlacementViewService#getManagedPlacementView}.
                         * @param error Error, if any
                         * @param [response] ManagedPlacementView
                         */
                        type GetManagedPlacementViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.ManagedPlacementView) => void;
                    }

                    /** Properties of a GetManagedPlacementViewRequest. */
                    interface IGetManagedPlacementViewRequest {

                        /** GetManagedPlacementViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetManagedPlacementViewRequest. */
                    class GetManagedPlacementViewRequest implements IGetManagedPlacementViewRequest {

                        /**
                         * Constructs a new GetManagedPlacementViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetManagedPlacementViewRequest);

                        /** GetManagedPlacementViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetManagedPlacementViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetManagedPlacementViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetManagedPlacementViewRequest): google.ads.googleads.v8.services.GetManagedPlacementViewRequest;

                        /**
                         * Encodes the specified GetManagedPlacementViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetManagedPlacementViewRequest.verify|verify} messages.
                         * @param m GetManagedPlacementViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetManagedPlacementViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetManagedPlacementViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetManagedPlacementViewRequest.verify|verify} messages.
                         * @param message GetManagedPlacementViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetManagedPlacementViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetManagedPlacementViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetManagedPlacementViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetManagedPlacementViewRequest;

                        /**
                         * Decodes a GetManagedPlacementViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetManagedPlacementViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetManagedPlacementViewRequest;

                        /**
                         * Verifies a GetManagedPlacementViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetManagedPlacementViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetManagedPlacementViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetManagedPlacementViewRequest;

                        /**
                         * Creates a plain object from a GetManagedPlacementViewRequest message. Also converts values to other types if specified.
                         * @param m GetManagedPlacementViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetManagedPlacementViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetManagedPlacementViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a MerchantCenterLinkService */
                    class MerchantCenterLinkService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new MerchantCenterLinkService 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 MerchantCenterLinkService 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): MerchantCenterLinkService;

                        /**
                         * Calls ListMerchantCenterLinks.
                         * @param request ListMerchantCenterLinksRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ListMerchantCenterLinksResponse
                         */
                        public listMerchantCenterLinks(request: google.ads.googleads.v8.services.IListMerchantCenterLinksRequest, callback: google.ads.googleads.v8.services.MerchantCenterLinkService.ListMerchantCenterLinksCallback): void;

                        /**
                         * Calls ListMerchantCenterLinks.
                         * @param request ListMerchantCenterLinksRequest message or plain object
                         * @returns Promise
                         */
                        public listMerchantCenterLinks(request: google.ads.googleads.v8.services.IListMerchantCenterLinksRequest): Promise<google.ads.googleads.v8.services.ListMerchantCenterLinksResponse>;

                        /**
                         * Calls GetMerchantCenterLink.
                         * @param request GetMerchantCenterLinkRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MerchantCenterLink
                         */
                        public getMerchantCenterLink(request: google.ads.googleads.v8.services.IGetMerchantCenterLinkRequest, callback: google.ads.googleads.v8.services.MerchantCenterLinkService.GetMerchantCenterLinkCallback): void;

                        /**
                         * Calls GetMerchantCenterLink.
                         * @param request GetMerchantCenterLinkRequest message or plain object
                         * @returns Promise
                         */
                        public getMerchantCenterLink(request: google.ads.googleads.v8.services.IGetMerchantCenterLinkRequest): Promise<google.ads.googleads.v8.resources.MerchantCenterLink>;

                        /**
                         * Calls MutateMerchantCenterLink.
                         * @param request MutateMerchantCenterLinkRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MutateMerchantCenterLinkResponse
                         */
                        public mutateMerchantCenterLink(request: google.ads.googleads.v8.services.IMutateMerchantCenterLinkRequest, callback: google.ads.googleads.v8.services.MerchantCenterLinkService.MutateMerchantCenterLinkCallback): void;

                        /**
                         * Calls MutateMerchantCenterLink.
                         * @param request MutateMerchantCenterLinkRequest message or plain object
                         * @returns Promise
                         */
                        public mutateMerchantCenterLink(request: google.ads.googleads.v8.services.IMutateMerchantCenterLinkRequest): Promise<google.ads.googleads.v8.services.MutateMerchantCenterLinkResponse>;
                    }

                    namespace MerchantCenterLinkService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.MerchantCenterLinkService#listMerchantCenterLinks}.
                         * @param error Error, if any
                         * @param [response] ListMerchantCenterLinksResponse
                         */
                        type ListMerchantCenterLinksCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.ListMerchantCenterLinksResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.MerchantCenterLinkService#getMerchantCenterLink}.
                         * @param error Error, if any
                         * @param [response] MerchantCenterLink
                         */
                        type GetMerchantCenterLinkCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.MerchantCenterLink) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.MerchantCenterLinkService#mutateMerchantCenterLink}.
                         * @param error Error, if any
                         * @param [response] MutateMerchantCenterLinkResponse
                         */
                        type MutateMerchantCenterLinkCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.MutateMerchantCenterLinkResponse) => void;
                    }

                    /** Properties of a ListMerchantCenterLinksRequest. */
                    interface IListMerchantCenterLinksRequest {

                        /** ListMerchantCenterLinksRequest customer_id */
                        customer_id?: (string|null);
                    }

                    /** Represents a ListMerchantCenterLinksRequest. */
                    class ListMerchantCenterLinksRequest implements IListMerchantCenterLinksRequest {

                        /**
                         * Constructs a new ListMerchantCenterLinksRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IListMerchantCenterLinksRequest);

                        /** ListMerchantCenterLinksRequest customer_id. */
                        public customer_id: string;

                        /**
                         * Creates a new ListMerchantCenterLinksRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListMerchantCenterLinksRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IListMerchantCenterLinksRequest): google.ads.googleads.v8.services.ListMerchantCenterLinksRequest;

                        /**
                         * Encodes the specified ListMerchantCenterLinksRequest message. Does not implicitly {@link google.ads.googleads.v8.services.ListMerchantCenterLinksRequest.verify|verify} messages.
                         * @param m ListMerchantCenterLinksRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IListMerchantCenterLinksRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListMerchantCenterLinksRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.ListMerchantCenterLinksRequest.verify|verify} messages.
                         * @param message ListMerchantCenterLinksRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IListMerchantCenterLinksRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListMerchantCenterLinksRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns ListMerchantCenterLinksRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.ListMerchantCenterLinksRequest;

                        /**
                         * Decodes a ListMerchantCenterLinksRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListMerchantCenterLinksRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.ListMerchantCenterLinksRequest;

                        /**
                         * Verifies a ListMerchantCenterLinksRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListMerchantCenterLinksRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ListMerchantCenterLinksRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ListMerchantCenterLinksRequest;

                        /**
                         * Creates a plain object from a ListMerchantCenterLinksRequest message. Also converts values to other types if specified.
                         * @param m ListMerchantCenterLinksRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ListMerchantCenterLinksRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListMerchantCenterLinksRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ListMerchantCenterLinksResponse. */
                    interface IListMerchantCenterLinksResponse {

                        /** ListMerchantCenterLinksResponse merchant_center_links */
                        merchant_center_links?: (google.ads.googleads.v8.resources.IMerchantCenterLink[]|null);
                    }

                    /** Represents a ListMerchantCenterLinksResponse. */
                    class ListMerchantCenterLinksResponse implements IListMerchantCenterLinksResponse {

                        /**
                         * Constructs a new ListMerchantCenterLinksResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IListMerchantCenterLinksResponse);

                        /** ListMerchantCenterLinksResponse merchant_center_links. */
                        public merchant_center_links: google.ads.googleads.v8.resources.IMerchantCenterLink[];

                        /**
                         * Creates a new ListMerchantCenterLinksResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListMerchantCenterLinksResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IListMerchantCenterLinksResponse): google.ads.googleads.v8.services.ListMerchantCenterLinksResponse;

                        /**
                         * Encodes the specified ListMerchantCenterLinksResponse message. Does not implicitly {@link google.ads.googleads.v8.services.ListMerchantCenterLinksResponse.verify|verify} messages.
                         * @param m ListMerchantCenterLinksResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IListMerchantCenterLinksResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListMerchantCenterLinksResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.ListMerchantCenterLinksResponse.verify|verify} messages.
                         * @param message ListMerchantCenterLinksResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IListMerchantCenterLinksResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListMerchantCenterLinksResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns ListMerchantCenterLinksResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.ListMerchantCenterLinksResponse;

                        /**
                         * Decodes a ListMerchantCenterLinksResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ListMerchantCenterLinksResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.ListMerchantCenterLinksResponse;

                        /**
                         * Verifies a ListMerchantCenterLinksResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListMerchantCenterLinksResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ListMerchantCenterLinksResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ListMerchantCenterLinksResponse;

                        /**
                         * Creates a plain object from a ListMerchantCenterLinksResponse message. Also converts values to other types if specified.
                         * @param m ListMerchantCenterLinksResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ListMerchantCenterLinksResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListMerchantCenterLinksResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a GetMerchantCenterLinkRequest. */
                    interface IGetMerchantCenterLinkRequest {

                        /** GetMerchantCenterLinkRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetMerchantCenterLinkRequest. */
                    class GetMerchantCenterLinkRequest implements IGetMerchantCenterLinkRequest {

                        /**
                         * Constructs a new GetMerchantCenterLinkRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetMerchantCenterLinkRequest);

                        /** GetMerchantCenterLinkRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetMerchantCenterLinkRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetMerchantCenterLinkRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetMerchantCenterLinkRequest): google.ads.googleads.v8.services.GetMerchantCenterLinkRequest;

                        /**
                         * Encodes the specified GetMerchantCenterLinkRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetMerchantCenterLinkRequest.verify|verify} messages.
                         * @param m GetMerchantCenterLinkRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetMerchantCenterLinkRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetMerchantCenterLinkRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetMerchantCenterLinkRequest.verify|verify} messages.
                         * @param message GetMerchantCenterLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetMerchantCenterLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetMerchantCenterLinkRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetMerchantCenterLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetMerchantCenterLinkRequest;

                        /**
                         * Decodes a GetMerchantCenterLinkRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetMerchantCenterLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetMerchantCenterLinkRequest;

                        /**
                         * Verifies a GetMerchantCenterLinkRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetMerchantCenterLinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetMerchantCenterLinkRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetMerchantCenterLinkRequest;

                        /**
                         * Creates a plain object from a GetMerchantCenterLinkRequest message. Also converts values to other types if specified.
                         * @param m GetMerchantCenterLinkRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetMerchantCenterLinkRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetMerchantCenterLinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateMerchantCenterLinkRequest. */
                    interface IMutateMerchantCenterLinkRequest {

                        /** MutateMerchantCenterLinkRequest customer_id */
                        customer_id?: (string|null);

                        /** MutateMerchantCenterLinkRequest operation */
                        operation?: (google.ads.googleads.v8.services.IMerchantCenterLinkOperation|null);

                        /** MutateMerchantCenterLinkRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a MutateMerchantCenterLinkRequest. */
                    class MutateMerchantCenterLinkRequest implements IMutateMerchantCenterLinkRequest {

                        /**
                         * Constructs a new MutateMerchantCenterLinkRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateMerchantCenterLinkRequest);

                        /** MutateMerchantCenterLinkRequest customer_id. */
                        public customer_id: string;

                        /** MutateMerchantCenterLinkRequest operation. */
                        public operation?: (google.ads.googleads.v8.services.IMerchantCenterLinkOperation|null);

                        /** MutateMerchantCenterLinkRequest validate_only. */
                        public validate_only: boolean;

                        /**
                         * Creates a new MutateMerchantCenterLinkRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateMerchantCenterLinkRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateMerchantCenterLinkRequest): google.ads.googleads.v8.services.MutateMerchantCenterLinkRequest;

                        /**
                         * Encodes the specified MutateMerchantCenterLinkRequest message. Does not implicitly {@link google.ads.googleads.v8.services.MutateMerchantCenterLinkRequest.verify|verify} messages.
                         * @param m MutateMerchantCenterLinkRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateMerchantCenterLinkRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateMerchantCenterLinkRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateMerchantCenterLinkRequest.verify|verify} messages.
                         * @param message MutateMerchantCenterLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateMerchantCenterLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateMerchantCenterLinkRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateMerchantCenterLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateMerchantCenterLinkRequest;

                        /**
                         * Decodes a MutateMerchantCenterLinkRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateMerchantCenterLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateMerchantCenterLinkRequest;

                        /**
                         * Verifies a MutateMerchantCenterLinkRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateMerchantCenterLinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateMerchantCenterLinkRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateMerchantCenterLinkRequest;

                        /**
                         * Creates a plain object from a MutateMerchantCenterLinkRequest message. Also converts values to other types if specified.
                         * @param m MutateMerchantCenterLinkRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateMerchantCenterLinkRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateMerchantCenterLinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MerchantCenterLinkOperation. */
                    interface IMerchantCenterLinkOperation {

                        /** MerchantCenterLinkOperation update_mask */
                        update_mask?: (google.protobuf.IFieldMask|null);

                        /** MerchantCenterLinkOperation update */
                        update?: (google.ads.googleads.v8.resources.IMerchantCenterLink|null);

                        /** MerchantCenterLinkOperation remove */
                        remove?: (string|null);
                    }

                    /** Represents a MerchantCenterLinkOperation. */
                    class MerchantCenterLinkOperation implements IMerchantCenterLinkOperation {

                        /**
                         * Constructs a new MerchantCenterLinkOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMerchantCenterLinkOperation);

                        /** MerchantCenterLinkOperation update_mask. */
                        public update_mask?: (google.protobuf.IFieldMask|null);

                        /** MerchantCenterLinkOperation update. */
                        public update?: (google.ads.googleads.v8.resources.IMerchantCenterLink|null);

                        /** MerchantCenterLinkOperation remove. */
                        public remove?: (string|null);

                        /** MerchantCenterLinkOperation operation. */
                        public operation?: ("update"|"remove");

                        /**
                         * Creates a new MerchantCenterLinkOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MerchantCenterLinkOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMerchantCenterLinkOperation): google.ads.googleads.v8.services.MerchantCenterLinkOperation;

                        /**
                         * Encodes the specified MerchantCenterLinkOperation message. Does not implicitly {@link google.ads.googleads.v8.services.MerchantCenterLinkOperation.verify|verify} messages.
                         * @param m MerchantCenterLinkOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMerchantCenterLinkOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MerchantCenterLinkOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MerchantCenterLinkOperation.verify|verify} messages.
                         * @param message MerchantCenterLinkOperation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMerchantCenterLinkOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MerchantCenterLinkOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MerchantCenterLinkOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MerchantCenterLinkOperation;

                        /**
                         * Decodes a MerchantCenterLinkOperation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MerchantCenterLinkOperation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MerchantCenterLinkOperation;

                        /**
                         * Verifies a MerchantCenterLinkOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MerchantCenterLinkOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MerchantCenterLinkOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MerchantCenterLinkOperation;

                        /**
                         * Creates a plain object from a MerchantCenterLinkOperation message. Also converts values to other types if specified.
                         * @param m MerchantCenterLinkOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MerchantCenterLinkOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MerchantCenterLinkOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateMerchantCenterLinkResponse. */
                    interface IMutateMerchantCenterLinkResponse {

                        /** MutateMerchantCenterLinkResponse result */
                        result?: (google.ads.googleads.v8.services.IMutateMerchantCenterLinkResult|null);
                    }

                    /** Represents a MutateMerchantCenterLinkResponse. */
                    class MutateMerchantCenterLinkResponse implements IMutateMerchantCenterLinkResponse {

                        /**
                         * Constructs a new MutateMerchantCenterLinkResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateMerchantCenterLinkResponse);

                        /** MutateMerchantCenterLinkResponse result. */
                        public result?: (google.ads.googleads.v8.services.IMutateMerchantCenterLinkResult|null);

                        /**
                         * Creates a new MutateMerchantCenterLinkResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateMerchantCenterLinkResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateMerchantCenterLinkResponse): google.ads.googleads.v8.services.MutateMerchantCenterLinkResponse;

                        /**
                         * Encodes the specified MutateMerchantCenterLinkResponse message. Does not implicitly {@link google.ads.googleads.v8.services.MutateMerchantCenterLinkResponse.verify|verify} messages.
                         * @param m MutateMerchantCenterLinkResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateMerchantCenterLinkResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateMerchantCenterLinkResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateMerchantCenterLinkResponse.verify|verify} messages.
                         * @param message MutateMerchantCenterLinkResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateMerchantCenterLinkResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateMerchantCenterLinkResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateMerchantCenterLinkResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateMerchantCenterLinkResponse;

                        /**
                         * Decodes a MutateMerchantCenterLinkResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateMerchantCenterLinkResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateMerchantCenterLinkResponse;

                        /**
                         * Verifies a MutateMerchantCenterLinkResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateMerchantCenterLinkResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateMerchantCenterLinkResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateMerchantCenterLinkResponse;

                        /**
                         * Creates a plain object from a MutateMerchantCenterLinkResponse message. Also converts values to other types if specified.
                         * @param m MutateMerchantCenterLinkResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateMerchantCenterLinkResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateMerchantCenterLinkResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a MutateMerchantCenterLinkResult. */
                    interface IMutateMerchantCenterLinkResult {

                        /** MutateMerchantCenterLinkResult resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a MutateMerchantCenterLinkResult. */
                    class MutateMerchantCenterLinkResult implements IMutateMerchantCenterLinkResult {

                        /**
                         * Constructs a new MutateMerchantCenterLinkResult.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IMutateMerchantCenterLinkResult);

                        /** MutateMerchantCenterLinkResult resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new MutateMerchantCenterLinkResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MutateMerchantCenterLinkResult instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IMutateMerchantCenterLinkResult): google.ads.googleads.v8.services.MutateMerchantCenterLinkResult;

                        /**
                         * Encodes the specified MutateMerchantCenterLinkResult message. Does not implicitly {@link google.ads.googleads.v8.services.MutateMerchantCenterLinkResult.verify|verify} messages.
                         * @param m MutateMerchantCenterLinkResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IMutateMerchantCenterLinkResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MutateMerchantCenterLinkResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.MutateMerchantCenterLinkResult.verify|verify} messages.
                         * @param message MutateMerchantCenterLinkResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IMutateMerchantCenterLinkResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MutateMerchantCenterLinkResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns MutateMerchantCenterLinkResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.MutateMerchantCenterLinkResult;

                        /**
                         * Decodes a MutateMerchantCenterLinkResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MutateMerchantCenterLinkResult
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.MutateMerchantCenterLinkResult;

                        /**
                         * Verifies a MutateMerchantCenterLinkResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MutateMerchantCenterLinkResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns MutateMerchantCenterLinkResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.MutateMerchantCenterLinkResult;

                        /**
                         * Creates a plain object from a MutateMerchantCenterLinkResult message. Also converts values to other types if specified.
                         * @param m MutateMerchantCenterLinkResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.MutateMerchantCenterLinkResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MutateMerchantCenterLinkResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a MobileAppCategoryConstantService */
                    class MobileAppCategoryConstantService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new MobileAppCategoryConstantService 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 MobileAppCategoryConstantService 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): MobileAppCategoryConstantService;

                        /**
                         * Calls GetMobileAppCategoryConstant.
                         * @param request GetMobileAppCategoryConstantRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MobileAppCategoryConstant
                         */
                        public getMobileAppCategoryConstant(request: google.ads.googleads.v8.services.IGetMobileAppCategoryConstantRequest, callback: google.ads.googleads.v8.services.MobileAppCategoryConstantService.GetMobileAppCategoryConstantCallback): void;

                        /**
                         * Calls GetMobileAppCategoryConstant.
                         * @param request GetMobileAppCategoryConstantRequest message or plain object
                         * @returns Promise
                         */
                        public getMobileAppCategoryConstant(request: google.ads.googleads.v8.services.IGetMobileAppCategoryConstantRequest): Promise<google.ads.googleads.v8.resources.MobileAppCategoryConstant>;
                    }

                    namespace MobileAppCategoryConstantService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.MobileAppCategoryConstantService#getMobileAppCategoryConstant}.
                         * @param error Error, if any
                         * @param [response] MobileAppCategoryConstant
                         */
                        type GetMobileAppCategoryConstantCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.MobileAppCategoryConstant) => void;
                    }

                    /** Properties of a GetMobileAppCategoryConstantRequest. */
                    interface IGetMobileAppCategoryConstantRequest {

                        /** GetMobileAppCategoryConstantRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetMobileAppCategoryConstantRequest. */
                    class GetMobileAppCategoryConstantRequest implements IGetMobileAppCategoryConstantRequest {

                        /**
                         * Constructs a new GetMobileAppCategoryConstantRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetMobileAppCategoryConstantRequest);

                        /** GetMobileAppCategoryConstantRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetMobileAppCategoryConstantRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetMobileAppCategoryConstantRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetMobileAppCategoryConstantRequest): google.ads.googleads.v8.services.GetMobileAppCategoryConstantRequest;

                        /**
                         * Encodes the specified GetMobileAppCategoryConstantRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetMobileAppCategoryConstantRequest.verify|verify} messages.
                         * @param m GetMobileAppCategoryConstantRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetMobileAppCategoryConstantRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetMobileAppCategoryConstantRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetMobileAppCategoryConstantRequest.verify|verify} messages.
                         * @param message GetMobileAppCategoryConstantRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetMobileAppCategoryConstantRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetMobileAppCategoryConstantRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetMobileAppCategoryConstantRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetMobileAppCategoryConstantRequest;

                        /**
                         * Decodes a GetMobileAppCategoryConstantRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetMobileAppCategoryConstantRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetMobileAppCategoryConstantRequest;

                        /**
                         * Verifies a GetMobileAppCategoryConstantRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetMobileAppCategoryConstantRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetMobileAppCategoryConstantRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetMobileAppCategoryConstantRequest;

                        /**
                         * Creates a plain object from a GetMobileAppCategoryConstantRequest message. Also converts values to other types if specified.
                         * @param m GetMobileAppCategoryConstantRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetMobileAppCategoryConstantRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetMobileAppCategoryConstantRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a MobileDeviceConstantService */
                    class MobileDeviceConstantService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new MobileDeviceConstantService 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 MobileDeviceConstantService 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): MobileDeviceConstantService;

                        /**
                         * Calls GetMobileDeviceConstant.
                         * @param request GetMobileDeviceConstantRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and MobileDeviceConstant
                         */
                        public getMobileDeviceConstant(request: google.ads.googleads.v8.services.IGetMobileDeviceConstantRequest, callback: google.ads.googleads.v8.services.MobileDeviceConstantService.GetMobileDeviceConstantCallback): void;

                        /**
                         * Calls GetMobileDeviceConstant.
                         * @param request GetMobileDeviceConstantRequest message or plain object
                         * @returns Promise
                         */
                        public getMobileDeviceConstant(request: google.ads.googleads.v8.services.IGetMobileDeviceConstantRequest): Promise<google.ads.googleads.v8.resources.MobileDeviceConstant>;
                    }

                    namespace MobileDeviceConstantService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.MobileDeviceConstantService#getMobileDeviceConstant}.
                         * @param error Error, if any
                         * @param [response] MobileDeviceConstant
                         */
                        type GetMobileDeviceConstantCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.MobileDeviceConstant) => void;
                    }

                    /** Properties of a GetMobileDeviceConstantRequest. */
                    interface IGetMobileDeviceConstantRequest {

                        /** GetMobileDeviceConstantRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetMobileDeviceConstantRequest. */
                    class GetMobileDeviceConstantRequest implements IGetMobileDeviceConstantRequest {

                        /**
                         * Constructs a new GetMobileDeviceConstantRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetMobileDeviceConstantRequest);

                        /** GetMobileDeviceConstantRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetMobileDeviceConstantRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetMobileDeviceConstantRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetMobileDeviceConstantRequest): google.ads.googleads.v8.services.GetMobileDeviceConstantRequest;

                        /**
                         * Encodes the specified GetMobileDeviceConstantRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetMobileDeviceConstantRequest.verify|verify} messages.
                         * @param m GetMobileDeviceConstantRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetMobileDeviceConstantRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetMobileDeviceConstantRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetMobileDeviceConstantRequest.verify|verify} messages.
                         * @param message GetMobileDeviceConstantRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetMobileDeviceConstantRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetMobileDeviceConstantRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetMobileDeviceConstantRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetMobileDeviceConstantRequest;

                        /**
                         * Decodes a GetMobileDeviceConstantRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetMobileDeviceConstantRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetMobileDeviceConstantRequest;

                        /**
                         * Verifies a GetMobileDeviceConstantRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetMobileDeviceConstantRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetMobileDeviceConstantRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetMobileDeviceConstantRequest;

                        /**
                         * Creates a plain object from a GetMobileDeviceConstantRequest message. Also converts values to other types if specified.
                         * @param m GetMobileDeviceConstantRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetMobileDeviceConstantRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetMobileDeviceConstantRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.services.ICreateOfflineUserDataJobRequest, callback: google.ads.googleads.v8.services.OfflineUserDataJobService.CreateOfflineUserDataJobCallback): void;

                        /**
                         * Calls CreateOfflineUserDataJob.
                         * @param request CreateOfflineUserDataJobRequest message or plain object
                         * @returns Promise
                         */
                        public createOfflineUserDataJob(request: google.ads.googleads.v8.services.ICreateOfflineUserDataJobRequest): Promise<google.ads.googleads.v8.services.CreateOfflineUserDataJobResponse>;

                        /**
                         * Calls GetOfflineUserDataJob.
                         * @param request GetOfflineUserDataJobRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and OfflineUserDataJob
                         */
                        public getOfflineUserDataJob(request: google.ads.googleads.v8.services.IGetOfflineUserDataJobRequest, callback: google.ads.googleads.v8.services.OfflineUserDataJobService.GetOfflineUserDataJobCallback): void;

                        /**
                         * Calls GetOfflineUserDataJob.
                         * @param request GetOfflineUserDataJobRequest message or plain object
                         * @returns Promise
                         */
                        public getOfflineUserDataJob(request: google.ads.googleads.v8.services.IGetOfflineUserDataJobRequest): Promise<google.ads.googleads.v8.resources.OfflineUserDataJob>;

                        /**
                         * 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.v8.services.IAddOfflineUserDataJobOperationsRequest, callback: google.ads.googleads.v8.services.OfflineUserDataJobService.AddOfflineUserDataJobOperationsCallback): void;

                        /**
                         * Calls AddOfflineUserDataJobOperations.
                         * @param request AddOfflineUserDataJobOperationsRequest message or plain object
                         * @returns Promise
                         */
                        public addOfflineUserDataJobOperations(request: google.ads.googleads.v8.services.IAddOfflineUserDataJobOperationsRequest): Promise<google.ads.googleads.v8.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.v8.services.IRunOfflineUserDataJobRequest, callback: google.ads.googleads.v8.services.OfflineUserDataJobService.RunOfflineUserDataJobCallback): void;

                        /**
                         * Calls RunOfflineUserDataJob.
                         * @param request RunOfflineUserDataJobRequest message or plain object
                         * @returns Promise
                         */
                        public runOfflineUserDataJob(request: google.ads.googleads.v8.services.IRunOfflineUserDataJobRequest): Promise<google.longrunning.Operation>;
                    }

                    namespace OfflineUserDataJobService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.OfflineUserDataJobService#createOfflineUserDataJob}.
                         * @param error Error, if any
                         * @param [response] CreateOfflineUserDataJobResponse
                         */
                        type CreateOfflineUserDataJobCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.CreateOfflineUserDataJobResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.OfflineUserDataJobService#getOfflineUserDataJob}.
                         * @param error Error, if any
                         * @param [response] OfflineUserDataJob
                         */
                        type GetOfflineUserDataJobCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.OfflineUserDataJob) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.OfflineUserDataJobService#addOfflineUserDataJobOperations}.
                         * @param error Error, if any
                         * @param [response] AddOfflineUserDataJobOperationsResponse
                         */
                        type AddOfflineUserDataJobOperationsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.AddOfflineUserDataJobOperationsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.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.v8.resources.IOfflineUserDataJob|null);

                        /** CreateOfflineUserDataJobRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents a CreateOfflineUserDataJobRequest. */
                    class CreateOfflineUserDataJobRequest implements ICreateOfflineUserDataJobRequest {

                        /**
                         * Constructs a new CreateOfflineUserDataJobRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICreateOfflineUserDataJobRequest);

                        /** CreateOfflineUserDataJobRequest customer_id. */
                        public customer_id: string;

                        /** CreateOfflineUserDataJobRequest job. */
                        public job?: (google.ads.googleads.v8.resources.IOfflineUserDataJob|null);

                        /** CreateOfflineUserDataJobRequest validate_only. */
                        public validate_only: 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.v8.services.ICreateOfflineUserDataJobRequest): google.ads.googleads.v8.services.CreateOfflineUserDataJobRequest;

                        /**
                         * Encodes the specified CreateOfflineUserDataJobRequest message. Does not implicitly {@link google.ads.googleads.v8.services.CreateOfflineUserDataJobRequest.verify|verify} messages.
                         * @param m CreateOfflineUserDataJobRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICreateOfflineUserDataJobRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateOfflineUserDataJobRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICreateOfflineUserDataJobRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateOfflineUserDataJobRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CreateOfflineUserDataJobRequest;

                        /**
                         * Verifies a CreateOfflineUserDataJobRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CreateOfflineUserDataJobRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CreateOfflineUserDataJobRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CreateOfflineUserDataJobRequest;

                        /**
                         * Creates a plain object from a CreateOfflineUserDataJobRequest message. Also converts values to other types if specified.
                         * @param m CreateOfflineUserDataJobRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CreateOfflineUserDataJobRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateOfflineUserDataJobRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.ICreateOfflineUserDataJobResponse): google.ads.googleads.v8.services.CreateOfflineUserDataJobResponse;

                        /**
                         * Encodes the specified CreateOfflineUserDataJobResponse message. Does not implicitly {@link google.ads.googleads.v8.services.CreateOfflineUserDataJobResponse.verify|verify} messages.
                         * @param m CreateOfflineUserDataJobResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICreateOfflineUserDataJobResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CreateOfflineUserDataJobResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICreateOfflineUserDataJobResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CreateOfflineUserDataJobResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CreateOfflineUserDataJobResponse;

                        /**
                         * Verifies a CreateOfflineUserDataJobResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CreateOfflineUserDataJobResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CreateOfflineUserDataJobResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CreateOfflineUserDataJobResponse;

                        /**
                         * Creates a plain object from a CreateOfflineUserDataJobResponse message. Also converts values to other types if specified.
                         * @param m CreateOfflineUserDataJobResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CreateOfflineUserDataJobResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CreateOfflineUserDataJobResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a GetOfflineUserDataJobRequest. */
                    interface IGetOfflineUserDataJobRequest {

                        /** GetOfflineUserDataJobRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetOfflineUserDataJobRequest. */
                    class GetOfflineUserDataJobRequest implements IGetOfflineUserDataJobRequest {

                        /**
                         * Constructs a new GetOfflineUserDataJobRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetOfflineUserDataJobRequest);

                        /** GetOfflineUserDataJobRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetOfflineUserDataJobRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetOfflineUserDataJobRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetOfflineUserDataJobRequest): google.ads.googleads.v8.services.GetOfflineUserDataJobRequest;

                        /**
                         * Encodes the specified GetOfflineUserDataJobRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetOfflineUserDataJobRequest.verify|verify} messages.
                         * @param m GetOfflineUserDataJobRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetOfflineUserDataJobRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetOfflineUserDataJobRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetOfflineUserDataJobRequest.verify|verify} messages.
                         * @param message GetOfflineUserDataJobRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetOfflineUserDataJobRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetOfflineUserDataJobRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetOfflineUserDataJobRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetOfflineUserDataJobRequest;

                        /**
                         * Decodes a GetOfflineUserDataJobRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetOfflineUserDataJobRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetOfflineUserDataJobRequest;

                        /**
                         * Verifies a GetOfflineUserDataJobRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetOfflineUserDataJobRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetOfflineUserDataJobRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetOfflineUserDataJobRequest;

                        /**
                         * Creates a plain object from a GetOfflineUserDataJobRequest message. Also converts values to other types if specified.
                         * @param m GetOfflineUserDataJobRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetOfflineUserDataJobRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetOfflineUserDataJobRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IRunOfflineUserDataJobRequest): google.ads.googleads.v8.services.RunOfflineUserDataJobRequest;

                        /**
                         * Encodes the specified RunOfflineUserDataJobRequest message. Does not implicitly {@link google.ads.googleads.v8.services.RunOfflineUserDataJobRequest.verify|verify} messages.
                         * @param m RunOfflineUserDataJobRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IRunOfflineUserDataJobRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RunOfflineUserDataJobRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IRunOfflineUserDataJobRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RunOfflineUserDataJobRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.RunOfflineUserDataJobRequest;

                        /**
                         * Verifies a RunOfflineUserDataJobRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RunOfflineUserDataJobRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns RunOfflineUserDataJobRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.RunOfflineUserDataJobRequest;

                        /**
                         * Creates a plain object from a RunOfflineUserDataJobRequest message. Also converts values to other types if specified.
                         * @param m RunOfflineUserDataJobRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.RunOfflineUserDataJobRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RunOfflineUserDataJobRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an AddOfflineUserDataJobOperationsRequest. */
                    interface IAddOfflineUserDataJobOperationsRequest {

                        /** AddOfflineUserDataJobOperationsRequest resource_name */
                        resource_name?: (string|null);

                        /** AddOfflineUserDataJobOperationsRequest enable_partial_failure */
                        enable_partial_failure?: (boolean|null);

                        /** AddOfflineUserDataJobOperationsRequest operations */
                        operations?: (google.ads.googleads.v8.services.IOfflineUserDataJobOperation[]|null);

                        /** AddOfflineUserDataJobOperationsRequest validate_only */
                        validate_only?: (boolean|null);
                    }

                    /** Represents an AddOfflineUserDataJobOperationsRequest. */
                    class AddOfflineUserDataJobOperationsRequest implements IAddOfflineUserDataJobOperationsRequest {

                        /**
                         * Constructs a new AddOfflineUserDataJobOperationsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IAddOfflineUserDataJobOperationsRequest);

                        /** AddOfflineUserDataJobOperationsRequest resource_name. */
                        public resource_name: string;

                        /** AddOfflineUserDataJobOperationsRequest enable_partial_failure. */
                        public enable_partial_failure?: (boolean|null);

                        /** AddOfflineUserDataJobOperationsRequest operations. */
                        public operations: google.ads.googleads.v8.services.IOfflineUserDataJobOperation[];

                        /** AddOfflineUserDataJobOperationsRequest validate_only. */
                        public validate_only: boolean;

                        /** AddOfflineUserDataJobOperationsRequest _enable_partial_failure. */
                        public _enable_partial_failure?: "enable_partial_failure";

                        /**
                         * Creates a new AddOfflineUserDataJobOperationsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AddOfflineUserDataJobOperationsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IAddOfflineUserDataJobOperationsRequest): google.ads.googleads.v8.services.AddOfflineUserDataJobOperationsRequest;

                        /**
                         * Encodes the specified AddOfflineUserDataJobOperationsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.AddOfflineUserDataJobOperationsRequest.verify|verify} messages.
                         * @param m AddOfflineUserDataJobOperationsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IAddOfflineUserDataJobOperationsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AddOfflineUserDataJobOperationsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IAddOfflineUserDataJobOperationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AddOfflineUserDataJobOperationsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.AddOfflineUserDataJobOperationsRequest;

                        /**
                         * Verifies an AddOfflineUserDataJobOperationsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AddOfflineUserDataJobOperationsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AddOfflineUserDataJobOperationsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.AddOfflineUserDataJobOperationsRequest;

                        /**
                         * Creates a plain object from an AddOfflineUserDataJobOperationsRequest message. Also converts values to other types if specified.
                         * @param m AddOfflineUserDataJobOperationsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.AddOfflineUserDataJobOperationsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AddOfflineUserDataJobOperationsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an OfflineUserDataJobOperation. */
                    interface IOfflineUserDataJobOperation {

                        /** OfflineUserDataJobOperation create */
                        create?: (google.ads.googleads.v8.common.IUserData|null);

                        /** OfflineUserDataJobOperation remove */
                        remove?: (google.ads.googleads.v8.common.IUserData|null);

                        /** OfflineUserDataJobOperation remove_all */
                        remove_all?: (boolean|null);
                    }

                    /** Represents an OfflineUserDataJobOperation. */
                    class OfflineUserDataJobOperation implements IOfflineUserDataJobOperation {

                        /**
                         * Constructs a new OfflineUserDataJobOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IOfflineUserDataJobOperation);

                        /** OfflineUserDataJobOperation create. */
                        public create?: (google.ads.googleads.v8.common.IUserData|null);

                        /** OfflineUserDataJobOperation remove. */
                        public remove?: (google.ads.googleads.v8.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.v8.services.IOfflineUserDataJobOperation): google.ads.googleads.v8.services.OfflineUserDataJobOperation;

                        /**
                         * Encodes the specified OfflineUserDataJobOperation message. Does not implicitly {@link google.ads.googleads.v8.services.OfflineUserDataJobOperation.verify|verify} messages.
                         * @param m OfflineUserDataJobOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IOfflineUserDataJobOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OfflineUserDataJobOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IOfflineUserDataJobOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OfflineUserDataJobOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.OfflineUserDataJobOperation;

                        /**
                         * Verifies an OfflineUserDataJobOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an OfflineUserDataJobOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns OfflineUserDataJobOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.OfflineUserDataJobOperation;

                        /**
                         * Creates a plain object from an OfflineUserDataJobOperation message. Also converts values to other types if specified.
                         * @param m OfflineUserDataJobOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.OfflineUserDataJobOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OfflineUserDataJobOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an AddOfflineUserDataJobOperationsResponse. */
                    interface IAddOfflineUserDataJobOperationsResponse {

                        /** AddOfflineUserDataJobOperationsResponse partial_failure_error */
                        partial_failure_error?: (google.rpc.IStatus|null);
                    }

                    /** Represents an AddOfflineUserDataJobOperationsResponse. */
                    class AddOfflineUserDataJobOperationsResponse implements IAddOfflineUserDataJobOperationsResponse {

                        /**
                         * Constructs a new AddOfflineUserDataJobOperationsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IAddOfflineUserDataJobOperationsResponse);

                        /** AddOfflineUserDataJobOperationsResponse partial_failure_error. */
                        public partial_failure_error?: (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.v8.services.IAddOfflineUserDataJobOperationsResponse): google.ads.googleads.v8.services.AddOfflineUserDataJobOperationsResponse;

                        /**
                         * Encodes the specified AddOfflineUserDataJobOperationsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.AddOfflineUserDataJobOperationsResponse.verify|verify} messages.
                         * @param m AddOfflineUserDataJobOperationsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IAddOfflineUserDataJobOperationsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AddOfflineUserDataJobOperationsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IAddOfflineUserDataJobOperationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AddOfflineUserDataJobOperationsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.AddOfflineUserDataJobOperationsResponse;

                        /**
                         * Verifies an AddOfflineUserDataJobOperationsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an AddOfflineUserDataJobOperationsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns AddOfflineUserDataJobOperationsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.AddOfflineUserDataJobOperationsResponse;

                        /**
                         * Creates a plain object from an AddOfflineUserDataJobOperationsResponse message. Also converts values to other types if specified.
                         * @param m AddOfflineUserDataJobOperationsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.AddOfflineUserDataJobOperationsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AddOfflineUserDataJobOperationsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents an OperatingSystemVersionConstantService */
                    class OperatingSystemVersionConstantService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new OperatingSystemVersionConstantService 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 OperatingSystemVersionConstantService 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): OperatingSystemVersionConstantService;

                        /**
                         * Calls GetOperatingSystemVersionConstant.
                         * @param request GetOperatingSystemVersionConstantRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and OperatingSystemVersionConstant
                         */
                        public getOperatingSystemVersionConstant(request: google.ads.googleads.v8.services.IGetOperatingSystemVersionConstantRequest, callback: google.ads.googleads.v8.services.OperatingSystemVersionConstantService.GetOperatingSystemVersionConstantCallback): void;

                        /**
                         * Calls GetOperatingSystemVersionConstant.
                         * @param request GetOperatingSystemVersionConstantRequest message or plain object
                         * @returns Promise
                         */
                        public getOperatingSystemVersionConstant(request: google.ads.googleads.v8.services.IGetOperatingSystemVersionConstantRequest): Promise<google.ads.googleads.v8.resources.OperatingSystemVersionConstant>;
                    }

                    namespace OperatingSystemVersionConstantService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.OperatingSystemVersionConstantService#getOperatingSystemVersionConstant}.
                         * @param error Error, if any
                         * @param [response] OperatingSystemVersionConstant
                         */
                        type GetOperatingSystemVersionConstantCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.OperatingSystemVersionConstant) => void;
                    }

                    /** Properties of a GetOperatingSystemVersionConstantRequest. */
                    interface IGetOperatingSystemVersionConstantRequest {

                        /** GetOperatingSystemVersionConstantRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetOperatingSystemVersionConstantRequest. */
                    class GetOperatingSystemVersionConstantRequest implements IGetOperatingSystemVersionConstantRequest {

                        /**
                         * Constructs a new GetOperatingSystemVersionConstantRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetOperatingSystemVersionConstantRequest);

                        /** GetOperatingSystemVersionConstantRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetOperatingSystemVersionConstantRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetOperatingSystemVersionConstantRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetOperatingSystemVersionConstantRequest): google.ads.googleads.v8.services.GetOperatingSystemVersionConstantRequest;

                        /**
                         * Encodes the specified GetOperatingSystemVersionConstantRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetOperatingSystemVersionConstantRequest.verify|verify} messages.
                         * @param m GetOperatingSystemVersionConstantRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetOperatingSystemVersionConstantRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetOperatingSystemVersionConstantRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetOperatingSystemVersionConstantRequest.verify|verify} messages.
                         * @param message GetOperatingSystemVersionConstantRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetOperatingSystemVersionConstantRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetOperatingSystemVersionConstantRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetOperatingSystemVersionConstantRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetOperatingSystemVersionConstantRequest;

                        /**
                         * Decodes a GetOperatingSystemVersionConstantRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetOperatingSystemVersionConstantRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetOperatingSystemVersionConstantRequest;

                        /**
                         * Verifies a GetOperatingSystemVersionConstantRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetOperatingSystemVersionConstantRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetOperatingSystemVersionConstantRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetOperatingSystemVersionConstantRequest;

                        /**
                         * Creates a plain object from a GetOperatingSystemVersionConstantRequest message. Also converts values to other types if specified.
                         * @param m GetOperatingSystemVersionConstantRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetOperatingSystemVersionConstantRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetOperatingSystemVersionConstantRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a PaidOrganicSearchTermViewService */
                    class PaidOrganicSearchTermViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new PaidOrganicSearchTermViewService 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 PaidOrganicSearchTermViewService 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): PaidOrganicSearchTermViewService;

                        /**
                         * Calls GetPaidOrganicSearchTermView.
                         * @param request GetPaidOrganicSearchTermViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and PaidOrganicSearchTermView
                         */
                        public getPaidOrganicSearchTermView(request: google.ads.googleads.v8.services.IGetPaidOrganicSearchTermViewRequest, callback: google.ads.googleads.v8.services.PaidOrganicSearchTermViewService.GetPaidOrganicSearchTermViewCallback): void;

                        /**
                         * Calls GetPaidOrganicSearchTermView.
                         * @param request GetPaidOrganicSearchTermViewRequest message or plain object
                         * @returns Promise
                         */
                        public getPaidOrganicSearchTermView(request: google.ads.googleads.v8.services.IGetPaidOrganicSearchTermViewRequest): Promise<google.ads.googleads.v8.resources.PaidOrganicSearchTermView>;
                    }

                    namespace PaidOrganicSearchTermViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.PaidOrganicSearchTermViewService#getPaidOrganicSearchTermView}.
                         * @param error Error, if any
                         * @param [response] PaidOrganicSearchTermView
                         */
                        type GetPaidOrganicSearchTermViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.PaidOrganicSearchTermView) => void;
                    }

                    /** Properties of a GetPaidOrganicSearchTermViewRequest. */
                    interface IGetPaidOrganicSearchTermViewRequest {

                        /** GetPaidOrganicSearchTermViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetPaidOrganicSearchTermViewRequest. */
                    class GetPaidOrganicSearchTermViewRequest implements IGetPaidOrganicSearchTermViewRequest {

                        /**
                         * Constructs a new GetPaidOrganicSearchTermViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetPaidOrganicSearchTermViewRequest);

                        /** GetPaidOrganicSearchTermViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetPaidOrganicSearchTermViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetPaidOrganicSearchTermViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetPaidOrganicSearchTermViewRequest): google.ads.googleads.v8.services.GetPaidOrganicSearchTermViewRequest;

                        /**
                         * Encodes the specified GetPaidOrganicSearchTermViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetPaidOrganicSearchTermViewRequest.verify|verify} messages.
                         * @param m GetPaidOrganicSearchTermViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetPaidOrganicSearchTermViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetPaidOrganicSearchTermViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetPaidOrganicSearchTermViewRequest.verify|verify} messages.
                         * @param message GetPaidOrganicSearchTermViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetPaidOrganicSearchTermViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetPaidOrganicSearchTermViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetPaidOrganicSearchTermViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetPaidOrganicSearchTermViewRequest;

                        /**
                         * Decodes a GetPaidOrganicSearchTermViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetPaidOrganicSearchTermViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetPaidOrganicSearchTermViewRequest;

                        /**
                         * Verifies a GetPaidOrganicSearchTermViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetPaidOrganicSearchTermViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetPaidOrganicSearchTermViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetPaidOrganicSearchTermViewRequest;

                        /**
                         * Creates a plain object from a GetPaidOrganicSearchTermViewRequest message. Also converts values to other types if specified.
                         * @param m GetPaidOrganicSearchTermViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetPaidOrganicSearchTermViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetPaidOrganicSearchTermViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a ParentalStatusViewService */
                    class ParentalStatusViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new ParentalStatusViewService 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 ParentalStatusViewService 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): ParentalStatusViewService;

                        /**
                         * Calls GetParentalStatusView.
                         * @param request GetParentalStatusViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ParentalStatusView
                         */
                        public getParentalStatusView(request: google.ads.googleads.v8.services.IGetParentalStatusViewRequest, callback: google.ads.googleads.v8.services.ParentalStatusViewService.GetParentalStatusViewCallback): void;

                        /**
                         * Calls GetParentalStatusView.
                         * @param request GetParentalStatusViewRequest message or plain object
                         * @returns Promise
                         */
                        public getParentalStatusView(request: google.ads.googleads.v8.services.IGetParentalStatusViewRequest): Promise<google.ads.googleads.v8.resources.ParentalStatusView>;
                    }

                    namespace ParentalStatusViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ParentalStatusViewService#getParentalStatusView}.
                         * @param error Error, if any
                         * @param [response] ParentalStatusView
                         */
                        type GetParentalStatusViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.ParentalStatusView) => void;
                    }

                    /** Properties of a GetParentalStatusViewRequest. */
                    interface IGetParentalStatusViewRequest {

                        /** GetParentalStatusViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetParentalStatusViewRequest. */
                    class GetParentalStatusViewRequest implements IGetParentalStatusViewRequest {

                        /**
                         * Constructs a new GetParentalStatusViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetParentalStatusViewRequest);

                        /** GetParentalStatusViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetParentalStatusViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetParentalStatusViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetParentalStatusViewRequest): google.ads.googleads.v8.services.GetParentalStatusViewRequest;

                        /**
                         * Encodes the specified GetParentalStatusViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetParentalStatusViewRequest.verify|verify} messages.
                         * @param m GetParentalStatusViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetParentalStatusViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetParentalStatusViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetParentalStatusViewRequest.verify|verify} messages.
                         * @param message GetParentalStatusViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetParentalStatusViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetParentalStatusViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetParentalStatusViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetParentalStatusViewRequest;

                        /**
                         * Decodes a GetParentalStatusViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetParentalStatusViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetParentalStatusViewRequest;

                        /**
                         * Verifies a GetParentalStatusViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetParentalStatusViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetParentalStatusViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetParentalStatusViewRequest;

                        /**
                         * Creates a plain object from a GetParentalStatusViewRequest message. Also converts values to other types if specified.
                         * @param m GetParentalStatusViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetParentalStatusViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetParentalStatusViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.services.IListPaymentsAccountsRequest, callback: google.ads.googleads.v8.services.PaymentsAccountService.ListPaymentsAccountsCallback): void;

                        /**
                         * Calls ListPaymentsAccounts.
                         * @param request ListPaymentsAccountsRequest message or plain object
                         * @returns Promise
                         */
                        public listPaymentsAccounts(request: google.ads.googleads.v8.services.IListPaymentsAccountsRequest): Promise<google.ads.googleads.v8.services.ListPaymentsAccountsResponse>;
                    }

                    namespace PaymentsAccountService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.PaymentsAccountService#listPaymentsAccounts}.
                         * @param error Error, if any
                         * @param [response] ListPaymentsAccountsResponse
                         */
                        type ListPaymentsAccountsCallback = (error: (Error|null), response?: google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IListPaymentsAccountsRequest): google.ads.googleads.v8.services.ListPaymentsAccountsRequest;

                        /**
                         * Encodes the specified ListPaymentsAccountsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.ListPaymentsAccountsRequest.verify|verify} messages.
                         * @param m ListPaymentsAccountsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IListPaymentsAccountsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListPaymentsAccountsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IListPaymentsAccountsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListPaymentsAccountsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ListPaymentsAccountsRequest;

                        /**
                         * Verifies a ListPaymentsAccountsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListPaymentsAccountsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ListPaymentsAccountsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ListPaymentsAccountsRequest;

                        /**
                         * Creates a plain object from a ListPaymentsAccountsRequest message. Also converts values to other types if specified.
                         * @param m ListPaymentsAccountsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ListPaymentsAccountsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListPaymentsAccountsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ListPaymentsAccountsResponse. */
                    interface IListPaymentsAccountsResponse {

                        /** ListPaymentsAccountsResponse payments_accounts */
                        payments_accounts?: (google.ads.googleads.v8.resources.IPaymentsAccount[]|null);
                    }

                    /** Represents a ListPaymentsAccountsResponse. */
                    class ListPaymentsAccountsResponse implements IListPaymentsAccountsResponse {

                        /**
                         * Constructs a new ListPaymentsAccountsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IListPaymentsAccountsResponse);

                        /** ListPaymentsAccountsResponse payments_accounts. */
                        public payments_accounts: google.ads.googleads.v8.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.v8.services.IListPaymentsAccountsResponse): google.ads.googleads.v8.services.ListPaymentsAccountsResponse;

                        /**
                         * Encodes the specified ListPaymentsAccountsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.ListPaymentsAccountsResponse.verify|verify} messages.
                         * @param m ListPaymentsAccountsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IListPaymentsAccountsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListPaymentsAccountsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IListPaymentsAccountsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListPaymentsAccountsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ListPaymentsAccountsResponse;

                        /**
                         * Verifies a ListPaymentsAccountsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListPaymentsAccountsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ListPaymentsAccountsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ListPaymentsAccountsResponse;

                        /**
                         * Creates a plain object from a ListPaymentsAccountsResponse message. Also converts values to other types if specified.
                         * @param m ListPaymentsAccountsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ListPaymentsAccountsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListPaymentsAccountsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a ProductBiddingCategoryConstantService */
                    class ProductBiddingCategoryConstantService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new ProductBiddingCategoryConstantService 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 ProductBiddingCategoryConstantService 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): ProductBiddingCategoryConstantService;

                        /**
                         * Calls GetProductBiddingCategoryConstant.
                         * @param request GetProductBiddingCategoryConstantRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ProductBiddingCategoryConstant
                         */
                        public getProductBiddingCategoryConstant(request: google.ads.googleads.v8.services.IGetProductBiddingCategoryConstantRequest, callback: google.ads.googleads.v8.services.ProductBiddingCategoryConstantService.GetProductBiddingCategoryConstantCallback): void;

                        /**
                         * Calls GetProductBiddingCategoryConstant.
                         * @param request GetProductBiddingCategoryConstantRequest message or plain object
                         * @returns Promise
                         */
                        public getProductBiddingCategoryConstant(request: google.ads.googleads.v8.services.IGetProductBiddingCategoryConstantRequest): Promise<google.ads.googleads.v8.resources.ProductBiddingCategoryConstant>;
                    }

                    namespace ProductBiddingCategoryConstantService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ProductBiddingCategoryConstantService#getProductBiddingCategoryConstant}.
                         * @param error Error, if any
                         * @param [response] ProductBiddingCategoryConstant
                         */
                        type GetProductBiddingCategoryConstantCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.ProductBiddingCategoryConstant) => void;
                    }

                    /** Properties of a GetProductBiddingCategoryConstantRequest. */
                    interface IGetProductBiddingCategoryConstantRequest {

                        /** GetProductBiddingCategoryConstantRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetProductBiddingCategoryConstantRequest. */
                    class GetProductBiddingCategoryConstantRequest implements IGetProductBiddingCategoryConstantRequest {

                        /**
                         * Constructs a new GetProductBiddingCategoryConstantRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetProductBiddingCategoryConstantRequest);

                        /** GetProductBiddingCategoryConstantRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetProductBiddingCategoryConstantRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetProductBiddingCategoryConstantRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetProductBiddingCategoryConstantRequest): google.ads.googleads.v8.services.GetProductBiddingCategoryConstantRequest;

                        /**
                         * Encodes the specified GetProductBiddingCategoryConstantRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetProductBiddingCategoryConstantRequest.verify|verify} messages.
                         * @param m GetProductBiddingCategoryConstantRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetProductBiddingCategoryConstantRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetProductBiddingCategoryConstantRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetProductBiddingCategoryConstantRequest.verify|verify} messages.
                         * @param message GetProductBiddingCategoryConstantRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetProductBiddingCategoryConstantRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetProductBiddingCategoryConstantRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetProductBiddingCategoryConstantRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetProductBiddingCategoryConstantRequest;

                        /**
                         * Decodes a GetProductBiddingCategoryConstantRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetProductBiddingCategoryConstantRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetProductBiddingCategoryConstantRequest;

                        /**
                         * Verifies a GetProductBiddingCategoryConstantRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetProductBiddingCategoryConstantRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetProductBiddingCategoryConstantRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetProductBiddingCategoryConstantRequest;

                        /**
                         * Creates a plain object from a GetProductBiddingCategoryConstantRequest message. Also converts values to other types if specified.
                         * @param m GetProductBiddingCategoryConstantRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetProductBiddingCategoryConstantRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetProductBiddingCategoryConstantRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a ProductGroupViewService */
                    class ProductGroupViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new ProductGroupViewService 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 ProductGroupViewService 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): ProductGroupViewService;

                        /**
                         * Calls GetProductGroupView.
                         * @param request GetProductGroupViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ProductGroupView
                         */
                        public getProductGroupView(request: google.ads.googleads.v8.services.IGetProductGroupViewRequest, callback: google.ads.googleads.v8.services.ProductGroupViewService.GetProductGroupViewCallback): void;

                        /**
                         * Calls GetProductGroupView.
                         * @param request GetProductGroupViewRequest message or plain object
                         * @returns Promise
                         */
                        public getProductGroupView(request: google.ads.googleads.v8.services.IGetProductGroupViewRequest): Promise<google.ads.googleads.v8.resources.ProductGroupView>;
                    }

                    namespace ProductGroupViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ProductGroupViewService#getProductGroupView}.
                         * @param error Error, if any
                         * @param [response] ProductGroupView
                         */
                        type GetProductGroupViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.ProductGroupView) => void;
                    }

                    /** Properties of a GetProductGroupViewRequest. */
                    interface IGetProductGroupViewRequest {

                        /** GetProductGroupViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetProductGroupViewRequest. */
                    class GetProductGroupViewRequest implements IGetProductGroupViewRequest {

                        /**
                         * Constructs a new GetProductGroupViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetProductGroupViewRequest);

                        /** GetProductGroupViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetProductGroupViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetProductGroupViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetProductGroupViewRequest): google.ads.googleads.v8.services.GetProductGroupViewRequest;

                        /**
                         * Encodes the specified GetProductGroupViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetProductGroupViewRequest.verify|verify} messages.
                         * @param m GetProductGroupViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetProductGroupViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetProductGroupViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetProductGroupViewRequest.verify|verify} messages.
                         * @param message GetProductGroupViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetProductGroupViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetProductGroupViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetProductGroupViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetProductGroupViewRequest;

                        /**
                         * Decodes a GetProductGroupViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetProductGroupViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetProductGroupViewRequest;

                        /**
                         * Verifies a GetProductGroupViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetProductGroupViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetProductGroupViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetProductGroupViewRequest;

                        /**
                         * Creates a plain object from a GetProductGroupViewRequest message. Also converts values to other types if specified.
                         * @param m GetProductGroupViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetProductGroupViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetProductGroupViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 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.v8.services.IListPlannableLocationsRequest, callback: google.ads.googleads.v8.services.ReachPlanService.ListPlannableLocationsCallback): void;

                        /**
                         * Calls ListPlannableLocations.
                         * @param request ListPlannableLocationsRequest message or plain object
                         * @returns Promise
                         */
                        public listPlannableLocations(request: google.ads.googleads.v8.services.IListPlannableLocationsRequest): Promise<google.ads.googleads.v8.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.v8.services.IListPlannableProductsRequest, callback: google.ads.googleads.v8.services.ReachPlanService.ListPlannableProductsCallback): void;

                        /**
                         * Calls ListPlannableProducts.
                         * @param request ListPlannableProductsRequest message or plain object
                         * @returns Promise
                         */
                        public listPlannableProducts(request: google.ads.googleads.v8.services.IListPlannableProductsRequest): Promise<google.ads.googleads.v8.services.ListPlannableProductsResponse>;

                        /**
                         * Calls GenerateProductMixIdeas.
                         * @param request GenerateProductMixIdeasRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and GenerateProductMixIdeasResponse
                         */
                        public generateProductMixIdeas(request: google.ads.googleads.v8.services.IGenerateProductMixIdeasRequest, callback: google.ads.googleads.v8.services.ReachPlanService.GenerateProductMixIdeasCallback): void;

                        /**
                         * Calls GenerateProductMixIdeas.
                         * @param request GenerateProductMixIdeasRequest message or plain object
                         * @returns Promise
                         */
                        public generateProductMixIdeas(request: google.ads.googleads.v8.services.IGenerateProductMixIdeasRequest): Promise<google.ads.googleads.v8.services.GenerateProductMixIdeasResponse>;

                        /**
                         * 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.v8.services.IGenerateReachForecastRequest, callback: google.ads.googleads.v8.services.ReachPlanService.GenerateReachForecastCallback): void;

                        /**
                         * Calls GenerateReachForecast.
                         * @param request GenerateReachForecastRequest message or plain object
                         * @returns Promise
                         */
                        public generateReachForecast(request: google.ads.googleads.v8.services.IGenerateReachForecastRequest): Promise<google.ads.googleads.v8.services.GenerateReachForecastResponse>;
                    }

                    namespace ReachPlanService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ReachPlanService#listPlannableLocations}.
                         * @param error Error, if any
                         * @param [response] ListPlannableLocationsResponse
                         */
                        type ListPlannableLocationsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.ListPlannableLocationsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ReachPlanService#listPlannableProducts}.
                         * @param error Error, if any
                         * @param [response] ListPlannableProductsResponse
                         */
                        type ListPlannableProductsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.ListPlannableProductsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ReachPlanService#generateProductMixIdeas}.
                         * @param error Error, if any
                         * @param [response] GenerateProductMixIdeasResponse
                         */
                        type GenerateProductMixIdeasCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.GenerateProductMixIdeasResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ReachPlanService#generateReachForecast}.
                         * @param error Error, if any
                         * @param [response] GenerateReachForecastResponse
                         */
                        type GenerateReachForecastCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.GenerateReachForecastResponse) => void;
                    }

                    /** Properties of a ListPlannableLocationsRequest. */
                    interface IListPlannableLocationsRequest {
                    }

                    /** Represents a ListPlannableLocationsRequest. */
                    class ListPlannableLocationsRequest implements IListPlannableLocationsRequest {

                        /**
                         * Constructs a new ListPlannableLocationsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IListPlannableLocationsRequest);

                        /**
                         * Creates a new ListPlannableLocationsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListPlannableLocationsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IListPlannableLocationsRequest): google.ads.googleads.v8.services.ListPlannableLocationsRequest;

                        /**
                         * Encodes the specified ListPlannableLocationsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.ListPlannableLocationsRequest.verify|verify} messages.
                         * @param m ListPlannableLocationsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IListPlannableLocationsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListPlannableLocationsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IListPlannableLocationsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListPlannableLocationsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ListPlannableLocationsRequest;

                        /**
                         * Verifies a ListPlannableLocationsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListPlannableLocationsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ListPlannableLocationsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ListPlannableLocationsRequest;

                        /**
                         * Creates a plain object from a ListPlannableLocationsRequest message. Also converts values to other types if specified.
                         * @param m ListPlannableLocationsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ListPlannableLocationsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListPlannableLocationsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ListPlannableLocationsResponse. */
                    interface IListPlannableLocationsResponse {

                        /** ListPlannableLocationsResponse plannable_locations */
                        plannable_locations?: (google.ads.googleads.v8.services.IPlannableLocation[]|null);
                    }

                    /** Represents a ListPlannableLocationsResponse. */
                    class ListPlannableLocationsResponse implements IListPlannableLocationsResponse {

                        /**
                         * Constructs a new ListPlannableLocationsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IListPlannableLocationsResponse);

                        /** ListPlannableLocationsResponse plannable_locations. */
                        public plannable_locations: google.ads.googleads.v8.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.v8.services.IListPlannableLocationsResponse): google.ads.googleads.v8.services.ListPlannableLocationsResponse;

                        /**
                         * Encodes the specified ListPlannableLocationsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.ListPlannableLocationsResponse.verify|verify} messages.
                         * @param m ListPlannableLocationsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IListPlannableLocationsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListPlannableLocationsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IListPlannableLocationsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListPlannableLocationsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ListPlannableLocationsResponse;

                        /**
                         * Verifies a ListPlannableLocationsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListPlannableLocationsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ListPlannableLocationsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ListPlannableLocationsResponse;

                        /**
                         * Creates a plain object from a ListPlannableLocationsResponse message. Also converts values to other types if specified.
                         * @param m ListPlannableLocationsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ListPlannableLocationsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListPlannableLocationsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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);
                    }

                    /** Represents a PlannableLocation. */
                    class PlannableLocation implements IPlannableLocation {

                        /**
                         * Constructs a new PlannableLocation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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 _id. */
                        public _id?: "id";

                        /** PlannableLocation _name. */
                        public _name?: "name";

                        /** PlannableLocation _parent_country_id. */
                        public _parent_country_id?: "parent_country_id";

                        /**
                         * Creates a new PlannableLocation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PlannableLocation instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IPlannableLocation): google.ads.googleads.v8.services.PlannableLocation;

                        /**
                         * Encodes the specified PlannableLocation message. Does not implicitly {@link google.ads.googleads.v8.services.PlannableLocation.verify|verify} messages.
                         * @param m PlannableLocation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IPlannableLocation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PlannableLocation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IPlannableLocation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PlannableLocation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.PlannableLocation;

                        /**
                         * Verifies a PlannableLocation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PlannableLocation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PlannableLocation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.PlannableLocation;

                        /**
                         * Creates a plain object from a PlannableLocation message. Also converts values to other types if specified.
                         * @param m PlannableLocation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.PlannableLocation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PlannableLocation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ListPlannableProductsRequest. */
                    interface IListPlannableProductsRequest {

                        /** ListPlannableProductsRequest plannable_location_id */
                        plannable_location_id?: (string|null);
                    }

                    /** Represents a ListPlannableProductsRequest. */
                    class ListPlannableProductsRequest implements IListPlannableProductsRequest {

                        /**
                         * Constructs a new ListPlannableProductsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IListPlannableProductsRequest);

                        /** ListPlannableProductsRequest plannable_location_id. */
                        public plannable_location_id: string;

                        /**
                         * Creates a new ListPlannableProductsRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ListPlannableProductsRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IListPlannableProductsRequest): google.ads.googleads.v8.services.ListPlannableProductsRequest;

                        /**
                         * Encodes the specified ListPlannableProductsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.ListPlannableProductsRequest.verify|verify} messages.
                         * @param m ListPlannableProductsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IListPlannableProductsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListPlannableProductsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IListPlannableProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListPlannableProductsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ListPlannableProductsRequest;

                        /**
                         * Verifies a ListPlannableProductsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListPlannableProductsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ListPlannableProductsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ListPlannableProductsRequest;

                        /**
                         * Creates a plain object from a ListPlannableProductsRequest message. Also converts values to other types if specified.
                         * @param m ListPlannableProductsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ListPlannableProductsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListPlannableProductsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ListPlannableProductsResponse. */
                    interface IListPlannableProductsResponse {

                        /** ListPlannableProductsResponse product_metadata */
                        product_metadata?: (google.ads.googleads.v8.services.IProductMetadata[]|null);
                    }

                    /** Represents a ListPlannableProductsResponse. */
                    class ListPlannableProductsResponse implements IListPlannableProductsResponse {

                        /**
                         * Constructs a new ListPlannableProductsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IListPlannableProductsResponse);

                        /** ListPlannableProductsResponse product_metadata. */
                        public product_metadata: google.ads.googleads.v8.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.v8.services.IListPlannableProductsResponse): google.ads.googleads.v8.services.ListPlannableProductsResponse;

                        /**
                         * Encodes the specified ListPlannableProductsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.ListPlannableProductsResponse.verify|verify} messages.
                         * @param m ListPlannableProductsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IListPlannableProductsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ListPlannableProductsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IListPlannableProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ListPlannableProductsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ListPlannableProductsResponse;

                        /**
                         * Verifies a ListPlannableProductsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ListPlannableProductsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ListPlannableProductsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ListPlannableProductsResponse;

                        /**
                         * Creates a plain object from a ListPlannableProductsResponse message. Also converts values to other types if specified.
                         * @param m ListPlannableProductsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ListPlannableProductsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ListPlannableProductsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.services.IPlannableTargeting|null);
                    }

                    /** Represents a ProductMetadata. */
                    class ProductMetadata implements IProductMetadata {

                        /**
                         * Constructs a new ProductMetadata.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IPlannableTargeting|null);

                        /** ProductMetadata _plannable_product_code. */
                        public _plannable_product_code?: "plannable_product_code";

                        /**
                         * Creates a new ProductMetadata instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductMetadata instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IProductMetadata): google.ads.googleads.v8.services.ProductMetadata;

                        /**
                         * Encodes the specified ProductMetadata message. Does not implicitly {@link google.ads.googleads.v8.services.ProductMetadata.verify|verify} messages.
                         * @param m ProductMetadata message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IProductMetadata, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductMetadata message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IProductMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductMetadata message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ProductMetadata;

                        /**
                         * Verifies a ProductMetadata message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductMetadata message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ProductMetadata
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ProductMetadata;

                        /**
                         * Creates a plain object from a ProductMetadata message. Also converts values to other types if specified.
                         * @param m ProductMetadata
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ProductMetadata, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductMetadata to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a PlannableTargeting. */
                    interface IPlannableTargeting {

                        /** PlannableTargeting age_ranges */
                        age_ranges?: (google.ads.googleads.v8.enums.ReachPlanAgeRangeEnum.ReachPlanAgeRange[]|null);

                        /** PlannableTargeting genders */
                        genders?: (google.ads.googleads.v8.common.IGenderInfo[]|null);

                        /** PlannableTargeting devices */
                        devices?: (google.ads.googleads.v8.common.IDeviceInfo[]|null);

                        /** PlannableTargeting networks */
                        networks?: (google.ads.googleads.v8.enums.ReachPlanNetworkEnum.ReachPlanNetwork[]|null);
                    }

                    /** Represents a PlannableTargeting. */
                    class PlannableTargeting implements IPlannableTargeting {

                        /**
                         * Constructs a new PlannableTargeting.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IPlannableTargeting);

                        /** PlannableTargeting age_ranges. */
                        public age_ranges: google.ads.googleads.v8.enums.ReachPlanAgeRangeEnum.ReachPlanAgeRange[];

                        /** PlannableTargeting genders. */
                        public genders: google.ads.googleads.v8.common.IGenderInfo[];

                        /** PlannableTargeting devices. */
                        public devices: google.ads.googleads.v8.common.IDeviceInfo[];

                        /** PlannableTargeting networks. */
                        public networks: google.ads.googleads.v8.enums.ReachPlanNetworkEnum.ReachPlanNetwork[];

                        /**
                         * Creates a new PlannableTargeting instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PlannableTargeting instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IPlannableTargeting): google.ads.googleads.v8.services.PlannableTargeting;

                        /**
                         * Encodes the specified PlannableTargeting message. Does not implicitly {@link google.ads.googleads.v8.services.PlannableTargeting.verify|verify} messages.
                         * @param m PlannableTargeting message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IPlannableTargeting, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PlannableTargeting message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IPlannableTargeting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PlannableTargeting message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.PlannableTargeting;

                        /**
                         * Verifies a PlannableTargeting message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PlannableTargeting message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PlannableTargeting
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.PlannableTargeting;

                        /**
                         * Creates a plain object from a PlannableTargeting message. Also converts values to other types if specified.
                         * @param m PlannableTargeting
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.PlannableTargeting, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PlannableTargeting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a GenerateProductMixIdeasRequest. */
                    interface IGenerateProductMixIdeasRequest {

                        /** GenerateProductMixIdeasRequest customer_id */
                        customer_id?: (string|null);

                        /** GenerateProductMixIdeasRequest plannable_location_id */
                        plannable_location_id?: (string|null);

                        /** GenerateProductMixIdeasRequest currency_code */
                        currency_code?: (string|null);

                        /** GenerateProductMixIdeasRequest budget_micros */
                        budget_micros?: (number|null);

                        /** GenerateProductMixIdeasRequest preferences */
                        preferences?: (google.ads.googleads.v8.services.IPreferences|null);
                    }

                    /** Represents a GenerateProductMixIdeasRequest. */
                    class GenerateProductMixIdeasRequest implements IGenerateProductMixIdeasRequest {

                        /**
                         * Constructs a new GenerateProductMixIdeasRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGenerateProductMixIdeasRequest);

                        /** GenerateProductMixIdeasRequest customer_id. */
                        public customer_id: string;

                        /** GenerateProductMixIdeasRequest plannable_location_id. */
                        public plannable_location_id: string;

                        /** GenerateProductMixIdeasRequest currency_code. */
                        public currency_code: string;

                        /** GenerateProductMixIdeasRequest budget_micros. */
                        public budget_micros: number;

                        /** GenerateProductMixIdeasRequest preferences. */
                        public preferences?: (google.ads.googleads.v8.services.IPreferences|null);

                        /**
                         * Creates a new GenerateProductMixIdeasRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateProductMixIdeasRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGenerateProductMixIdeasRequest): google.ads.googleads.v8.services.GenerateProductMixIdeasRequest;

                        /**
                         * Encodes the specified GenerateProductMixIdeasRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GenerateProductMixIdeasRequest.verify|verify} messages.
                         * @param m GenerateProductMixIdeasRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGenerateProductMixIdeasRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateProductMixIdeasRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GenerateProductMixIdeasRequest.verify|verify} messages.
                         * @param message GenerateProductMixIdeasRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGenerateProductMixIdeasRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateProductMixIdeasRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GenerateProductMixIdeasRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GenerateProductMixIdeasRequest;

                        /**
                         * Decodes a GenerateProductMixIdeasRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateProductMixIdeasRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GenerateProductMixIdeasRequest;

                        /**
                         * Verifies a GenerateProductMixIdeasRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateProductMixIdeasRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GenerateProductMixIdeasRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GenerateProductMixIdeasRequest;

                        /**
                         * Creates a plain object from a GenerateProductMixIdeasRequest message. Also converts values to other types if specified.
                         * @param m GenerateProductMixIdeasRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GenerateProductMixIdeasRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateProductMixIdeasRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a Preferences. */
                    interface IPreferences {

                        /** Preferences is_skippable */
                        is_skippable?: (boolean|null);

                        /** Preferences starts_with_sound */
                        starts_with_sound?: (boolean|null);

                        /** Preferences ad_length */
                        ad_length?: (google.ads.googleads.v8.enums.ReachPlanAdLengthEnum.ReachPlanAdLength|keyof typeof google.ads.googleads.v8.enums.ReachPlanAdLengthEnum.ReachPlanAdLength|null);

                        /** Preferences top_content_only */
                        top_content_only?: (boolean|null);

                        /** Preferences has_guaranteed_price */
                        has_guaranteed_price?: (boolean|null);
                    }

                    /** Represents a Preferences. */
                    class Preferences implements IPreferences {

                        /**
                         * Constructs a new Preferences.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IPreferences);

                        /** Preferences is_skippable. */
                        public is_skippable?: (boolean|null);

                        /** Preferences starts_with_sound. */
                        public starts_with_sound?: (boolean|null);

                        /** Preferences ad_length. */
                        public ad_length: (google.ads.googleads.v8.enums.ReachPlanAdLengthEnum.ReachPlanAdLength|keyof typeof google.ads.googleads.v8.enums.ReachPlanAdLengthEnum.ReachPlanAdLength);

                        /** Preferences top_content_only. */
                        public top_content_only?: (boolean|null);

                        /** Preferences has_guaranteed_price. */
                        public has_guaranteed_price?: (boolean|null);

                        /** Preferences _is_skippable. */
                        public _is_skippable?: "is_skippable";

                        /** Preferences _starts_with_sound. */
                        public _starts_with_sound?: "starts_with_sound";

                        /** Preferences _top_content_only. */
                        public _top_content_only?: "top_content_only";

                        /** Preferences _has_guaranteed_price. */
                        public _has_guaranteed_price?: "has_guaranteed_price";

                        /**
                         * Creates a new Preferences instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Preferences instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IPreferences): google.ads.googleads.v8.services.Preferences;

                        /**
                         * Encodes the specified Preferences message. Does not implicitly {@link google.ads.googleads.v8.services.Preferences.verify|verify} messages.
                         * @param m Preferences message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IPreferences, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Preferences message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.Preferences.verify|verify} messages.
                         * @param message Preferences message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IPreferences, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Preferences message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns Preferences
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.Preferences;

                        /**
                         * Decodes a Preferences message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Preferences
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.Preferences;

                        /**
                         * Verifies a Preferences message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Preferences message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns Preferences
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.Preferences;

                        /**
                         * Creates a plain object from a Preferences message. Also converts values to other types if specified.
                         * @param m Preferences
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.Preferences, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Preferences to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a GenerateProductMixIdeasResponse. */
                    interface IGenerateProductMixIdeasResponse {

                        /** GenerateProductMixIdeasResponse product_allocation */
                        product_allocation?: (google.ads.googleads.v8.services.IProductAllocation[]|null);
                    }

                    /** Represents a GenerateProductMixIdeasResponse. */
                    class GenerateProductMixIdeasResponse implements IGenerateProductMixIdeasResponse {

                        /**
                         * Constructs a new GenerateProductMixIdeasResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGenerateProductMixIdeasResponse);

                        /** GenerateProductMixIdeasResponse product_allocation. */
                        public product_allocation: google.ads.googleads.v8.services.IProductAllocation[];

                        /**
                         * Creates a new GenerateProductMixIdeasResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateProductMixIdeasResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGenerateProductMixIdeasResponse): google.ads.googleads.v8.services.GenerateProductMixIdeasResponse;

                        /**
                         * Encodes the specified GenerateProductMixIdeasResponse message. Does not implicitly {@link google.ads.googleads.v8.services.GenerateProductMixIdeasResponse.verify|verify} messages.
                         * @param m GenerateProductMixIdeasResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGenerateProductMixIdeasResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateProductMixIdeasResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GenerateProductMixIdeasResponse.verify|verify} messages.
                         * @param message GenerateProductMixIdeasResponse message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGenerateProductMixIdeasResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateProductMixIdeasResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GenerateProductMixIdeasResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GenerateProductMixIdeasResponse;

                        /**
                         * Decodes a GenerateProductMixIdeasResponse message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GenerateProductMixIdeasResponse
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GenerateProductMixIdeasResponse;

                        /**
                         * Verifies a GenerateProductMixIdeasResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateProductMixIdeasResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GenerateProductMixIdeasResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GenerateProductMixIdeasResponse;

                        /**
                         * Creates a plain object from a GenerateProductMixIdeasResponse message. Also converts values to other types if specified.
                         * @param m GenerateProductMixIdeasResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GenerateProductMixIdeasResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateProductMixIdeasResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ProductAllocation. */
                    interface IProductAllocation {

                        /** ProductAllocation plannable_product_code */
                        plannable_product_code?: (string|null);

                        /** ProductAllocation budget_micros */
                        budget_micros?: (number|null);
                    }

                    /** Represents a ProductAllocation. */
                    class ProductAllocation implements IProductAllocation {

                        /**
                         * Constructs a new ProductAllocation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IProductAllocation);

                        /** ProductAllocation plannable_product_code. */
                        public plannable_product_code?: (string|null);

                        /** ProductAllocation budget_micros. */
                        public budget_micros?: (number|null);

                        /** ProductAllocation _plannable_product_code. */
                        public _plannable_product_code?: "plannable_product_code";

                        /** ProductAllocation _budget_micros. */
                        public _budget_micros?: "budget_micros";

                        /**
                         * Creates a new ProductAllocation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductAllocation instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IProductAllocation): google.ads.googleads.v8.services.ProductAllocation;

                        /**
                         * Encodes the specified ProductAllocation message. Does not implicitly {@link google.ads.googleads.v8.services.ProductAllocation.verify|verify} messages.
                         * @param m ProductAllocation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IProductAllocation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductAllocation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.ProductAllocation.verify|verify} messages.
                         * @param message ProductAllocation message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IProductAllocation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductAllocation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns ProductAllocation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.ProductAllocation;

                        /**
                         * Decodes a ProductAllocation message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductAllocation
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.ProductAllocation;

                        /**
                         * Verifies a ProductAllocation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ProductAllocation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ProductAllocation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ProductAllocation;

                        /**
                         * Creates a plain object from a ProductAllocation message. Also converts values to other types if specified.
                         * @param m ProductAllocation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ProductAllocation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductAllocation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.services.ICampaignDuration|null);

                        /** GenerateReachForecastRequest cookie_frequency_cap */
                        cookie_frequency_cap?: (number|null);

                        /** GenerateReachForecastRequest cookie_frequency_cap_setting */
                        cookie_frequency_cap_setting?: (google.ads.googleads.v8.services.IFrequencyCap|null);

                        /** GenerateReachForecastRequest min_effective_frequency */
                        min_effective_frequency?: (number|null);

                        /** GenerateReachForecastRequest effective_frequency_limit */
                        effective_frequency_limit?: (google.ads.googleads.v8.services.IEffectiveFrequencyLimit|null);

                        /** GenerateReachForecastRequest targeting */
                        targeting?: (google.ads.googleads.v8.services.ITargeting|null);

                        /** GenerateReachForecastRequest planned_products */
                        planned_products?: (google.ads.googleads.v8.services.IPlannedProduct[]|null);
                    }

                    /** Represents a GenerateReachForecastRequest. */
                    class GenerateReachForecastRequest implements IGenerateReachForecastRequest {

                        /**
                         * Constructs a new GenerateReachForecastRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.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.v8.services.IFrequencyCap|null);

                        /** GenerateReachForecastRequest min_effective_frequency. */
                        public min_effective_frequency?: (number|null);

                        /** GenerateReachForecastRequest effective_frequency_limit. */
                        public effective_frequency_limit?: (google.ads.googleads.v8.services.IEffectiveFrequencyLimit|null);

                        /** GenerateReachForecastRequest targeting. */
                        public targeting?: (google.ads.googleads.v8.services.ITargeting|null);

                        /** GenerateReachForecastRequest planned_products. */
                        public planned_products: google.ads.googleads.v8.services.IPlannedProduct[];

                        /** GenerateReachForecastRequest _currency_code. */
                        public _currency_code?: "currency_code";

                        /** GenerateReachForecastRequest _cookie_frequency_cap. */
                        public _cookie_frequency_cap?: "cookie_frequency_cap";

                        /** GenerateReachForecastRequest _min_effective_frequency. */
                        public _min_effective_frequency?: "min_effective_frequency";

                        /** GenerateReachForecastRequest _effective_frequency_limit. */
                        public _effective_frequency_limit?: "effective_frequency_limit";

                        /**
                         * Creates a new GenerateReachForecastRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GenerateReachForecastRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGenerateReachForecastRequest): google.ads.googleads.v8.services.GenerateReachForecastRequest;

                        /**
                         * Encodes the specified GenerateReachForecastRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GenerateReachForecastRequest.verify|verify} messages.
                         * @param m GenerateReachForecastRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGenerateReachForecastRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateReachForecastRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IGenerateReachForecastRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateReachForecastRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.GenerateReachForecastRequest;

                        /**
                         * Verifies a GenerateReachForecastRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateReachForecastRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GenerateReachForecastRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GenerateReachForecastRequest;

                        /**
                         * Creates a plain object from a GenerateReachForecastRequest message. Also converts values to other types if specified.
                         * @param m GenerateReachForecastRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GenerateReachForecastRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateReachForecastRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IEffectiveFrequencyLimit): google.ads.googleads.v8.services.EffectiveFrequencyLimit;

                        /**
                         * Encodes the specified EffectiveFrequencyLimit message. Does not implicitly {@link google.ads.googleads.v8.services.EffectiveFrequencyLimit.verify|verify} messages.
                         * @param m EffectiveFrequencyLimit message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IEffectiveFrequencyLimit, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified EffectiveFrequencyLimit message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IEffectiveFrequencyLimit, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an EffectiveFrequencyLimit message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.EffectiveFrequencyLimit;

                        /**
                         * Verifies an EffectiveFrequencyLimit message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an EffectiveFrequencyLimit message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns EffectiveFrequencyLimit
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.EffectiveFrequencyLimit;

                        /**
                         * Creates a plain object from an EffectiveFrequencyLimit message. Also converts values to other types if specified.
                         * @param m EffectiveFrequencyLimit
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.EffectiveFrequencyLimit, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this EffectiveFrequencyLimit to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a FrequencyCap. */
                    interface IFrequencyCap {

                        /** FrequencyCap impressions */
                        impressions?: (number|null);

                        /** FrequencyCap time_unit */
                        time_unit?: (google.ads.googleads.v8.enums.FrequencyCapTimeUnitEnum.FrequencyCapTimeUnit|keyof typeof google.ads.googleads.v8.enums.FrequencyCapTimeUnitEnum.FrequencyCapTimeUnit|null);
                    }

                    /** Represents a FrequencyCap. */
                    class FrequencyCap implements IFrequencyCap {

                        /**
                         * Constructs a new FrequencyCap.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IFrequencyCap);

                        /** FrequencyCap impressions. */
                        public impressions: number;

                        /** FrequencyCap time_unit. */
                        public time_unit: (google.ads.googleads.v8.enums.FrequencyCapTimeUnitEnum.FrequencyCapTimeUnit|keyof typeof google.ads.googleads.v8.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.v8.services.IFrequencyCap): google.ads.googleads.v8.services.FrequencyCap;

                        /**
                         * Encodes the specified FrequencyCap message. Does not implicitly {@link google.ads.googleads.v8.services.FrequencyCap.verify|verify} messages.
                         * @param m FrequencyCap message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IFrequencyCap, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FrequencyCap message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IFrequencyCap, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FrequencyCap message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.FrequencyCap;

                        /**
                         * Verifies a FrequencyCap message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a FrequencyCap message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns FrequencyCap
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.FrequencyCap;

                        /**
                         * Creates a plain object from a FrequencyCap message. Also converts values to other types if specified.
                         * @param m FrequencyCap
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.FrequencyCap, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FrequencyCap to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a Targeting. */
                    interface ITargeting {

                        /** Targeting plannable_location_id */
                        plannable_location_id?: (string|null);

                        /** Targeting age_range */
                        age_range?: (google.ads.googleads.v8.enums.ReachPlanAgeRangeEnum.ReachPlanAgeRange|keyof typeof google.ads.googleads.v8.enums.ReachPlanAgeRangeEnum.ReachPlanAgeRange|null);

                        /** Targeting genders */
                        genders?: (google.ads.googleads.v8.common.IGenderInfo[]|null);

                        /** Targeting devices */
                        devices?: (google.ads.googleads.v8.common.IDeviceInfo[]|null);

                        /** Targeting network */
                        network?: (google.ads.googleads.v8.enums.ReachPlanNetworkEnum.ReachPlanNetwork|keyof typeof google.ads.googleads.v8.enums.ReachPlanNetworkEnum.ReachPlanNetwork|null);
                    }

                    /** Represents a Targeting. */
                    class Targeting implements ITargeting {

                        /**
                         * Constructs a new Targeting.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ITargeting);

                        /** Targeting plannable_location_id. */
                        public plannable_location_id?: (string|null);

                        /** Targeting age_range. */
                        public age_range: (google.ads.googleads.v8.enums.ReachPlanAgeRangeEnum.ReachPlanAgeRange|keyof typeof google.ads.googleads.v8.enums.ReachPlanAgeRangeEnum.ReachPlanAgeRange);

                        /** Targeting genders. */
                        public genders: google.ads.googleads.v8.common.IGenderInfo[];

                        /** Targeting devices. */
                        public devices: google.ads.googleads.v8.common.IDeviceInfo[];

                        /** Targeting network. */
                        public network: (google.ads.googleads.v8.enums.ReachPlanNetworkEnum.ReachPlanNetwork|keyof typeof google.ads.googleads.v8.enums.ReachPlanNetworkEnum.ReachPlanNetwork);

                        /** Targeting _plannable_location_id. */
                        public _plannable_location_id?: "plannable_location_id";

                        /**
                         * Creates a new Targeting instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Targeting instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.ITargeting): google.ads.googleads.v8.services.Targeting;

                        /**
                         * Encodes the specified Targeting message. Does not implicitly {@link google.ads.googleads.v8.services.Targeting.verify|verify} messages.
                         * @param m Targeting message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ITargeting, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Targeting message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ITargeting, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Targeting message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.Targeting;

                        /**
                         * Verifies a Targeting message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Targeting message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns Targeting
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.Targeting;

                        /**
                         * Creates a plain object from a Targeting message. Also converts values to other types if specified.
                         * @param m Targeting
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.Targeting, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Targeting to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a CampaignDuration. */
                    interface ICampaignDuration {

                        /** CampaignDuration duration_in_days */
                        duration_in_days?: (number|null);
                    }

                    /** Represents a CampaignDuration. */
                    class CampaignDuration implements ICampaignDuration {

                        /**
                         * Constructs a new CampaignDuration.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ICampaignDuration);

                        /** CampaignDuration duration_in_days. */
                        public duration_in_days?: (number|null);

                        /** CampaignDuration _duration_in_days. */
                        public _duration_in_days?: "duration_in_days";

                        /**
                         * Creates a new CampaignDuration instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CampaignDuration instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.ICampaignDuration): google.ads.googleads.v8.services.CampaignDuration;

                        /**
                         * Encodes the specified CampaignDuration message. Does not implicitly {@link google.ads.googleads.v8.services.CampaignDuration.verify|verify} messages.
                         * @param m CampaignDuration message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ICampaignDuration, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CampaignDuration message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ICampaignDuration, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CampaignDuration message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.CampaignDuration;

                        /**
                         * Verifies a CampaignDuration message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a CampaignDuration message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns CampaignDuration
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.CampaignDuration;

                        /**
                         * Creates a plain object from a CampaignDuration message. Also converts values to other types if specified.
                         * @param m CampaignDuration
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.CampaignDuration, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CampaignDuration to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a PlannedProduct. */
                    interface IPlannedProduct {

                        /** PlannedProduct plannable_product_code */
                        plannable_product_code?: (string|null);

                        /** PlannedProduct budget_micros */
                        budget_micros?: (number|null);
                    }

                    /** Represents a PlannedProduct. */
                    class PlannedProduct implements IPlannedProduct {

                        /**
                         * Constructs a new PlannedProduct.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IPlannedProduct);

                        /** PlannedProduct plannable_product_code. */
                        public plannable_product_code?: (string|null);

                        /** PlannedProduct budget_micros. */
                        public budget_micros?: (number|null);

                        /** PlannedProduct _plannable_product_code. */
                        public _plannable_product_code?: "plannable_product_code";

                        /** PlannedProduct _budget_micros. */
                        public _budget_micros?: "budget_micros";

                        /**
                         * Creates a new PlannedProduct instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PlannedProduct instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IPlannedProduct): google.ads.googleads.v8.services.PlannedProduct;

                        /**
                         * Encodes the specified PlannedProduct message. Does not implicitly {@link google.ads.googleads.v8.services.PlannedProduct.verify|verify} messages.
                         * @param m PlannedProduct message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IPlannedProduct, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PlannedProduct message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IPlannedProduct, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PlannedProduct message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.PlannedProduct;

                        /**
                         * Verifies a PlannedProduct message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PlannedProduct message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PlannedProduct
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.PlannedProduct;

                        /**
                         * Creates a plain object from a PlannedProduct message. Also converts values to other types if specified.
                         * @param m PlannedProduct
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.PlannedProduct, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PlannedProduct to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a GenerateReachForecastResponse. */
                    interface IGenerateReachForecastResponse {

                        /** GenerateReachForecastResponse on_target_audience_metrics */
                        on_target_audience_metrics?: (google.ads.googleads.v8.services.IOnTargetAudienceMetrics|null);

                        /** GenerateReachForecastResponse reach_curve */
                        reach_curve?: (google.ads.googleads.v8.services.IReachCurve|null);
                    }

                    /** Represents a GenerateReachForecastResponse. */
                    class GenerateReachForecastResponse implements IGenerateReachForecastResponse {

                        /**
                         * Constructs a new GenerateReachForecastResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGenerateReachForecastResponse);

                        /** GenerateReachForecastResponse on_target_audience_metrics. */
                        public on_target_audience_metrics?: (google.ads.googleads.v8.services.IOnTargetAudienceMetrics|null);

                        /** GenerateReachForecastResponse reach_curve. */
                        public reach_curve?: (google.ads.googleads.v8.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.v8.services.IGenerateReachForecastResponse): google.ads.googleads.v8.services.GenerateReachForecastResponse;

                        /**
                         * Encodes the specified GenerateReachForecastResponse message. Does not implicitly {@link google.ads.googleads.v8.services.GenerateReachForecastResponse.verify|verify} messages.
                         * @param m GenerateReachForecastResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGenerateReachForecastResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GenerateReachForecastResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IGenerateReachForecastResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GenerateReachForecastResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.GenerateReachForecastResponse;

                        /**
                         * Verifies a GenerateReachForecastResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GenerateReachForecastResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GenerateReachForecastResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GenerateReachForecastResponse;

                        /**
                         * Creates a plain object from a GenerateReachForecastResponse message. Also converts values to other types if specified.
                         * @param m GenerateReachForecastResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GenerateReachForecastResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GenerateReachForecastResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ReachCurve. */
                    interface IReachCurve {

                        /** ReachCurve reach_forecasts */
                        reach_forecasts?: (google.ads.googleads.v8.services.IReachForecast[]|null);
                    }

                    /** Represents a ReachCurve. */
                    class ReachCurve implements IReachCurve {

                        /**
                         * Constructs a new ReachCurve.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IReachCurve);

                        /** ReachCurve reach_forecasts. */
                        public reach_forecasts: google.ads.googleads.v8.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.v8.services.IReachCurve): google.ads.googleads.v8.services.ReachCurve;

                        /**
                         * Encodes the specified ReachCurve message. Does not implicitly {@link google.ads.googleads.v8.services.ReachCurve.verify|verify} messages.
                         * @param m ReachCurve message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IReachCurve, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ReachCurve message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IReachCurve, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ReachCurve message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ReachCurve;

                        /**
                         * Verifies a ReachCurve message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ReachCurve message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ReachCurve
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ReachCurve;

                        /**
                         * Creates a plain object from a ReachCurve message. Also converts values to other types if specified.
                         * @param m ReachCurve
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ReachCurve, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ReachCurve to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a ReachForecast. */
                    interface IReachForecast {

                        /** ReachForecast cost_micros */
                        cost_micros?: (number|null);

                        /** ReachForecast forecast */
                        forecast?: (google.ads.googleads.v8.services.IForecast|null);

                        /** ReachForecast planned_product_reach_forecasts */
                        planned_product_reach_forecasts?: (google.ads.googleads.v8.services.IPlannedProductReachForecast[]|null);
                    }

                    /** Represents a ReachForecast. */
                    class ReachForecast implements IReachForecast {

                        /**
                         * Constructs a new ReachForecast.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IReachForecast);

                        /** ReachForecast cost_micros. */
                        public cost_micros: number;

                        /** ReachForecast forecast. */
                        public forecast?: (google.ads.googleads.v8.services.IForecast|null);

                        /** ReachForecast planned_product_reach_forecasts. */
                        public planned_product_reach_forecasts: google.ads.googleads.v8.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.v8.services.IReachForecast): google.ads.googleads.v8.services.ReachForecast;

                        /**
                         * Encodes the specified ReachForecast message. Does not implicitly {@link google.ads.googleads.v8.services.ReachForecast.verify|verify} messages.
                         * @param m ReachForecast message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IReachForecast, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ReachForecast message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IReachForecast, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ReachForecast message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ReachForecast;

                        /**
                         * Verifies a ReachForecast message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ReachForecast message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ReachForecast
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ReachForecast;

                        /**
                         * Creates a plain object from a ReachForecast message. Also converts values to other types if specified.
                         * @param m ReachForecast
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ReachForecast, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ReachForecast to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.services.IEffectiveFrequencyBreakdown[]|null);
                    }

                    /** Represents a Forecast. */
                    class Forecast implements IForecast {

                        /**
                         * Constructs a new Forecast.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IEffectiveFrequencyBreakdown[];

                        /** Forecast _on_target_reach. */
                        public _on_target_reach?: "on_target_reach";

                        /** Forecast _total_reach. */
                        public _total_reach?: "total_reach";

                        /** Forecast _on_target_impressions. */
                        public _on_target_impressions?: "on_target_impressions";

                        /** Forecast _total_impressions. */
                        public _total_impressions?: "total_impressions";

                        /** Forecast _viewable_impressions. */
                        public _viewable_impressions?: "viewable_impressions";

                        /**
                         * Creates a new Forecast instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Forecast instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IForecast): google.ads.googleads.v8.services.Forecast;

                        /**
                         * Encodes the specified Forecast message. Does not implicitly {@link google.ads.googleads.v8.services.Forecast.verify|verify} messages.
                         * @param m Forecast message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IForecast, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Forecast message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IForecast, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Forecast message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.Forecast;

                        /**
                         * Verifies a Forecast message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a Forecast message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns Forecast
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.Forecast;

                        /**
                         * Creates a plain object from a Forecast message. Also converts values to other types if specified.
                         * @param m Forecast
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.Forecast, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Forecast to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.services.IPlannedProductForecast|null);
                    }

                    /** Represents a PlannedProductReachForecast. */
                    class PlannedProductReachForecast implements IPlannedProductReachForecast {

                        /**
                         * Constructs a new PlannedProductReachForecast.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.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.v8.services.IPlannedProductReachForecast): google.ads.googleads.v8.services.PlannedProductReachForecast;

                        /**
                         * Encodes the specified PlannedProductReachForecast message. Does not implicitly {@link google.ads.googleads.v8.services.PlannedProductReachForecast.verify|verify} messages.
                         * @param m PlannedProductReachForecast message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IPlannedProductReachForecast, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PlannedProductReachForecast message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IPlannedProductReachForecast, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PlannedProductReachForecast message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.PlannedProductReachForecast;

                        /**
                         * Verifies a PlannedProductReachForecast message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PlannedProductReachForecast message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PlannedProductReachForecast
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.PlannedProductReachForecast;

                        /**
                         * Creates a plain object from a PlannedProductReachForecast message. Also converts values to other types if specified.
                         * @param m PlannedProductReachForecast
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.PlannedProductReachForecast, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PlannedProductReachForecast to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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);
                    }

                    /** Represents a PlannedProductForecast. */
                    class PlannedProductForecast implements IPlannedProductForecast {

                        /**
                         * Constructs a new PlannedProductForecast.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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 _viewable_impressions. */
                        public _viewable_impressions?: "viewable_impressions";

                        /**
                         * Creates a new PlannedProductForecast instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PlannedProductForecast instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IPlannedProductForecast): google.ads.googleads.v8.services.PlannedProductForecast;

                        /**
                         * Encodes the specified PlannedProductForecast message. Does not implicitly {@link google.ads.googleads.v8.services.PlannedProductForecast.verify|verify} messages.
                         * @param m PlannedProductForecast message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IPlannedProductForecast, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PlannedProductForecast message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IPlannedProductForecast, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PlannedProductForecast message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.PlannedProductForecast;

                        /**
                         * Verifies a PlannedProductForecast message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a PlannedProductForecast message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns PlannedProductForecast
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.PlannedProductForecast;

                        /**
                         * Creates a plain object from a PlannedProductForecast message. Also converts values to other types if specified.
                         * @param m PlannedProductForecast
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.PlannedProductForecast, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PlannedProductForecast to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IOnTargetAudienceMetrics);

                        /** OnTargetAudienceMetrics youtube_audience_size. */
                        public youtube_audience_size?: (number|null);

                        /** OnTargetAudienceMetrics census_audience_size. */
                        public census_audience_size?: (number|null);

                        /** OnTargetAudienceMetrics _youtube_audience_size. */
                        public _youtube_audience_size?: "youtube_audience_size";

                        /** OnTargetAudienceMetrics _census_audience_size. */
                        public _census_audience_size?: "census_audience_size";

                        /**
                         * Creates a new OnTargetAudienceMetrics instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OnTargetAudienceMetrics instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IOnTargetAudienceMetrics): google.ads.googleads.v8.services.OnTargetAudienceMetrics;

                        /**
                         * Encodes the specified OnTargetAudienceMetrics message. Does not implicitly {@link google.ads.googleads.v8.services.OnTargetAudienceMetrics.verify|verify} messages.
                         * @param m OnTargetAudienceMetrics message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IOnTargetAudienceMetrics, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OnTargetAudienceMetrics message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IOnTargetAudienceMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OnTargetAudienceMetrics message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.OnTargetAudienceMetrics;

                        /**
                         * Verifies an OnTargetAudienceMetrics message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an OnTargetAudienceMetrics message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns OnTargetAudienceMetrics
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.OnTargetAudienceMetrics;

                        /**
                         * Creates a plain object from an OnTargetAudienceMetrics message. Also converts values to other types if specified.
                         * @param m OnTargetAudienceMetrics
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.OnTargetAudienceMetrics, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OnTargetAudienceMetrics to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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);
                    }

                    /** Represents an EffectiveFrequencyBreakdown. */
                    class EffectiveFrequencyBreakdown implements IEffectiveFrequencyBreakdown {

                        /**
                         * Constructs a new EffectiveFrequencyBreakdown.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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;

                        /**
                         * Creates a new EffectiveFrequencyBreakdown instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns EffectiveFrequencyBreakdown instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IEffectiveFrequencyBreakdown): google.ads.googleads.v8.services.EffectiveFrequencyBreakdown;

                        /**
                         * Encodes the specified EffectiveFrequencyBreakdown message. Does not implicitly {@link google.ads.googleads.v8.services.EffectiveFrequencyBreakdown.verify|verify} messages.
                         * @param m EffectiveFrequencyBreakdown message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IEffectiveFrequencyBreakdown, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified EffectiveFrequencyBreakdown message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IEffectiveFrequencyBreakdown, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an EffectiveFrequencyBreakdown message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.EffectiveFrequencyBreakdown;

                        /**
                         * Verifies an EffectiveFrequencyBreakdown message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an EffectiveFrequencyBreakdown message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns EffectiveFrequencyBreakdown
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.EffectiveFrequencyBreakdown;

                        /**
                         * Creates a plain object from an EffectiveFrequencyBreakdown message. Also converts values to other types if specified.
                         * @param m EffectiveFrequencyBreakdown
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.EffectiveFrequencyBreakdown, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this EffectiveFrequencyBreakdown to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetRecommendation.
                         * @param request GetRecommendationRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Recommendation
                         */
                        public getRecommendation(request: google.ads.googleads.v8.services.IGetRecommendationRequest, callback: google.ads.googleads.v8.services.RecommendationService.GetRecommendationCallback): void;

                        /**
                         * Calls GetRecommendation.
                         * @param request GetRecommendationRequest message or plain object
                         * @returns Promise
                         */
                        public getRecommendation(request: google.ads.googleads.v8.services.IGetRecommendationRequest): Promise<google.ads.googleads.v8.resources.Recommendation>;

                        /**
                         * 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.v8.services.IApplyRecommendationRequest, callback: google.ads.googleads.v8.services.RecommendationService.ApplyRecommendationCallback): void;

                        /**
                         * Calls ApplyRecommendation.
                         * @param request ApplyRecommendationRequest message or plain object
                         * @returns Promise
                         */
                        public applyRecommendation(request: google.ads.googleads.v8.services.IApplyRecommendationRequest): Promise<google.ads.googleads.v8.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.v8.services.IDismissRecommendationRequest, callback: google.ads.googleads.v8.services.RecommendationService.DismissRecommendationCallback): void;

                        /**
                         * Calls DismissRecommendation.
                         * @param request DismissRecommendationRequest message or plain object
                         * @returns Promise
                         */
                        public dismissRecommendation(request: google.ads.googleads.v8.services.IDismissRecommendationRequest): Promise<google.ads.googleads.v8.services.DismissRecommendationResponse>;
                    }

                    namespace RecommendationService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.RecommendationService#getRecommendation}.
                         * @param error Error, if any
                         * @param [response] Recommendation
                         */
                        type GetRecommendationCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.Recommendation) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.RecommendationService#applyRecommendation}.
                         * @param error Error, if any
                         * @param [response] ApplyRecommendationResponse
                         */
                        type ApplyRecommendationCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.ApplyRecommendationResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.RecommendationService#dismissRecommendation}.
                         * @param error Error, if any
                         * @param [response] DismissRecommendationResponse
                         */
                        type DismissRecommendationCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.DismissRecommendationResponse) => void;
                    }

                    /** Properties of a GetRecommendationRequest. */
                    interface IGetRecommendationRequest {

                        /** GetRecommendationRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetRecommendationRequest. */
                    class GetRecommendationRequest implements IGetRecommendationRequest {

                        /**
                         * Constructs a new GetRecommendationRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetRecommendationRequest);

                        /** GetRecommendationRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetRecommendationRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetRecommendationRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetRecommendationRequest): google.ads.googleads.v8.services.GetRecommendationRequest;

                        /**
                         * Encodes the specified GetRecommendationRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetRecommendationRequest.verify|verify} messages.
                         * @param m GetRecommendationRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetRecommendationRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetRecommendationRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetRecommendationRequest.verify|verify} messages.
                         * @param message GetRecommendationRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetRecommendationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetRecommendationRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetRecommendationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetRecommendationRequest;

                        /**
                         * Decodes a GetRecommendationRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetRecommendationRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetRecommendationRequest;

                        /**
                         * Verifies a GetRecommendationRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetRecommendationRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetRecommendationRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetRecommendationRequest;

                        /**
                         * Creates a plain object from a GetRecommendationRequest message. Also converts values to other types if specified.
                         * @param m GetRecommendationRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetRecommendationRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetRecommendationRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an ApplyRecommendationRequest. */
                    interface IApplyRecommendationRequest {

                        /** ApplyRecommendationRequest customer_id */
                        customer_id?: (string|null);

                        /** ApplyRecommendationRequest operations */
                        operations?: (google.ads.googleads.v8.services.IApplyRecommendationOperation[]|null);

                        /** ApplyRecommendationRequest partial_failure */
                        partial_failure?: (boolean|null);
                    }

                    /** Represents an ApplyRecommendationRequest. */
                    class ApplyRecommendationRequest implements IApplyRecommendationRequest {

                        /**
                         * Constructs a new ApplyRecommendationRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IApplyRecommendationRequest);

                        /** ApplyRecommendationRequest customer_id. */
                        public customer_id: string;

                        /** ApplyRecommendationRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.services.IApplyRecommendationRequest): google.ads.googleads.v8.services.ApplyRecommendationRequest;

                        /**
                         * Encodes the specified ApplyRecommendationRequest message. Does not implicitly {@link google.ads.googleads.v8.services.ApplyRecommendationRequest.verify|verify} messages.
                         * @param m ApplyRecommendationRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IApplyRecommendationRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ApplyRecommendationRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IApplyRecommendationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ApplyRecommendationRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ApplyRecommendationRequest;

                        /**
                         * Verifies an ApplyRecommendationRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an ApplyRecommendationRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ApplyRecommendationRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ApplyRecommendationRequest;

                        /**
                         * Creates a plain object from an ApplyRecommendationRequest message. Also converts values to other types if specified.
                         * @param m ApplyRecommendationRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ApplyRecommendationRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ApplyRecommendationRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of an ApplyRecommendationOperation. */
                    interface IApplyRecommendationOperation {

                        /** ApplyRecommendationOperation resource_name */
                        resource_name?: (string|null);

                        /** ApplyRecommendationOperation campaign_budget */
                        campaign_budget?: (google.ads.googleads.v8.services.ApplyRecommendationOperation.ICampaignBudgetParameters|null);

                        /** ApplyRecommendationOperation text_ad */
                        text_ad?: (google.ads.googleads.v8.services.ApplyRecommendationOperation.ITextAdParameters|null);

                        /** ApplyRecommendationOperation keyword */
                        keyword?: (google.ads.googleads.v8.services.ApplyRecommendationOperation.IKeywordParameters|null);

                        /** ApplyRecommendationOperation target_cpa_opt_in */
                        target_cpa_opt_in?: (google.ads.googleads.v8.services.ApplyRecommendationOperation.ITargetCpaOptInParameters|null);

                        /** ApplyRecommendationOperation target_roas_opt_in */
                        target_roas_opt_in?: (google.ads.googleads.v8.services.ApplyRecommendationOperation.ITargetRoasOptInParameters|null);

                        /** ApplyRecommendationOperation callout_extension */
                        callout_extension?: (google.ads.googleads.v8.services.ApplyRecommendationOperation.ICalloutExtensionParameters|null);

                        /** ApplyRecommendationOperation call_extension */
                        call_extension?: (google.ads.googleads.v8.services.ApplyRecommendationOperation.ICallExtensionParameters|null);

                        /** ApplyRecommendationOperation sitelink_extension */
                        sitelink_extension?: (google.ads.googleads.v8.services.ApplyRecommendationOperation.ISitelinkExtensionParameters|null);

                        /** ApplyRecommendationOperation move_unused_budget */
                        move_unused_budget?: (google.ads.googleads.v8.services.ApplyRecommendationOperation.IMoveUnusedBudgetParameters|null);

                        /** ApplyRecommendationOperation responsive_search_ad */
                        responsive_search_ad?: (google.ads.googleads.v8.services.ApplyRecommendationOperation.IResponsiveSearchAdParameters|null);
                    }

                    /** Represents an ApplyRecommendationOperation. */
                    class ApplyRecommendationOperation implements IApplyRecommendationOperation {

                        /**
                         * Constructs a new ApplyRecommendationOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IApplyRecommendationOperation);

                        /** ApplyRecommendationOperation resource_name. */
                        public resource_name: string;

                        /** ApplyRecommendationOperation campaign_budget. */
                        public campaign_budget?: (google.ads.googleads.v8.services.ApplyRecommendationOperation.ICampaignBudgetParameters|null);

                        /** ApplyRecommendationOperation text_ad. */
                        public text_ad?: (google.ads.googleads.v8.services.ApplyRecommendationOperation.ITextAdParameters|null);

                        /** ApplyRecommendationOperation keyword. */
                        public keyword?: (google.ads.googleads.v8.services.ApplyRecommendationOperation.IKeywordParameters|null);

                        /** ApplyRecommendationOperation target_cpa_opt_in. */
                        public target_cpa_opt_in?: (google.ads.googleads.v8.services.ApplyRecommendationOperation.ITargetCpaOptInParameters|null);

                        /** ApplyRecommendationOperation target_roas_opt_in. */
                        public target_roas_opt_in?: (google.ads.googleads.v8.services.ApplyRecommendationOperation.ITargetRoasOptInParameters|null);

                        /** ApplyRecommendationOperation callout_extension. */
                        public callout_extension?: (google.ads.googleads.v8.services.ApplyRecommendationOperation.ICalloutExtensionParameters|null);

                        /** ApplyRecommendationOperation call_extension. */
                        public call_extension?: (google.ads.googleads.v8.services.ApplyRecommendationOperation.ICallExtensionParameters|null);

                        /** ApplyRecommendationOperation sitelink_extension. */
                        public sitelink_extension?: (google.ads.googleads.v8.services.ApplyRecommendationOperation.ISitelinkExtensionParameters|null);

                        /** ApplyRecommendationOperation move_unused_budget. */
                        public move_unused_budget?: (google.ads.googleads.v8.services.ApplyRecommendationOperation.IMoveUnusedBudgetParameters|null);

                        /** ApplyRecommendationOperation responsive_search_ad. */
                        public responsive_search_ad?: (google.ads.googleads.v8.services.ApplyRecommendationOperation.IResponsiveSearchAdParameters|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");

                        /**
                         * Creates a new ApplyRecommendationOperation instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ApplyRecommendationOperation instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IApplyRecommendationOperation): google.ads.googleads.v8.services.ApplyRecommendationOperation;

                        /**
                         * Encodes the specified ApplyRecommendationOperation message. Does not implicitly {@link google.ads.googleads.v8.services.ApplyRecommendationOperation.verify|verify} messages.
                         * @param m ApplyRecommendationOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IApplyRecommendationOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ApplyRecommendationOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IApplyRecommendationOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ApplyRecommendationOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation;

                        /**
                         * Verifies an ApplyRecommendationOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an ApplyRecommendationOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ApplyRecommendationOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ApplyRecommendationOperation;

                        /**
                         * Creates a plain object from an ApplyRecommendationOperation message. Also converts values to other types if specified.
                         * @param m ApplyRecommendationOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ApplyRecommendationOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ApplyRecommendationOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.services.ApplyRecommendationOperation.ICampaignBudgetParameters);

                            /** CampaignBudgetParameters new_budget_amount_micros. */
                            public new_budget_amount_micros?: (number|null);

                            /** CampaignBudgetParameters _new_budget_amount_micros. */
                            public _new_budget_amount_micros?: "new_budget_amount_micros";

                            /**
                             * Creates a new CampaignBudgetParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns CampaignBudgetParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v8.services.ApplyRecommendationOperation.ICampaignBudgetParameters): google.ads.googleads.v8.services.ApplyRecommendationOperation.CampaignBudgetParameters;

                            /**
                             * Encodes the specified CampaignBudgetParameters message. Does not implicitly {@link google.ads.googleads.v8.services.ApplyRecommendationOperation.CampaignBudgetParameters.verify|verify} messages.
                             * @param m CampaignBudgetParameters message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.services.ApplyRecommendationOperation.ICampaignBudgetParameters, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified CampaignBudgetParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation.ICampaignBudgetParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a CampaignBudgetParameters message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation.CampaignBudgetParameters;

                            /**
                             * Verifies a CampaignBudgetParameters message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a CampaignBudgetParameters message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns CampaignBudgetParameters
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ApplyRecommendationOperation.CampaignBudgetParameters;

                            /**
                             * Creates a plain object from a CampaignBudgetParameters message. Also converts values to other types if specified.
                             * @param m CampaignBudgetParameters
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.services.ApplyRecommendationOperation.CampaignBudgetParameters, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this CampaignBudgetParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a TextAdParameters. */
                        interface ITextAdParameters {

                            /** TextAdParameters ad */
                            ad?: (google.ads.googleads.v8.resources.IAd|null);
                        }

                        /** Represents a TextAdParameters. */
                        class TextAdParameters implements ITextAdParameters {

                            /**
                             * Constructs a new TextAdParameters.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.services.ApplyRecommendationOperation.ITextAdParameters);

                            /** TextAdParameters ad. */
                            public ad?: (google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation.ITextAdParameters): google.ads.googleads.v8.services.ApplyRecommendationOperation.TextAdParameters;

                            /**
                             * Encodes the specified TextAdParameters message. Does not implicitly {@link google.ads.googleads.v8.services.ApplyRecommendationOperation.TextAdParameters.verify|verify} messages.
                             * @param m TextAdParameters message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.services.ApplyRecommendationOperation.ITextAdParameters, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TextAdParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation.ITextAdParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TextAdParameters message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation.TextAdParameters;

                            /**
                             * Verifies a TextAdParameters message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TextAdParameters message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns TextAdParameters
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ApplyRecommendationOperation.TextAdParameters;

                            /**
                             * Creates a plain object from a TextAdParameters message. Also converts values to other types if specified.
                             * @param m TextAdParameters
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.services.ApplyRecommendationOperation.TextAdParameters, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TextAdParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a KeywordParameters. */
                        interface IKeywordParameters {

                            /** KeywordParameters ad_group */
                            ad_group?: (string|null);

                            /** KeywordParameters match_type */
                            match_type?: (google.ads.googleads.v8.enums.KeywordMatchTypeEnum.KeywordMatchType|keyof typeof google.ads.googleads.v8.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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.services.ApplyRecommendationOperation.IKeywordParameters);

                            /** KeywordParameters ad_group. */
                            public ad_group?: (string|null);

                            /** KeywordParameters match_type. */
                            public match_type: (google.ads.googleads.v8.enums.KeywordMatchTypeEnum.KeywordMatchType|keyof typeof google.ads.googleads.v8.enums.KeywordMatchTypeEnum.KeywordMatchType);

                            /** KeywordParameters cpc_bid_micros. */
                            public cpc_bid_micros?: (number|null);

                            /** KeywordParameters _ad_group. */
                            public _ad_group?: "ad_group";

                            /** KeywordParameters _cpc_bid_micros. */
                            public _cpc_bid_micros?: "cpc_bid_micros";

                            /**
                             * Creates a new KeywordParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns KeywordParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v8.services.ApplyRecommendationOperation.IKeywordParameters): google.ads.googleads.v8.services.ApplyRecommendationOperation.KeywordParameters;

                            /**
                             * Encodes the specified KeywordParameters message. Does not implicitly {@link google.ads.googleads.v8.services.ApplyRecommendationOperation.KeywordParameters.verify|verify} messages.
                             * @param m KeywordParameters message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.services.ApplyRecommendationOperation.IKeywordParameters, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified KeywordParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation.IKeywordParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a KeywordParameters message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation.KeywordParameters;

                            /**
                             * Verifies a KeywordParameters message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a KeywordParameters message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns KeywordParameters
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ApplyRecommendationOperation.KeywordParameters;

                            /**
                             * Creates a plain object from a KeywordParameters message. Also converts values to other types if specified.
                             * @param m KeywordParameters
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.services.ApplyRecommendationOperation.KeywordParameters, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this KeywordParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** 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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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);

                            /** TargetCpaOptInParameters _target_cpa_micros. */
                            public _target_cpa_micros?: "target_cpa_micros";

                            /** TargetCpaOptInParameters _new_campaign_budget_amount_micros. */
                            public _new_campaign_budget_amount_micros?: "new_campaign_budget_amount_micros";

                            /**
                             * Creates a new TargetCpaOptInParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TargetCpaOptInParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v8.services.ApplyRecommendationOperation.ITargetCpaOptInParameters): google.ads.googleads.v8.services.ApplyRecommendationOperation.TargetCpaOptInParameters;

                            /**
                             * Encodes the specified TargetCpaOptInParameters message. Does not implicitly {@link google.ads.googleads.v8.services.ApplyRecommendationOperation.TargetCpaOptInParameters.verify|verify} messages.
                             * @param m TargetCpaOptInParameters message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.services.ApplyRecommendationOperation.ITargetCpaOptInParameters, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TargetCpaOptInParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation.ITargetCpaOptInParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TargetCpaOptInParameters message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation.TargetCpaOptInParameters;

                            /**
                             * Verifies a TargetCpaOptInParameters message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TargetCpaOptInParameters message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns TargetCpaOptInParameters
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ApplyRecommendationOperation.TargetCpaOptInParameters;

                            /**
                             * Creates a plain object from a TargetCpaOptInParameters message. Also converts values to other types if specified.
                             * @param m TargetCpaOptInParameters
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.services.ApplyRecommendationOperation.TargetCpaOptInParameters, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TargetCpaOptInParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** 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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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);

                            /** TargetRoasOptInParameters _target_roas. */
                            public _target_roas?: "target_roas";

                            /** TargetRoasOptInParameters _new_campaign_budget_amount_micros. */
                            public _new_campaign_budget_amount_micros?: "new_campaign_budget_amount_micros";

                            /**
                             * Creates a new TargetRoasOptInParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns TargetRoasOptInParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v8.services.ApplyRecommendationOperation.ITargetRoasOptInParameters): google.ads.googleads.v8.services.ApplyRecommendationOperation.TargetRoasOptInParameters;

                            /**
                             * Encodes the specified TargetRoasOptInParameters message. Does not implicitly {@link google.ads.googleads.v8.services.ApplyRecommendationOperation.TargetRoasOptInParameters.verify|verify} messages.
                             * @param m TargetRoasOptInParameters message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.services.ApplyRecommendationOperation.ITargetRoasOptInParameters, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified TargetRoasOptInParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation.ITargetRoasOptInParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a TargetRoasOptInParameters message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation.TargetRoasOptInParameters;

                            /**
                             * Verifies a TargetRoasOptInParameters message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a TargetRoasOptInParameters message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns TargetRoasOptInParameters
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ApplyRecommendationOperation.TargetRoasOptInParameters;

                            /**
                             * Creates a plain object from a TargetRoasOptInParameters message. Also converts values to other types if specified.
                             * @param m TargetRoasOptInParameters
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.services.ApplyRecommendationOperation.TargetRoasOptInParameters, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this TargetRoasOptInParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a CalloutExtensionParameters. */
                        interface ICalloutExtensionParameters {

                            /** CalloutExtensionParameters callout_extensions */
                            callout_extensions?: (google.ads.googleads.v8.common.ICalloutFeedItem[]|null);
                        }

                        /** Represents a CalloutExtensionParameters. */
                        class CalloutExtensionParameters implements ICalloutExtensionParameters {

                            /**
                             * Constructs a new CalloutExtensionParameters.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.services.ApplyRecommendationOperation.ICalloutExtensionParameters);

                            /** CalloutExtensionParameters callout_extensions. */
                            public callout_extensions: google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation.ICalloutExtensionParameters): google.ads.googleads.v8.services.ApplyRecommendationOperation.CalloutExtensionParameters;

                            /**
                             * Encodes the specified CalloutExtensionParameters message. Does not implicitly {@link google.ads.googleads.v8.services.ApplyRecommendationOperation.CalloutExtensionParameters.verify|verify} messages.
                             * @param m CalloutExtensionParameters message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.services.ApplyRecommendationOperation.ICalloutExtensionParameters, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified CalloutExtensionParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation.ICalloutExtensionParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a CalloutExtensionParameters message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation.CalloutExtensionParameters;

                            /**
                             * Verifies a CalloutExtensionParameters message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a CalloutExtensionParameters message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns CalloutExtensionParameters
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ApplyRecommendationOperation.CalloutExtensionParameters;

                            /**
                             * Creates a plain object from a CalloutExtensionParameters message. Also converts values to other types if specified.
                             * @param m CalloutExtensionParameters
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.services.ApplyRecommendationOperation.CalloutExtensionParameters, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this CalloutExtensionParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a CallExtensionParameters. */
                        interface ICallExtensionParameters {

                            /** CallExtensionParameters call_extensions */
                            call_extensions?: (google.ads.googleads.v8.common.ICallFeedItem[]|null);
                        }

                        /** Represents a CallExtensionParameters. */
                        class CallExtensionParameters implements ICallExtensionParameters {

                            /**
                             * Constructs a new CallExtensionParameters.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.services.ApplyRecommendationOperation.ICallExtensionParameters);

                            /** CallExtensionParameters call_extensions. */
                            public call_extensions: google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation.ICallExtensionParameters): google.ads.googleads.v8.services.ApplyRecommendationOperation.CallExtensionParameters;

                            /**
                             * Encodes the specified CallExtensionParameters message. Does not implicitly {@link google.ads.googleads.v8.services.ApplyRecommendationOperation.CallExtensionParameters.verify|verify} messages.
                             * @param m CallExtensionParameters message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.services.ApplyRecommendationOperation.ICallExtensionParameters, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified CallExtensionParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation.ICallExtensionParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a CallExtensionParameters message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation.CallExtensionParameters;

                            /**
                             * Verifies a CallExtensionParameters message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a CallExtensionParameters message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns CallExtensionParameters
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ApplyRecommendationOperation.CallExtensionParameters;

                            /**
                             * Creates a plain object from a CallExtensionParameters message. Also converts values to other types if specified.
                             * @param m CallExtensionParameters
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.services.ApplyRecommendationOperation.CallExtensionParameters, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this CallExtensionParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a SitelinkExtensionParameters. */
                        interface ISitelinkExtensionParameters {

                            /** SitelinkExtensionParameters sitelink_extensions */
                            sitelink_extensions?: (google.ads.googleads.v8.common.ISitelinkFeedItem[]|null);
                        }

                        /** Represents a SitelinkExtensionParameters. */
                        class SitelinkExtensionParameters implements ISitelinkExtensionParameters {

                            /**
                             * Constructs a new SitelinkExtensionParameters.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.services.ApplyRecommendationOperation.ISitelinkExtensionParameters);

                            /** SitelinkExtensionParameters sitelink_extensions. */
                            public sitelink_extensions: google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation.ISitelinkExtensionParameters): google.ads.googleads.v8.services.ApplyRecommendationOperation.SitelinkExtensionParameters;

                            /**
                             * Encodes the specified SitelinkExtensionParameters message. Does not implicitly {@link google.ads.googleads.v8.services.ApplyRecommendationOperation.SitelinkExtensionParameters.verify|verify} messages.
                             * @param m SitelinkExtensionParameters message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.services.ApplyRecommendationOperation.ISitelinkExtensionParameters, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified SitelinkExtensionParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation.ISitelinkExtensionParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a SitelinkExtensionParameters message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation.SitelinkExtensionParameters;

                            /**
                             * Verifies a SitelinkExtensionParameters message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a SitelinkExtensionParameters message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns SitelinkExtensionParameters
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ApplyRecommendationOperation.SitelinkExtensionParameters;

                            /**
                             * Creates a plain object from a SitelinkExtensionParameters message. Also converts values to other types if specified.
                             * @param m SitelinkExtensionParameters
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.services.ApplyRecommendationOperation.SitelinkExtensionParameters, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this SitelinkExtensionParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** 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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.services.ApplyRecommendationOperation.IMoveUnusedBudgetParameters);

                            /** MoveUnusedBudgetParameters budget_micros_to_move. */
                            public budget_micros_to_move?: (number|null);

                            /** MoveUnusedBudgetParameters _budget_micros_to_move. */
                            public _budget_micros_to_move?: "budget_micros_to_move";

                            /**
                             * Creates a new MoveUnusedBudgetParameters instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns MoveUnusedBudgetParameters instance
                             */
                            public static create(properties?: google.ads.googleads.v8.services.ApplyRecommendationOperation.IMoveUnusedBudgetParameters): google.ads.googleads.v8.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters;

                            /**
                             * Encodes the specified MoveUnusedBudgetParameters message. Does not implicitly {@link google.ads.googleads.v8.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters.verify|verify} messages.
                             * @param m MoveUnusedBudgetParameters message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.services.ApplyRecommendationOperation.IMoveUnusedBudgetParameters, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified MoveUnusedBudgetParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation.IMoveUnusedBudgetParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a MoveUnusedBudgetParameters message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters;

                            /**
                             * Verifies a MoveUnusedBudgetParameters message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a MoveUnusedBudgetParameters message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns MoveUnusedBudgetParameters
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters;

                            /**
                             * Creates a plain object from a MoveUnusedBudgetParameters message. Also converts values to other types if specified.
                             * @param m MoveUnusedBudgetParameters
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this MoveUnusedBudgetParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a ResponsiveSearchAdParameters. */
                        interface IResponsiveSearchAdParameters {

                            /** ResponsiveSearchAdParameters ad */
                            ad?: (google.ads.googleads.v8.resources.IAd|null);
                        }

                        /** Represents a ResponsiveSearchAdParameters. */
                        class ResponsiveSearchAdParameters implements IResponsiveSearchAdParameters {

                            /**
                             * Constructs a new ResponsiveSearchAdParameters.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.services.ApplyRecommendationOperation.IResponsiveSearchAdParameters);

                            /** ResponsiveSearchAdParameters ad. */
                            public ad?: (google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation.IResponsiveSearchAdParameters): google.ads.googleads.v8.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters;

                            /**
                             * Encodes the specified ResponsiveSearchAdParameters message. Does not implicitly {@link google.ads.googleads.v8.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters.verify|verify} messages.
                             * @param m ResponsiveSearchAdParameters message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.services.ApplyRecommendationOperation.IResponsiveSearchAdParameters, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ResponsiveSearchAdParameters message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation.IResponsiveSearchAdParameters, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ResponsiveSearchAdParameters message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters;

                            /**
                             * Verifies a ResponsiveSearchAdParameters message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a ResponsiveSearchAdParameters message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns ResponsiveSearchAdParameters
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters;

                            /**
                             * Creates a plain object from a ResponsiveSearchAdParameters message. Also converts values to other types if specified.
                             * @param m ResponsiveSearchAdParameters
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ResponsiveSearchAdParameters to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }
                    }

                    /** Properties of an ApplyRecommendationResponse. */
                    interface IApplyRecommendationResponse {

                        /** ApplyRecommendationResponse results */
                        results?: (google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IApplyRecommendationResponse);

                        /** ApplyRecommendationResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IApplyRecommendationResponse): google.ads.googleads.v8.services.ApplyRecommendationResponse;

                        /**
                         * Encodes the specified ApplyRecommendationResponse message. Does not implicitly {@link google.ads.googleads.v8.services.ApplyRecommendationResponse.verify|verify} messages.
                         * @param m ApplyRecommendationResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IApplyRecommendationResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ApplyRecommendationResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IApplyRecommendationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ApplyRecommendationResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ApplyRecommendationResponse;

                        /**
                         * Verifies an ApplyRecommendationResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an ApplyRecommendationResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ApplyRecommendationResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ApplyRecommendationResponse;

                        /**
                         * Creates a plain object from an ApplyRecommendationResponse message. Also converts values to other types if specified.
                         * @param m ApplyRecommendationResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ApplyRecommendationResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ApplyRecommendationResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IApplyRecommendationResult): google.ads.googleads.v8.services.ApplyRecommendationResult;

                        /**
                         * Encodes the specified ApplyRecommendationResult message. Does not implicitly {@link google.ads.googleads.v8.services.ApplyRecommendationResult.verify|verify} messages.
                         * @param m ApplyRecommendationResult message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IApplyRecommendationResult, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ApplyRecommendationResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IApplyRecommendationResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an ApplyRecommendationResult message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.ApplyRecommendationResult;

                        /**
                         * Verifies an ApplyRecommendationResult message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an ApplyRecommendationResult message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns ApplyRecommendationResult
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.ApplyRecommendationResult;

                        /**
                         * Creates a plain object from an ApplyRecommendationResult message. Also converts values to other types if specified.
                         * @param m ApplyRecommendationResult
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.ApplyRecommendationResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ApplyRecommendationResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a DismissRecommendationRequest. */
                    interface IDismissRecommendationRequest {

                        /** DismissRecommendationRequest customer_id */
                        customer_id?: (string|null);

                        /** DismissRecommendationRequest operations */
                        operations?: (google.ads.googleads.v8.services.DismissRecommendationRequest.IDismissRecommendationOperation[]|null);

                        /** DismissRecommendationRequest partial_failure */
                        partial_failure?: (boolean|null);
                    }

                    /** Represents a DismissRecommendationRequest. */
                    class DismissRecommendationRequest implements IDismissRecommendationRequest {

                        /**
                         * Constructs a new DismissRecommendationRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IDismissRecommendationRequest);

                        /** DismissRecommendationRequest customer_id. */
                        public customer_id: string;

                        /** DismissRecommendationRequest operations. */
                        public operations: google.ads.googleads.v8.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.v8.services.IDismissRecommendationRequest): google.ads.googleads.v8.services.DismissRecommendationRequest;

                        /**
                         * Encodes the specified DismissRecommendationRequest message. Does not implicitly {@link google.ads.googleads.v8.services.DismissRecommendationRequest.verify|verify} messages.
                         * @param m DismissRecommendationRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IDismissRecommendationRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DismissRecommendationRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IDismissRecommendationRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DismissRecommendationRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.DismissRecommendationRequest;

                        /**
                         * Verifies a DismissRecommendationRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DismissRecommendationRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns DismissRecommendationRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.DismissRecommendationRequest;

                        /**
                         * Creates a plain object from a DismissRecommendationRequest message. Also converts values to other types if specified.
                         * @param m DismissRecommendationRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.DismissRecommendationRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DismissRecommendationRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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.v8.services.DismissRecommendationRequest.IDismissRecommendationOperation): google.ads.googleads.v8.services.DismissRecommendationRequest.DismissRecommendationOperation;

                            /**
                             * Encodes the specified DismissRecommendationOperation message. Does not implicitly {@link google.ads.googleads.v8.services.DismissRecommendationRequest.DismissRecommendationOperation.verify|verify} messages.
                             * @param m DismissRecommendationOperation message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.services.DismissRecommendationRequest.IDismissRecommendationOperation, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified DismissRecommendationOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.DismissRecommendationRequest.IDismissRecommendationOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a DismissRecommendationOperation message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.DismissRecommendationRequest.DismissRecommendationOperation;

                            /**
                             * Verifies a DismissRecommendationOperation message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a DismissRecommendationOperation message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns DismissRecommendationOperation
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.DismissRecommendationRequest.DismissRecommendationOperation;

                            /**
                             * Creates a plain object from a DismissRecommendationOperation message. Also converts values to other types if specified.
                             * @param m DismissRecommendationOperation
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.services.DismissRecommendationRequest.DismissRecommendationOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this DismissRecommendationOperation to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }
                    }

                    /** Properties of a DismissRecommendationResponse. */
                    interface IDismissRecommendationResponse {

                        /** DismissRecommendationResponse results */
                        results?: (google.ads.googleads.v8.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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IDismissRecommendationResponse);

                        /** DismissRecommendationResponse results. */
                        public results: google.ads.googleads.v8.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.v8.services.IDismissRecommendationResponse): google.ads.googleads.v8.services.DismissRecommendationResponse;

                        /**
                         * Encodes the specified DismissRecommendationResponse message. Does not implicitly {@link google.ads.googleads.v8.services.DismissRecommendationResponse.verify|verify} messages.
                         * @param m DismissRecommendationResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IDismissRecommendationResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DismissRecommendationResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IDismissRecommendationResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DismissRecommendationResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.DismissRecommendationResponse;

                        /**
                         * Verifies a DismissRecommendationResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a DismissRecommendationResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns DismissRecommendationResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.DismissRecommendationResponse;

                        /**
                         * Creates a plain object from a DismissRecommendationResponse message. Also converts values to other types if specified.
                         * @param m DismissRecommendationResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.DismissRecommendationResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DismissRecommendationResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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.v8.services.DismissRecommendationResponse.IDismissRecommendationResult): google.ads.googleads.v8.services.DismissRecommendationResponse.DismissRecommendationResult;

                            /**
                             * Encodes the specified DismissRecommendationResult message. Does not implicitly {@link google.ads.googleads.v8.services.DismissRecommendationResponse.DismissRecommendationResult.verify|verify} messages.
                             * @param m DismissRecommendationResult message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.services.DismissRecommendationResponse.IDismissRecommendationResult, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified DismissRecommendationResult message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.DismissRecommendationResponse.IDismissRecommendationResult, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a DismissRecommendationResult message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.DismissRecommendationResponse.DismissRecommendationResult;

                            /**
                             * Verifies a DismissRecommendationResult message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a DismissRecommendationResult message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns DismissRecommendationResult
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.DismissRecommendationResponse.DismissRecommendationResult;

                            /**
                             * Creates a plain object from a DismissRecommendationResult message. Also converts values to other types if specified.
                             * @param m DismissRecommendationResult
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.services.DismissRecommendationResponse.DismissRecommendationResult, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this DismissRecommendationResult to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }
                    }

                    /** Represents a SearchTermViewService */
                    class SearchTermViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new SearchTermViewService 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 SearchTermViewService 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): SearchTermViewService;

                        /**
                         * Calls GetSearchTermView.
                         * @param request GetSearchTermViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and SearchTermView
                         */
                        public getSearchTermView(request: google.ads.googleads.v8.services.IGetSearchTermViewRequest, callback: google.ads.googleads.v8.services.SearchTermViewService.GetSearchTermViewCallback): void;

                        /**
                         * Calls GetSearchTermView.
                         * @param request GetSearchTermViewRequest message or plain object
                         * @returns Promise
                         */
                        public getSearchTermView(request: google.ads.googleads.v8.services.IGetSearchTermViewRequest): Promise<google.ads.googleads.v8.resources.SearchTermView>;
                    }

                    namespace SearchTermViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.SearchTermViewService#getSearchTermView}.
                         * @param error Error, if any
                         * @param [response] SearchTermView
                         */
                        type GetSearchTermViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.SearchTermView) => void;
                    }

                    /** Properties of a GetSearchTermViewRequest. */
                    interface IGetSearchTermViewRequest {

                        /** GetSearchTermViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetSearchTermViewRequest. */
                    class GetSearchTermViewRequest implements IGetSearchTermViewRequest {

                        /**
                         * Constructs a new GetSearchTermViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetSearchTermViewRequest);

                        /** GetSearchTermViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetSearchTermViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetSearchTermViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetSearchTermViewRequest): google.ads.googleads.v8.services.GetSearchTermViewRequest;

                        /**
                         * Encodes the specified GetSearchTermViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetSearchTermViewRequest.verify|verify} messages.
                         * @param m GetSearchTermViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetSearchTermViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetSearchTermViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetSearchTermViewRequest.verify|verify} messages.
                         * @param message GetSearchTermViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetSearchTermViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetSearchTermViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetSearchTermViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetSearchTermViewRequest;

                        /**
                         * Decodes a GetSearchTermViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetSearchTermViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetSearchTermViewRequest;

                        /**
                         * Verifies a GetSearchTermViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetSearchTermViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetSearchTermViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetSearchTermViewRequest;

                        /**
                         * Creates a plain object from a GetSearchTermViewRequest message. Also converts values to other types if specified.
                         * @param m GetSearchTermViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetSearchTermViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetSearchTermViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a ShoppingPerformanceViewService */
                    class ShoppingPerformanceViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new ShoppingPerformanceViewService 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 ShoppingPerformanceViewService 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): ShoppingPerformanceViewService;

                        /**
                         * Calls GetShoppingPerformanceView.
                         * @param request GetShoppingPerformanceViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ShoppingPerformanceView
                         */
                        public getShoppingPerformanceView(request: google.ads.googleads.v8.services.IGetShoppingPerformanceViewRequest, callback: google.ads.googleads.v8.services.ShoppingPerformanceViewService.GetShoppingPerformanceViewCallback): void;

                        /**
                         * Calls GetShoppingPerformanceView.
                         * @param request GetShoppingPerformanceViewRequest message or plain object
                         * @returns Promise
                         */
                        public getShoppingPerformanceView(request: google.ads.googleads.v8.services.IGetShoppingPerformanceViewRequest): Promise<google.ads.googleads.v8.resources.ShoppingPerformanceView>;
                    }

                    namespace ShoppingPerformanceViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ShoppingPerformanceViewService#getShoppingPerformanceView}.
                         * @param error Error, if any
                         * @param [response] ShoppingPerformanceView
                         */
                        type GetShoppingPerformanceViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.ShoppingPerformanceView) => void;
                    }

                    /** Properties of a GetShoppingPerformanceViewRequest. */
                    interface IGetShoppingPerformanceViewRequest {

                        /** GetShoppingPerformanceViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetShoppingPerformanceViewRequest. */
                    class GetShoppingPerformanceViewRequest implements IGetShoppingPerformanceViewRequest {

                        /**
                         * Constructs a new GetShoppingPerformanceViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetShoppingPerformanceViewRequest);

                        /** GetShoppingPerformanceViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetShoppingPerformanceViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetShoppingPerformanceViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetShoppingPerformanceViewRequest): google.ads.googleads.v8.services.GetShoppingPerformanceViewRequest;

                        /**
                         * Encodes the specified GetShoppingPerformanceViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetShoppingPerformanceViewRequest.verify|verify} messages.
                         * @param m GetShoppingPerformanceViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetShoppingPerformanceViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetShoppingPerformanceViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetShoppingPerformanceViewRequest.verify|verify} messages.
                         * @param message GetShoppingPerformanceViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetShoppingPerformanceViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetShoppingPerformanceViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetShoppingPerformanceViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetShoppingPerformanceViewRequest;

                        /**
                         * Decodes a GetShoppingPerformanceViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetShoppingPerformanceViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetShoppingPerformanceViewRequest;

                        /**
                         * Verifies a GetShoppingPerformanceViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetShoppingPerformanceViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetShoppingPerformanceViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetShoppingPerformanceViewRequest;

                        /**
                         * Creates a plain object from a GetShoppingPerformanceViewRequest message. Also converts values to other types if specified.
                         * @param m GetShoppingPerformanceViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetShoppingPerformanceViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetShoppingPerformanceViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a SmartCampaignSearchTermViewService */
                    class SmartCampaignSearchTermViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new SmartCampaignSearchTermViewService 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 SmartCampaignSearchTermViewService 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): SmartCampaignSearchTermViewService;

                        /**
                         * Calls GetSmartCampaignSearchTermView.
                         * @param request GetSmartCampaignSearchTermViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and SmartCampaignSearchTermView
                         */
                        public getSmartCampaignSearchTermView(request: google.ads.googleads.v8.services.IGetSmartCampaignSearchTermViewRequest, callback: google.ads.googleads.v8.services.SmartCampaignSearchTermViewService.GetSmartCampaignSearchTermViewCallback): void;

                        /**
                         * Calls GetSmartCampaignSearchTermView.
                         * @param request GetSmartCampaignSearchTermViewRequest message or plain object
                         * @returns Promise
                         */
                        public getSmartCampaignSearchTermView(request: google.ads.googleads.v8.services.IGetSmartCampaignSearchTermViewRequest): Promise<google.ads.googleads.v8.resources.SmartCampaignSearchTermView>;
                    }

                    namespace SmartCampaignSearchTermViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.SmartCampaignSearchTermViewService#getSmartCampaignSearchTermView}.
                         * @param error Error, if any
                         * @param [response] SmartCampaignSearchTermView
                         */
                        type GetSmartCampaignSearchTermViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.SmartCampaignSearchTermView) => void;
                    }

                    /** Properties of a GetSmartCampaignSearchTermViewRequest. */
                    interface IGetSmartCampaignSearchTermViewRequest {

                        /** GetSmartCampaignSearchTermViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetSmartCampaignSearchTermViewRequest. */
                    class GetSmartCampaignSearchTermViewRequest implements IGetSmartCampaignSearchTermViewRequest {

                        /**
                         * Constructs a new GetSmartCampaignSearchTermViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetSmartCampaignSearchTermViewRequest);

                        /** GetSmartCampaignSearchTermViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetSmartCampaignSearchTermViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetSmartCampaignSearchTermViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetSmartCampaignSearchTermViewRequest): google.ads.googleads.v8.services.GetSmartCampaignSearchTermViewRequest;

                        /**
                         * Encodes the specified GetSmartCampaignSearchTermViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetSmartCampaignSearchTermViewRequest.verify|verify} messages.
                         * @param m GetSmartCampaignSearchTermViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetSmartCampaignSearchTermViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetSmartCampaignSearchTermViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetSmartCampaignSearchTermViewRequest.verify|verify} messages.
                         * @param message GetSmartCampaignSearchTermViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetSmartCampaignSearchTermViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetSmartCampaignSearchTermViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetSmartCampaignSearchTermViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetSmartCampaignSearchTermViewRequest;

                        /**
                         * Decodes a GetSmartCampaignSearchTermViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetSmartCampaignSearchTermViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetSmartCampaignSearchTermViewRequest;

                        /**
                         * Verifies a GetSmartCampaignSearchTermViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetSmartCampaignSearchTermViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetSmartCampaignSearchTermViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetSmartCampaignSearchTermViewRequest;

                        /**
                         * Creates a plain object from a GetSmartCampaignSearchTermViewRequest message. Also converts values to other types if specified.
                         * @param m GetSmartCampaignSearchTermViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetSmartCampaignSearchTermViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetSmartCampaignSearchTermViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.services.ISuggestSmartCampaignBudgetOptionsRequest, callback: google.ads.googleads.v8.services.SmartCampaignSuggestService.SuggestSmartCampaignBudgetOptionsCallback): void;

                        /**
                         * Calls SuggestSmartCampaignBudgetOptions.
                         * @param request SuggestSmartCampaignBudgetOptionsRequest message or plain object
                         * @returns Promise
                         */
                        public suggestSmartCampaignBudgetOptions(request: google.ads.googleads.v8.services.ISuggestSmartCampaignBudgetOptionsRequest): Promise<google.ads.googleads.v8.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.v8.services.ISuggestSmartCampaignAdRequest, callback: google.ads.googleads.v8.services.SmartCampaignSuggestService.SuggestSmartCampaignAdCallback): void;

                        /**
                         * Calls SuggestSmartCampaignAd.
                         * @param request SuggestSmartCampaignAdRequest message or plain object
                         * @returns Promise
                         */
                        public suggestSmartCampaignAd(request: google.ads.googleads.v8.services.ISuggestSmartCampaignAdRequest): Promise<google.ads.googleads.v8.services.SuggestSmartCampaignAdResponse>;
                    }

                    namespace SmartCampaignSuggestService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.SmartCampaignSuggestService#suggestSmartCampaignBudgetOptions}.
                         * @param error Error, if any
                         * @param [response] SuggestSmartCampaignBudgetOptionsResponse
                         */
                        type SuggestSmartCampaignBudgetOptionsCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsResponse) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.SmartCampaignSuggestService#suggestSmartCampaignAd}.
                         * @param error Error, if any
                         * @param [response] SuggestSmartCampaignAdResponse
                         */
                        type SuggestSmartCampaignAdCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.SuggestSmartCampaignAdResponse) => 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.v8.services.ISmartCampaignSuggestionInfo|null);
                    }

                    /** Represents a SuggestSmartCampaignBudgetOptionsRequest. */
                    class SuggestSmartCampaignBudgetOptionsRequest implements ISuggestSmartCampaignBudgetOptionsRequest {

                        /**
                         * Constructs a new SuggestSmartCampaignBudgetOptionsRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ISuggestSmartCampaignBudgetOptionsRequest);

                        /** SuggestSmartCampaignBudgetOptionsRequest customer_id. */
                        public customer_id: string;

                        /** SuggestSmartCampaignBudgetOptionsRequest campaign. */
                        public campaign?: (string|null);

                        /** SuggestSmartCampaignBudgetOptionsRequest suggestion_info. */
                        public suggestion_info?: (google.ads.googleads.v8.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.v8.services.ISuggestSmartCampaignBudgetOptionsRequest): google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsRequest;

                        /**
                         * Encodes the specified SuggestSmartCampaignBudgetOptionsRequest message. Does not implicitly {@link google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsRequest.verify|verify} messages.
                         * @param m SuggestSmartCampaignBudgetOptionsRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ISuggestSmartCampaignBudgetOptionsRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SuggestSmartCampaignBudgetOptionsRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ISuggestSmartCampaignBudgetOptionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SuggestSmartCampaignBudgetOptionsRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.SuggestSmartCampaignBudgetOptionsRequest;

                        /**
                         * Verifies a SuggestSmartCampaignBudgetOptionsRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SuggestSmartCampaignBudgetOptionsRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SuggestSmartCampaignBudgetOptionsRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsRequest;

                        /**
                         * Creates a plain object from a SuggestSmartCampaignBudgetOptionsRequest message. Also converts values to other types if specified.
                         * @param m SuggestSmartCampaignBudgetOptionsRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SuggestSmartCampaignBudgetOptionsRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.common.IAdScheduleInfo[]|null);

                        /** SmartCampaignSuggestionInfo keyword_themes */
                        keyword_themes?: (google.ads.googleads.v8.common.IKeywordThemeInfo[]|null);

                        /** SmartCampaignSuggestionInfo business_context */
                        business_context?: (google.ads.googleads.v8.services.SmartCampaignSuggestionInfo.IBusinessContext|null);

                        /** SmartCampaignSuggestionInfo business_location_id */
                        business_location_id?: (number|null);

                        /** SmartCampaignSuggestionInfo location_list */
                        location_list?: (google.ads.googleads.v8.services.SmartCampaignSuggestionInfo.ILocationList|null);

                        /** SmartCampaignSuggestionInfo proximity */
                        proximity?: (google.ads.googleads.v8.common.IProximityInfo|null);
                    }

                    /** Represents a SmartCampaignSuggestionInfo. */
                    class SmartCampaignSuggestionInfo implements ISmartCampaignSuggestionInfo {

                        /**
                         * Constructs a new SmartCampaignSuggestionInfo.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.common.IAdScheduleInfo[];

                        /** SmartCampaignSuggestionInfo keyword_themes. */
                        public keyword_themes: google.ads.googleads.v8.common.IKeywordThemeInfo[];

                        /** SmartCampaignSuggestionInfo business_context. */
                        public business_context?: (google.ads.googleads.v8.services.SmartCampaignSuggestionInfo.IBusinessContext|null);

                        /** SmartCampaignSuggestionInfo business_location_id. */
                        public business_location_id?: (number|null);

                        /** SmartCampaignSuggestionInfo location_list. */
                        public location_list?: (google.ads.googleads.v8.services.SmartCampaignSuggestionInfo.ILocationList|null);

                        /** SmartCampaignSuggestionInfo proximity. */
                        public proximity?: (google.ads.googleads.v8.common.IProximityInfo|null);

                        /** SmartCampaignSuggestionInfo business_setting. */
                        public business_setting?: ("business_context"|"business_location_id");

                        /** 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.v8.services.ISmartCampaignSuggestionInfo): google.ads.googleads.v8.services.SmartCampaignSuggestionInfo;

                        /**
                         * Encodes the specified SmartCampaignSuggestionInfo message. Does not implicitly {@link google.ads.googleads.v8.services.SmartCampaignSuggestionInfo.verify|verify} messages.
                         * @param m SmartCampaignSuggestionInfo message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ISmartCampaignSuggestionInfo, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SmartCampaignSuggestionInfo message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ISmartCampaignSuggestionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SmartCampaignSuggestionInfo message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.SmartCampaignSuggestionInfo;

                        /**
                         * Verifies a SmartCampaignSuggestionInfo message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SmartCampaignSuggestionInfo message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SmartCampaignSuggestionInfo
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.SmartCampaignSuggestionInfo;

                        /**
                         * Creates a plain object from a SmartCampaignSuggestionInfo message. Also converts values to other types if specified.
                         * @param m SmartCampaignSuggestionInfo
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.SmartCampaignSuggestionInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SmartCampaignSuggestionInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    namespace SmartCampaignSuggestionInfo {

                        /** Properties of a LocationList. */
                        interface ILocationList {

                            /** LocationList locations */
                            locations?: (google.ads.googleads.v8.common.ILocationInfo[]|null);
                        }

                        /** Represents a LocationList. */
                        class LocationList implements ILocationList {

                            /**
                             * Constructs a new LocationList.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.services.SmartCampaignSuggestionInfo.ILocationList);

                            /** LocationList locations. */
                            public locations: google.ads.googleads.v8.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.v8.services.SmartCampaignSuggestionInfo.ILocationList): google.ads.googleads.v8.services.SmartCampaignSuggestionInfo.LocationList;

                            /**
                             * Encodes the specified LocationList message. Does not implicitly {@link google.ads.googleads.v8.services.SmartCampaignSuggestionInfo.LocationList.verify|verify} messages.
                             * @param m LocationList message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.services.SmartCampaignSuggestionInfo.ILocationList, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified LocationList message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.SmartCampaignSuggestionInfo.ILocationList, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a LocationList message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.SmartCampaignSuggestionInfo.LocationList;

                            /**
                             * Verifies a LocationList message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a LocationList message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns LocationList
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.SmartCampaignSuggestionInfo.LocationList;

                            /**
                             * Creates a plain object from a LocationList message. Also converts values to other types if specified.
                             * @param m LocationList
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.services.SmartCampaignSuggestionInfo.LocationList, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this LocationList to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** 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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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.v8.services.SmartCampaignSuggestionInfo.IBusinessContext): google.ads.googleads.v8.services.SmartCampaignSuggestionInfo.BusinessContext;

                            /**
                             * Encodes the specified BusinessContext message. Does not implicitly {@link google.ads.googleads.v8.services.SmartCampaignSuggestionInfo.BusinessContext.verify|verify} messages.
                             * @param m BusinessContext message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.services.SmartCampaignSuggestionInfo.IBusinessContext, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified BusinessContext message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.SmartCampaignSuggestionInfo.IBusinessContext, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a BusinessContext message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.SmartCampaignSuggestionInfo.BusinessContext;

                            /**
                             * Verifies a BusinessContext message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a BusinessContext message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns BusinessContext
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.SmartCampaignSuggestionInfo.BusinessContext;

                            /**
                             * Creates a plain object from a BusinessContext message. Also converts values to other types if specified.
                             * @param m BusinessContext
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.services.SmartCampaignSuggestionInfo.BusinessContext, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this BusinessContext to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }
                    }

                    /** Properties of a SuggestSmartCampaignBudgetOptionsResponse. */
                    interface ISuggestSmartCampaignBudgetOptionsResponse {

                        /** SuggestSmartCampaignBudgetOptionsResponse low */
                        low?: (google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsResponse.IBudgetOption|null);

                        /** SuggestSmartCampaignBudgetOptionsResponse recommended */
                        recommended?: (google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsResponse.IBudgetOption|null);

                        /** SuggestSmartCampaignBudgetOptionsResponse high */
                        high?: (google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsResponse.IBudgetOption|null);
                    }

                    /** Represents a SuggestSmartCampaignBudgetOptionsResponse. */
                    class SuggestSmartCampaignBudgetOptionsResponse implements ISuggestSmartCampaignBudgetOptionsResponse {

                        /**
                         * Constructs a new SuggestSmartCampaignBudgetOptionsResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ISuggestSmartCampaignBudgetOptionsResponse);

                        /** SuggestSmartCampaignBudgetOptionsResponse low. */
                        public low?: (google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsResponse.IBudgetOption|null);

                        /** SuggestSmartCampaignBudgetOptionsResponse recommended. */
                        public recommended?: (google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsResponse.IBudgetOption|null);

                        /** SuggestSmartCampaignBudgetOptionsResponse high. */
                        public high?: (google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsResponse.IBudgetOption|null);

                        /** SuggestSmartCampaignBudgetOptionsResponse _low. */
                        public _low?: "low";

                        /** SuggestSmartCampaignBudgetOptionsResponse _recommended. */
                        public _recommended?: "recommended";

                        /** SuggestSmartCampaignBudgetOptionsResponse _high. */
                        public _high?: "high";

                        /**
                         * Creates a new SuggestSmartCampaignBudgetOptionsResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SuggestSmartCampaignBudgetOptionsResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.ISuggestSmartCampaignBudgetOptionsResponse): google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsResponse;

                        /**
                         * Encodes the specified SuggestSmartCampaignBudgetOptionsResponse message. Does not implicitly {@link google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsResponse.verify|verify} messages.
                         * @param m SuggestSmartCampaignBudgetOptionsResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ISuggestSmartCampaignBudgetOptionsResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SuggestSmartCampaignBudgetOptionsResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ISuggestSmartCampaignBudgetOptionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SuggestSmartCampaignBudgetOptionsResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.SuggestSmartCampaignBudgetOptionsResponse;

                        /**
                         * Verifies a SuggestSmartCampaignBudgetOptionsResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SuggestSmartCampaignBudgetOptionsResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SuggestSmartCampaignBudgetOptionsResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsResponse;

                        /**
                         * Creates a plain object from a SuggestSmartCampaignBudgetOptionsResponse message. Also converts values to other types if specified.
                         * @param m SuggestSmartCampaignBudgetOptionsResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SuggestSmartCampaignBudgetOptionsResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    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 [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.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.v8.services.SuggestSmartCampaignBudgetOptionsResponse.IMetrics): google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsResponse.Metrics;

                            /**
                             * Encodes the specified Metrics message. Does not implicitly {@link google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsResponse.Metrics.verify|verify} messages.
                             * @param m Metrics message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsResponse.IMetrics, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Metrics message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.SuggestSmartCampaignBudgetOptionsResponse.IMetrics, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a Metrics message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.SuggestSmartCampaignBudgetOptionsResponse.Metrics;

                            /**
                             * Verifies a Metrics message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a Metrics message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns Metrics
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsResponse.Metrics;

                            /**
                             * Creates a plain object from a Metrics message. Also converts values to other types if specified.
                             * @param m Metrics
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsResponse.Metrics, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this Metrics to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }

                        /** Properties of a BudgetOption. */
                        interface IBudgetOption {

                            /** BudgetOption daily_amount_micros */
                            daily_amount_micros?: (number|null);

                            /** BudgetOption metrics */
                            metrics?: (google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsResponse.IMetrics|null);
                        }

                        /** Represents a BudgetOption. */
                        class BudgetOption implements IBudgetOption {

                            /**
                             * Constructs a new BudgetOption.
                             * @param [p] Properties to set
                             */
                            constructor(p?: google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsResponse.IBudgetOption);

                            /** BudgetOption daily_amount_micros. */
                            public daily_amount_micros: number;

                            /** BudgetOption metrics. */
                            public metrics?: (google.ads.googleads.v8.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.v8.services.SuggestSmartCampaignBudgetOptionsResponse.IBudgetOption): google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsResponse.BudgetOption;

                            /**
                             * Encodes the specified BudgetOption message. Does not implicitly {@link google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsResponse.BudgetOption.verify|verify} messages.
                             * @param m BudgetOption message or plain object to encode
                             * @param [w] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(m: google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsResponse.IBudgetOption, w?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified BudgetOption message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.SuggestSmartCampaignBudgetOptionsResponse.IBudgetOption, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a BudgetOption message from the specified reader or buffer.
                             * @param r Reader or buffer to decode from
                             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.SuggestSmartCampaignBudgetOptionsResponse.BudgetOption;

                            /**
                             * Verifies a BudgetOption message.
                             * @param m Plain object to verify
                             * @returns `null` if valid, otherwise the reason why it is not
                             */
                            public static verify(m: { [k: string]: any }): (string|null);

                            /**
                             * Creates a BudgetOption message from a plain object. Also converts values to their respective internal types.
                             * @param d Plain object
                             * @returns BudgetOption
                             */
                            public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsResponse.BudgetOption;

                            /**
                             * Creates a plain object from a BudgetOption message. Also converts values to other types if specified.
                             * @param m BudgetOption
                             * @param [o] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(m: google.ads.googleads.v8.services.SuggestSmartCampaignBudgetOptionsResponse.BudgetOption, o?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this BudgetOption to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };
                        }
                    }

                    /** Properties of a SuggestSmartCampaignAdRequest. */
                    interface ISuggestSmartCampaignAdRequest {

                        /** SuggestSmartCampaignAdRequest customer_id */
                        customer_id?: (string|null);

                        /** SuggestSmartCampaignAdRequest suggestion_info */
                        suggestion_info?: (google.ads.googleads.v8.services.ISmartCampaignSuggestionInfo|null);
                    }

                    /** Represents a SuggestSmartCampaignAdRequest. */
                    class SuggestSmartCampaignAdRequest implements ISuggestSmartCampaignAdRequest {

                        /**
                         * Constructs a new SuggestSmartCampaignAdRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ISuggestSmartCampaignAdRequest);

                        /** SuggestSmartCampaignAdRequest customer_id. */
                        public customer_id: string;

                        /** SuggestSmartCampaignAdRequest suggestion_info. */
                        public suggestion_info?: (google.ads.googleads.v8.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.v8.services.ISuggestSmartCampaignAdRequest): google.ads.googleads.v8.services.SuggestSmartCampaignAdRequest;

                        /**
                         * Encodes the specified SuggestSmartCampaignAdRequest message. Does not implicitly {@link google.ads.googleads.v8.services.SuggestSmartCampaignAdRequest.verify|verify} messages.
                         * @param m SuggestSmartCampaignAdRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ISuggestSmartCampaignAdRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SuggestSmartCampaignAdRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ISuggestSmartCampaignAdRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SuggestSmartCampaignAdRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.SuggestSmartCampaignAdRequest;

                        /**
                         * Verifies a SuggestSmartCampaignAdRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SuggestSmartCampaignAdRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SuggestSmartCampaignAdRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.SuggestSmartCampaignAdRequest;

                        /**
                         * Creates a plain object from a SuggestSmartCampaignAdRequest message. Also converts values to other types if specified.
                         * @param m SuggestSmartCampaignAdRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.SuggestSmartCampaignAdRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SuggestSmartCampaignAdRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a SuggestSmartCampaignAdResponse. */
                    interface ISuggestSmartCampaignAdResponse {

                        /** SuggestSmartCampaignAdResponse ad_info */
                        ad_info?: (google.ads.googleads.v8.common.ISmartCampaignAdInfo|null);
                    }

                    /** Represents a SuggestSmartCampaignAdResponse. */
                    class SuggestSmartCampaignAdResponse implements ISuggestSmartCampaignAdResponse {

                        /**
                         * Constructs a new SuggestSmartCampaignAdResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.ISuggestSmartCampaignAdResponse);

                        /** SuggestSmartCampaignAdResponse ad_info. */
                        public ad_info?: (google.ads.googleads.v8.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.v8.services.ISuggestSmartCampaignAdResponse): google.ads.googleads.v8.services.SuggestSmartCampaignAdResponse;

                        /**
                         * Encodes the specified SuggestSmartCampaignAdResponse message. Does not implicitly {@link google.ads.googleads.v8.services.SuggestSmartCampaignAdResponse.verify|verify} messages.
                         * @param m SuggestSmartCampaignAdResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.ISuggestSmartCampaignAdResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SuggestSmartCampaignAdResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.ISuggestSmartCampaignAdResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SuggestSmartCampaignAdResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.SuggestSmartCampaignAdResponse;

                        /**
                         * Verifies a SuggestSmartCampaignAdResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a SuggestSmartCampaignAdResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns SuggestSmartCampaignAdResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.SuggestSmartCampaignAdResponse;

                        /**
                         * Creates a plain object from a SuggestSmartCampaignAdResponse message. Also converts values to other types if specified.
                         * @param m SuggestSmartCampaignAdResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.SuggestSmartCampaignAdResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SuggestSmartCampaignAdResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 GetThirdPartyAppAnalyticsLink.
                         * @param request GetThirdPartyAppAnalyticsLinkRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and ThirdPartyAppAnalyticsLink
                         */
                        public getThirdPartyAppAnalyticsLink(request: google.ads.googleads.v8.services.IGetThirdPartyAppAnalyticsLinkRequest, callback: google.ads.googleads.v8.services.ThirdPartyAppAnalyticsLinkService.GetThirdPartyAppAnalyticsLinkCallback): void;

                        /**
                         * Calls GetThirdPartyAppAnalyticsLink.
                         * @param request GetThirdPartyAppAnalyticsLinkRequest message or plain object
                         * @returns Promise
                         */
                        public getThirdPartyAppAnalyticsLink(request: google.ads.googleads.v8.services.IGetThirdPartyAppAnalyticsLinkRequest): Promise<google.ads.googleads.v8.resources.ThirdPartyAppAnalyticsLink>;

                        /**
                         * 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.v8.services.IRegenerateShareableLinkIdRequest, callback: google.ads.googleads.v8.services.ThirdPartyAppAnalyticsLinkService.RegenerateShareableLinkIdCallback): void;

                        /**
                         * Calls RegenerateShareableLinkId.
                         * @param request RegenerateShareableLinkIdRequest message or plain object
                         * @returns Promise
                         */
                        public regenerateShareableLinkId(request: google.ads.googleads.v8.services.IRegenerateShareableLinkIdRequest): Promise<google.ads.googleads.v8.services.RegenerateShareableLinkIdResponse>;
                    }

                    namespace ThirdPartyAppAnalyticsLinkService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ThirdPartyAppAnalyticsLinkService#getThirdPartyAppAnalyticsLink}.
                         * @param error Error, if any
                         * @param [response] ThirdPartyAppAnalyticsLink
                         */
                        type GetThirdPartyAppAnalyticsLinkCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.ThirdPartyAppAnalyticsLink) => void;

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.ThirdPartyAppAnalyticsLinkService#regenerateShareableLinkId}.
                         * @param error Error, if any
                         * @param [response] RegenerateShareableLinkIdResponse
                         */
                        type RegenerateShareableLinkIdCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.RegenerateShareableLinkIdResponse) => void;
                    }

                    /** Properties of a GetThirdPartyAppAnalyticsLinkRequest. */
                    interface IGetThirdPartyAppAnalyticsLinkRequest {

                        /** GetThirdPartyAppAnalyticsLinkRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetThirdPartyAppAnalyticsLinkRequest. */
                    class GetThirdPartyAppAnalyticsLinkRequest implements IGetThirdPartyAppAnalyticsLinkRequest {

                        /**
                         * Constructs a new GetThirdPartyAppAnalyticsLinkRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetThirdPartyAppAnalyticsLinkRequest);

                        /** GetThirdPartyAppAnalyticsLinkRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetThirdPartyAppAnalyticsLinkRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetThirdPartyAppAnalyticsLinkRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetThirdPartyAppAnalyticsLinkRequest): google.ads.googleads.v8.services.GetThirdPartyAppAnalyticsLinkRequest;

                        /**
                         * Encodes the specified GetThirdPartyAppAnalyticsLinkRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetThirdPartyAppAnalyticsLinkRequest.verify|verify} messages.
                         * @param m GetThirdPartyAppAnalyticsLinkRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetThirdPartyAppAnalyticsLinkRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetThirdPartyAppAnalyticsLinkRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetThirdPartyAppAnalyticsLinkRequest.verify|verify} messages.
                         * @param message GetThirdPartyAppAnalyticsLinkRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetThirdPartyAppAnalyticsLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetThirdPartyAppAnalyticsLinkRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetThirdPartyAppAnalyticsLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetThirdPartyAppAnalyticsLinkRequest;

                        /**
                         * Decodes a GetThirdPartyAppAnalyticsLinkRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetThirdPartyAppAnalyticsLinkRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetThirdPartyAppAnalyticsLinkRequest;

                        /**
                         * Verifies a GetThirdPartyAppAnalyticsLinkRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetThirdPartyAppAnalyticsLinkRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetThirdPartyAppAnalyticsLinkRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetThirdPartyAppAnalyticsLinkRequest;

                        /**
                         * Creates a plain object from a GetThirdPartyAppAnalyticsLinkRequest message. Also converts values to other types if specified.
                         * @param m GetThirdPartyAppAnalyticsLinkRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetThirdPartyAppAnalyticsLinkRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetThirdPartyAppAnalyticsLinkRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IRegenerateShareableLinkIdRequest): google.ads.googleads.v8.services.RegenerateShareableLinkIdRequest;

                        /**
                         * Encodes the specified RegenerateShareableLinkIdRequest message. Does not implicitly {@link google.ads.googleads.v8.services.RegenerateShareableLinkIdRequest.verify|verify} messages.
                         * @param m RegenerateShareableLinkIdRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IRegenerateShareableLinkIdRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RegenerateShareableLinkIdRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IRegenerateShareableLinkIdRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RegenerateShareableLinkIdRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.RegenerateShareableLinkIdRequest;

                        /**
                         * Verifies a RegenerateShareableLinkIdRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RegenerateShareableLinkIdRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns RegenerateShareableLinkIdRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.RegenerateShareableLinkIdRequest;

                        /**
                         * Creates a plain object from a RegenerateShareableLinkIdRequest message. Also converts values to other types if specified.
                         * @param m RegenerateShareableLinkIdRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.RegenerateShareableLinkIdRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RegenerateShareableLinkIdRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a RegenerateShareableLinkIdResponse. */
                    interface IRegenerateShareableLinkIdResponse {
                    }

                    /** Represents a RegenerateShareableLinkIdResponse. */
                    class RegenerateShareableLinkIdResponse implements IRegenerateShareableLinkIdResponse {

                        /**
                         * Constructs a new RegenerateShareableLinkIdResponse.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.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.v8.services.IRegenerateShareableLinkIdResponse): google.ads.googleads.v8.services.RegenerateShareableLinkIdResponse;

                        /**
                         * Encodes the specified RegenerateShareableLinkIdResponse message. Does not implicitly {@link google.ads.googleads.v8.services.RegenerateShareableLinkIdResponse.verify|verify} messages.
                         * @param m RegenerateShareableLinkIdResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IRegenerateShareableLinkIdResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RegenerateShareableLinkIdResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IRegenerateShareableLinkIdResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RegenerateShareableLinkIdResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.RegenerateShareableLinkIdResponse;

                        /**
                         * Verifies a RegenerateShareableLinkIdResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a RegenerateShareableLinkIdResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns RegenerateShareableLinkIdResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.RegenerateShareableLinkIdResponse;

                        /**
                         * Creates a plain object from a RegenerateShareableLinkIdResponse message. Also converts values to other types if specified.
                         * @param m RegenerateShareableLinkIdResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.RegenerateShareableLinkIdResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RegenerateShareableLinkIdResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a TopicConstantService */
                    class TopicConstantService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new TopicConstantService 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 TopicConstantService 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): TopicConstantService;

                        /**
                         * Calls GetTopicConstant.
                         * @param request GetTopicConstantRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and TopicConstant
                         */
                        public getTopicConstant(request: google.ads.googleads.v8.services.IGetTopicConstantRequest, callback: google.ads.googleads.v8.services.TopicConstantService.GetTopicConstantCallback): void;

                        /**
                         * Calls GetTopicConstant.
                         * @param request GetTopicConstantRequest message or plain object
                         * @returns Promise
                         */
                        public getTopicConstant(request: google.ads.googleads.v8.services.IGetTopicConstantRequest): Promise<google.ads.googleads.v8.resources.TopicConstant>;
                    }

                    namespace TopicConstantService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.TopicConstantService#getTopicConstant}.
                         * @param error Error, if any
                         * @param [response] TopicConstant
                         */
                        type GetTopicConstantCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.TopicConstant) => void;
                    }

                    /** Properties of a GetTopicConstantRequest. */
                    interface IGetTopicConstantRequest {

                        /** GetTopicConstantRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetTopicConstantRequest. */
                    class GetTopicConstantRequest implements IGetTopicConstantRequest {

                        /**
                         * Constructs a new GetTopicConstantRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetTopicConstantRequest);

                        /** GetTopicConstantRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetTopicConstantRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetTopicConstantRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetTopicConstantRequest): google.ads.googleads.v8.services.GetTopicConstantRequest;

                        /**
                         * Encodes the specified GetTopicConstantRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetTopicConstantRequest.verify|verify} messages.
                         * @param m GetTopicConstantRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetTopicConstantRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetTopicConstantRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetTopicConstantRequest.verify|verify} messages.
                         * @param message GetTopicConstantRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetTopicConstantRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetTopicConstantRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetTopicConstantRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetTopicConstantRequest;

                        /**
                         * Decodes a GetTopicConstantRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetTopicConstantRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetTopicConstantRequest;

                        /**
                         * Verifies a GetTopicConstantRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetTopicConstantRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetTopicConstantRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetTopicConstantRequest;

                        /**
                         * Creates a plain object from a GetTopicConstantRequest message. Also converts values to other types if specified.
                         * @param m GetTopicConstantRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetTopicConstantRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetTopicConstantRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a TopicViewService */
                    class TopicViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new TopicViewService 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 TopicViewService 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): TopicViewService;

                        /**
                         * Calls GetTopicView.
                         * @param request GetTopicViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and TopicView
                         */
                        public getTopicView(request: google.ads.googleads.v8.services.IGetTopicViewRequest, callback: google.ads.googleads.v8.services.TopicViewService.GetTopicViewCallback): void;

                        /**
                         * Calls GetTopicView.
                         * @param request GetTopicViewRequest message or plain object
                         * @returns Promise
                         */
                        public getTopicView(request: google.ads.googleads.v8.services.IGetTopicViewRequest): Promise<google.ads.googleads.v8.resources.TopicView>;
                    }

                    namespace TopicViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.TopicViewService#getTopicView}.
                         * @param error Error, if any
                         * @param [response] TopicView
                         */
                        type GetTopicViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.TopicView) => void;
                    }

                    /** Properties of a GetTopicViewRequest. */
                    interface IGetTopicViewRequest {

                        /** GetTopicViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetTopicViewRequest. */
                    class GetTopicViewRequest implements IGetTopicViewRequest {

                        /**
                         * Constructs a new GetTopicViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetTopicViewRequest);

                        /** GetTopicViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetTopicViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetTopicViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetTopicViewRequest): google.ads.googleads.v8.services.GetTopicViewRequest;

                        /**
                         * Encodes the specified GetTopicViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetTopicViewRequest.verify|verify} messages.
                         * @param m GetTopicViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetTopicViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetTopicViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetTopicViewRequest.verify|verify} messages.
                         * @param message GetTopicViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetTopicViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetTopicViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetTopicViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetTopicViewRequest;

                        /**
                         * Decodes a GetTopicViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetTopicViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetTopicViewRequest;

                        /**
                         * Verifies a GetTopicViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetTopicViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetTopicViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetTopicViewRequest;

                        /**
                         * Creates a plain object from a GetTopicViewRequest message. Also converts values to other types if specified.
                         * @param m GetTopicViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetTopicViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetTopicViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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.v8.services.IUploadUserDataRequest, callback: google.ads.googleads.v8.services.UserDataService.UploadUserDataCallback): void;

                        /**
                         * Calls UploadUserData.
                         * @param request UploadUserDataRequest message or plain object
                         * @returns Promise
                         */
                        public uploadUserData(request: google.ads.googleads.v8.services.IUploadUserDataRequest): Promise<google.ads.googleads.v8.services.UploadUserDataResponse>;
                    }

                    namespace UserDataService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.UserDataService#uploadUserData}.
                         * @param error Error, if any
                         * @param [response] UploadUserDataResponse
                         */
                        type UploadUserDataCallback = (error: (Error|null), response?: google.ads.googleads.v8.services.UploadUserDataResponse) => void;
                    }

                    /** Properties of an UploadUserDataRequest. */
                    interface IUploadUserDataRequest {

                        /** UploadUserDataRequest customer_id */
                        customer_id?: (string|null);

                        /** UploadUserDataRequest operations */
                        operations?: (google.ads.googleads.v8.services.IUserDataOperation[]|null);

                        /** UploadUserDataRequest customer_match_user_list_metadata */
                        customer_match_user_list_metadata?: (google.ads.googleads.v8.common.ICustomerMatchUserListMetadata|null);
                    }

                    /** Represents an UploadUserDataRequest. */
                    class UploadUserDataRequest implements IUploadUserDataRequest {

                        /**
                         * Constructs a new UploadUserDataRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IUploadUserDataRequest);

                        /** UploadUserDataRequest customer_id. */
                        public customer_id: string;

                        /** UploadUserDataRequest operations. */
                        public operations: google.ads.googleads.v8.services.IUserDataOperation[];

                        /** UploadUserDataRequest customer_match_user_list_metadata. */
                        public customer_match_user_list_metadata?: (google.ads.googleads.v8.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.v8.services.IUploadUserDataRequest): google.ads.googleads.v8.services.UploadUserDataRequest;

                        /**
                         * Encodes the specified UploadUserDataRequest message. Does not implicitly {@link google.ads.googleads.v8.services.UploadUserDataRequest.verify|verify} messages.
                         * @param m UploadUserDataRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IUploadUserDataRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UploadUserDataRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IUploadUserDataRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UploadUserDataRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.UploadUserDataRequest;

                        /**
                         * Verifies an UploadUserDataRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an UploadUserDataRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UploadUserDataRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.UploadUserDataRequest;

                        /**
                         * Creates a plain object from an UploadUserDataRequest message. Also converts values to other types if specified.
                         * @param m UploadUserDataRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.UploadUserDataRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UploadUserDataRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Properties of a UserDataOperation. */
                    interface IUserDataOperation {

                        /** UserDataOperation create */
                        create?: (google.ads.googleads.v8.common.IUserData|null);

                        /** UserDataOperation remove */
                        remove?: (google.ads.googleads.v8.common.IUserData|null);
                    }

                    /** Represents a UserDataOperation. */
                    class UserDataOperation implements IUserDataOperation {

                        /**
                         * Constructs a new UserDataOperation.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IUserDataOperation);

                        /** UserDataOperation create. */
                        public create?: (google.ads.googleads.v8.common.IUserData|null);

                        /** UserDataOperation remove. */
                        public remove?: (google.ads.googleads.v8.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.v8.services.IUserDataOperation): google.ads.googleads.v8.services.UserDataOperation;

                        /**
                         * Encodes the specified UserDataOperation message. Does not implicitly {@link google.ads.googleads.v8.services.UserDataOperation.verify|verify} messages.
                         * @param m UserDataOperation message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IUserDataOperation, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserDataOperation message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IUserDataOperation, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserDataOperation message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.UserDataOperation;

                        /**
                         * Verifies a UserDataOperation message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a UserDataOperation message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UserDataOperation
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.UserDataOperation;

                        /**
                         * Creates a plain object from a UserDataOperation message. Also converts values to other types if specified.
                         * @param m UserDataOperation
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.UserDataOperation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserDataOperation to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** 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 [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IUploadUserDataResponse);

                        /** UploadUserDataResponse upload_date_time. */
                        public upload_date_time?: (string|null);

                        /** UploadUserDataResponse received_operations_count. */
                        public received_operations_count?: (number|null);

                        /** UploadUserDataResponse _upload_date_time. */
                        public _upload_date_time?: "upload_date_time";

                        /** UploadUserDataResponse _received_operations_count. */
                        public _received_operations_count?: "received_operations_count";

                        /**
                         * Creates a new UploadUserDataResponse instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UploadUserDataResponse instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IUploadUserDataResponse): google.ads.googleads.v8.services.UploadUserDataResponse;

                        /**
                         * Encodes the specified UploadUserDataResponse message. Does not implicitly {@link google.ads.googleads.v8.services.UploadUserDataResponse.verify|verify} messages.
                         * @param m UploadUserDataResponse message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IUploadUserDataResponse, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UploadUserDataResponse message, length delimited. Does not implicitly {@link google.ads.googleads.v8.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.v8.services.IUploadUserDataResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an UploadUserDataResponse message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.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.v8.services.UploadUserDataResponse;

                        /**
                         * Verifies an UploadUserDataResponse message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates an UploadUserDataResponse message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns UploadUserDataResponse
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.UploadUserDataResponse;

                        /**
                         * Creates a plain object from an UploadUserDataResponse message. Also converts values to other types if specified.
                         * @param m UploadUserDataResponse
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.UploadUserDataResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UploadUserDataResponse to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a UserInterestService */
                    class UserInterestService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new UserInterestService 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 UserInterestService 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): UserInterestService;

                        /**
                         * Calls GetUserInterest.
                         * @param request GetUserInterestRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and UserInterest
                         */
                        public getUserInterest(request: google.ads.googleads.v8.services.IGetUserInterestRequest, callback: google.ads.googleads.v8.services.UserInterestService.GetUserInterestCallback): void;

                        /**
                         * Calls GetUserInterest.
                         * @param request GetUserInterestRequest message or plain object
                         * @returns Promise
                         */
                        public getUserInterest(request: google.ads.googleads.v8.services.IGetUserInterestRequest): Promise<google.ads.googleads.v8.resources.UserInterest>;
                    }

                    namespace UserInterestService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.UserInterestService#getUserInterest}.
                         * @param error Error, if any
                         * @param [response] UserInterest
                         */
                        type GetUserInterestCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.UserInterest) => void;
                    }

                    /** Properties of a GetUserInterestRequest. */
                    interface IGetUserInterestRequest {

                        /** GetUserInterestRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetUserInterestRequest. */
                    class GetUserInterestRequest implements IGetUserInterestRequest {

                        /**
                         * Constructs a new GetUserInterestRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetUserInterestRequest);

                        /** GetUserInterestRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetUserInterestRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetUserInterestRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetUserInterestRequest): google.ads.googleads.v8.services.GetUserInterestRequest;

                        /**
                         * Encodes the specified GetUserInterestRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetUserInterestRequest.verify|verify} messages.
                         * @param m GetUserInterestRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetUserInterestRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetUserInterestRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetUserInterestRequest.verify|verify} messages.
                         * @param message GetUserInterestRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetUserInterestRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetUserInterestRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetUserInterestRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetUserInterestRequest;

                        /**
                         * Decodes a GetUserInterestRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetUserInterestRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetUserInterestRequest;

                        /**
                         * Verifies a GetUserInterestRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetUserInterestRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetUserInterestRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetUserInterestRequest;

                        /**
                         * Creates a plain object from a GetUserInterestRequest message. Also converts values to other types if specified.
                         * @param m GetUserInterestRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetUserInterestRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetUserInterestRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a UserLocationViewService */
                    class UserLocationViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new UserLocationViewService 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 UserLocationViewService 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): UserLocationViewService;

                        /**
                         * Calls GetUserLocationView.
                         * @param request GetUserLocationViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and UserLocationView
                         */
                        public getUserLocationView(request: google.ads.googleads.v8.services.IGetUserLocationViewRequest, callback: google.ads.googleads.v8.services.UserLocationViewService.GetUserLocationViewCallback): void;

                        /**
                         * Calls GetUserLocationView.
                         * @param request GetUserLocationViewRequest message or plain object
                         * @returns Promise
                         */
                        public getUserLocationView(request: google.ads.googleads.v8.services.IGetUserLocationViewRequest): Promise<google.ads.googleads.v8.resources.UserLocationView>;
                    }

                    namespace UserLocationViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.UserLocationViewService#getUserLocationView}.
                         * @param error Error, if any
                         * @param [response] UserLocationView
                         */
                        type GetUserLocationViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.UserLocationView) => void;
                    }

                    /** Properties of a GetUserLocationViewRequest. */
                    interface IGetUserLocationViewRequest {

                        /** GetUserLocationViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetUserLocationViewRequest. */
                    class GetUserLocationViewRequest implements IGetUserLocationViewRequest {

                        /**
                         * Constructs a new GetUserLocationViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetUserLocationViewRequest);

                        /** GetUserLocationViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetUserLocationViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetUserLocationViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetUserLocationViewRequest): google.ads.googleads.v8.services.GetUserLocationViewRequest;

                        /**
                         * Encodes the specified GetUserLocationViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetUserLocationViewRequest.verify|verify} messages.
                         * @param m GetUserLocationViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetUserLocationViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetUserLocationViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetUserLocationViewRequest.verify|verify} messages.
                         * @param message GetUserLocationViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetUserLocationViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetUserLocationViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetUserLocationViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetUserLocationViewRequest;

                        /**
                         * Decodes a GetUserLocationViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetUserLocationViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetUserLocationViewRequest;

                        /**
                         * Verifies a GetUserLocationViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetUserLocationViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetUserLocationViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetUserLocationViewRequest;

                        /**
                         * Creates a plain object from a GetUserLocationViewRequest message. Also converts values to other types if specified.
                         * @param m GetUserLocationViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetUserLocationViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetUserLocationViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a VideoService */
                    class VideoService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new VideoService 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 VideoService 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): VideoService;

                        /**
                         * Calls GetVideo.
                         * @param request GetVideoRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and Video
                         */
                        public getVideo(request: google.ads.googleads.v8.services.IGetVideoRequest, callback: google.ads.googleads.v8.services.VideoService.GetVideoCallback): void;

                        /**
                         * Calls GetVideo.
                         * @param request GetVideoRequest message or plain object
                         * @returns Promise
                         */
                        public getVideo(request: google.ads.googleads.v8.services.IGetVideoRequest): Promise<google.ads.googleads.v8.resources.Video>;
                    }

                    namespace VideoService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.VideoService#getVideo}.
                         * @param error Error, if any
                         * @param [response] Video
                         */
                        type GetVideoCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.Video) => void;
                    }

                    /** Properties of a GetVideoRequest. */
                    interface IGetVideoRequest {

                        /** GetVideoRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetVideoRequest. */
                    class GetVideoRequest implements IGetVideoRequest {

                        /**
                         * Constructs a new GetVideoRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetVideoRequest);

                        /** GetVideoRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetVideoRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetVideoRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetVideoRequest): google.ads.googleads.v8.services.GetVideoRequest;

                        /**
                         * Encodes the specified GetVideoRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetVideoRequest.verify|verify} messages.
                         * @param m GetVideoRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetVideoRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetVideoRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetVideoRequest.verify|verify} messages.
                         * @param message GetVideoRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetVideoRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetVideoRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetVideoRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetVideoRequest;

                        /**
                         * Decodes a GetVideoRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetVideoRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetVideoRequest;

                        /**
                         * Verifies a GetVideoRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetVideoRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetVideoRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetVideoRequest;

                        /**
                         * Creates a plain object from a GetVideoRequest message. Also converts values to other types if specified.
                         * @param m GetVideoRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetVideoRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetVideoRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }

                    /** Represents a WebpageViewService */
                    class WebpageViewService extends $protobuf.rpc.Service {

                        /**
                         * Constructs a new WebpageViewService 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 WebpageViewService 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): WebpageViewService;

                        /**
                         * Calls GetWebpageView.
                         * @param request GetWebpageViewRequest message or plain object
                         * @param callback Node-style callback called with the error, if any, and WebpageView
                         */
                        public getWebpageView(request: google.ads.googleads.v8.services.IGetWebpageViewRequest, callback: google.ads.googleads.v8.services.WebpageViewService.GetWebpageViewCallback): void;

                        /**
                         * Calls GetWebpageView.
                         * @param request GetWebpageViewRequest message or plain object
                         * @returns Promise
                         */
                        public getWebpageView(request: google.ads.googleads.v8.services.IGetWebpageViewRequest): Promise<google.ads.googleads.v8.resources.WebpageView>;
                    }

                    namespace WebpageViewService {

                        /**
                         * Callback as used by {@link google.ads.googleads.v8.services.WebpageViewService#getWebpageView}.
                         * @param error Error, if any
                         * @param [response] WebpageView
                         */
                        type GetWebpageViewCallback = (error: (Error|null), response?: google.ads.googleads.v8.resources.WebpageView) => void;
                    }

                    /** Properties of a GetWebpageViewRequest. */
                    interface IGetWebpageViewRequest {

                        /** GetWebpageViewRequest resource_name */
                        resource_name?: (string|null);
                    }

                    /** Represents a GetWebpageViewRequest. */
                    class GetWebpageViewRequest implements IGetWebpageViewRequest {

                        /**
                         * Constructs a new GetWebpageViewRequest.
                         * @param [p] Properties to set
                         */
                        constructor(p?: google.ads.googleads.v8.services.IGetWebpageViewRequest);

                        /** GetWebpageViewRequest resource_name. */
                        public resource_name: string;

                        /**
                         * Creates a new GetWebpageViewRequest instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GetWebpageViewRequest instance
                         */
                        public static create(properties?: google.ads.googleads.v8.services.IGetWebpageViewRequest): google.ads.googleads.v8.services.GetWebpageViewRequest;

                        /**
                         * Encodes the specified GetWebpageViewRequest message. Does not implicitly {@link google.ads.googleads.v8.services.GetWebpageViewRequest.verify|verify} messages.
                         * @param m GetWebpageViewRequest message or plain object to encode
                         * @param [w] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(m: google.ads.googleads.v8.services.IGetWebpageViewRequest, w?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GetWebpageViewRequest message, length delimited. Does not implicitly {@link google.ads.googleads.v8.services.GetWebpageViewRequest.verify|verify} messages.
                         * @param message GetWebpageViewRequest message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.ads.googleads.v8.services.IGetWebpageViewRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GetWebpageViewRequest message from the specified reader or buffer.
                         * @param r Reader or buffer to decode from
                         * @param [l] Message length if known beforehand
                         * @returns GetWebpageViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): google.ads.googleads.v8.services.GetWebpageViewRequest;

                        /**
                         * Decodes a GetWebpageViewRequest message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GetWebpageViewRequest
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.ads.googleads.v8.services.GetWebpageViewRequest;

                        /**
                         * Verifies a GetWebpageViewRequest message.
                         * @param m Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(m: { [k: string]: any }): (string|null);

                        /**
                         * Creates a GetWebpageViewRequest message from a plain object. Also converts values to their respective internal types.
                         * @param d Plain object
                         * @returns GetWebpageViewRequest
                         */
                        public static fromObject(d: { [k: string]: any }): google.ads.googleads.v8.services.GetWebpageViewRequest;

                        /**
                         * Creates a plain object from a GetWebpageViewRequest message. Also converts values to other types if specified.
                         * @param m GetWebpageViewRequest
                         * @param [o] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(m: google.ads.googleads.v8.services.GetWebpageViewRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GetWebpageViewRequest to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };
                    }
                }
            }
        }
    }

    /** Namespace api. */
    namespace api {

        /** 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 [p] Properties to set
             */
            constructor(p?: 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 m Http message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.api.IHttp, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a Http message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns Http
             */
            public static fromObject(d: { [k: string]: any }): google.api.Http;

            /**
             * Creates a plain object from a Http message. Also converts values to other types if specified.
             * @param m Http
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.api.Http, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Http to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        /** 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 [p] Properties to set
             */
            constructor(p?: 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 m HttpRule message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.api.IHttpRule, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a HttpRule message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns HttpRule
             */
            public static fromObject(d: { [k: string]: any }): google.api.HttpRule;

            /**
             * Creates a plain object from a HttpRule message. Also converts values to other types if specified.
             * @param m HttpRule
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.api.HttpRule, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this HttpRule to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        /** 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 [p] Properties to set
             */
            constructor(p?: 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 m CustomHttpPattern message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.api.ICustomHttpPattern, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a CustomHttpPattern message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns CustomHttpPattern
             */
            public static fromObject(d: { [k: string]: any }): google.api.CustomHttpPattern;

            /**
             * Creates a plain object from a CustomHttpPattern message. Also converts values to other types if specified.
             * @param m CustomHttpPattern
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.api.CustomHttpPattern, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this CustomHttpPattern to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        /** FieldBehavior enum. */
        enum FieldBehavior {
            FIELD_BEHAVIOR_UNSPECIFIED = 0,
            OPTIONAL = 1,
            REQUIRED = 2,
            OUTPUT_ONLY = 3,
            INPUT_ONLY = 4,
            IMMUTABLE = 5,
            UNORDERED_LIST = 6
        }

        /** 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 [p] Properties to set
             */
            constructor(p?: 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 m ResourceDescriptor message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.api.IResourceDescriptor, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a ResourceDescriptor message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns ResourceDescriptor
             */
            public static fromObject(d: { [k: string]: any }): google.api.ResourceDescriptor;

            /**
             * Creates a plain object from a ResourceDescriptor message. Also converts values to other types if specified.
             * @param m ResourceDescriptor
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.api.ResourceDescriptor, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ResourceDescriptor to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        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 [p] Properties to set
             */
            constructor(p?: 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 m ResourceReference message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.api.IResourceReference, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a ResourceReference message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns ResourceReference
             */
            public static fromObject(d: { [k: string]: any }): google.api.ResourceReference;

            /**
             * Creates a plain object from a ResourceReference message. Also converts values to other types if specified.
             * @param m ResourceReference
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.api.ResourceReference, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ResourceReference to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }
    }

    /** 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 [p] Properties to set
             */
            constructor(p?: 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 m FileDescriptorSet message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.protobuf.IFileDescriptorSet, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a FileDescriptorSet message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns FileDescriptorSet
             */
            public static fromObject(d: { [k: string]: any }): google.protobuf.FileDescriptorSet;

            /**
             * Creates a plain object from a FileDescriptorSet message. Also converts values to other types if specified.
             * @param m FileDescriptorSet
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.protobuf.FileDescriptorSet, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this FileDescriptorSet to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        /** 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 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);
        }

        /** Represents a FileDescriptorProto. */
        class FileDescriptorProto implements IFileDescriptorProto {

            /**
             * Constructs a new FileDescriptorProto.
             * @param [p] Properties to set
             */
            constructor(p?: 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 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;

            /**
             * 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 m FileDescriptorProto message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.protobuf.IFileDescriptorProto, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a FileDescriptorProto message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns FileDescriptorProto
             */
            public static fromObject(d: { [k: string]: any }): google.protobuf.FileDescriptorProto;

            /**
             * Creates a plain object from a FileDescriptorProto message. Also converts values to other types if specified.
             * @param m FileDescriptorProto
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.protobuf.FileDescriptorProto, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this FileDescriptorProto to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        /** 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);
        }

        /** Represents a DescriptorProto. */
        class DescriptorProto implements IDescriptorProto {

            /**
             * Constructs a new DescriptorProto.
             * @param [p] Properties to set
             */
            constructor(p?: 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[];

            /**
             * 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 m DescriptorProto message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.protobuf.IDescriptorProto, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a DescriptorProto message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns DescriptorProto
             */
            public static fromObject(d: { [k: string]: any }): google.protobuf.DescriptorProto;

            /**
             * Creates a plain object from a DescriptorProto message. Also converts values to other types if specified.
             * @param m DescriptorProto
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.protobuf.DescriptorProto, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this DescriptorProto to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        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 [p] Properties to set
                 */
                constructor(p?: 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 m ExtensionRange message or plain object to encode
                 * @param [w] Writer to encode to
                 * @returns Writer
                 */
                public static encode(m: google.protobuf.DescriptorProto.IExtensionRange, w?: $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 r Reader or buffer to decode from
                 * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(m: { [k: string]: any }): (string|null);

                /**
                 * Creates an ExtensionRange message from a plain object. Also converts values to their respective internal types.
                 * @param d Plain object
                 * @returns ExtensionRange
                 */
                public static fromObject(d: { [k: string]: any }): google.protobuf.DescriptorProto.ExtensionRange;

                /**
                 * Creates a plain object from an ExtensionRange message. Also converts values to other types if specified.
                 * @param m ExtensionRange
                 * @param [o] Conversion options
                 * @returns Plain object
                 */
                public static toObject(m: google.protobuf.DescriptorProto.ExtensionRange, o?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ExtensionRange to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };
            }

            /** 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 [p] Properties to set
                 */
                constructor(p?: 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 m ReservedRange message or plain object to encode
                 * @param [w] Writer to encode to
                 * @returns Writer
                 */
                public static encode(m: google.protobuf.DescriptorProto.IReservedRange, w?: $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 r Reader or buffer to decode from
                 * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(m: { [k: string]: any }): (string|null);

                /**
                 * Creates a ReservedRange message from a plain object. Also converts values to their respective internal types.
                 * @param d Plain object
                 * @returns ReservedRange
                 */
                public static fromObject(d: { [k: string]: any }): google.protobuf.DescriptorProto.ReservedRange;

                /**
                 * Creates a plain object from a ReservedRange message. Also converts values to other types if specified.
                 * @param m ReservedRange
                 * @param [o] Conversion options
                 * @returns Plain object
                 */
                public static toObject(m: google.protobuf.DescriptorProto.ReservedRange, o?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ReservedRange to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };
            }
        }

        /** Properties of an ExtensionRangeOptions. */
        interface IExtensionRangeOptions {

            /** ExtensionRangeOptions uninterpreted_option */
            uninterpreted_option?: (google.protobuf.IUninterpretedOption[]|null);
        }

        /** Represents an ExtensionRangeOptions. */
        class ExtensionRangeOptions implements IExtensionRangeOptions {

            /**
             * Constructs a new ExtensionRangeOptions.
             * @param [p] Properties to set
             */
            constructor(p?: google.protobuf.IExtensionRangeOptions);

            /** ExtensionRangeOptions uninterpreted_option. */
            public uninterpreted_option: google.protobuf.IUninterpretedOption[];

            /**
             * 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 m ExtensionRangeOptions message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.protobuf.IExtensionRangeOptions, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates an ExtensionRangeOptions message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns ExtensionRangeOptions
             */
            public static fromObject(d: { [k: string]: any }): google.protobuf.ExtensionRangeOptions;

            /**
             * Creates a plain object from an ExtensionRangeOptions message. Also converts values to other types if specified.
             * @param m ExtensionRangeOptions
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.protobuf.ExtensionRangeOptions, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ExtensionRangeOptions to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        /** 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 [p] Properties to set
             */
            constructor(p?: 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 m FieldDescriptorProto message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.protobuf.IFieldDescriptorProto, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a FieldDescriptorProto message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns FieldDescriptorProto
             */
            public static fromObject(d: { [k: string]: any }): google.protobuf.FieldDescriptorProto;

            /**
             * Creates a plain object from a FieldDescriptorProto message. Also converts values to other types if specified.
             * @param m FieldDescriptorProto
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.protobuf.FieldDescriptorProto, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this FieldDescriptorProto to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        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_REQUIRED = 2,
                LABEL_REPEATED = 3
            }
        }

        /** 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 [p] Properties to set
             */
            constructor(p?: 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 m OneofDescriptorProto message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.protobuf.IOneofDescriptorProto, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates an OneofDescriptorProto message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns OneofDescriptorProto
             */
            public static fromObject(d: { [k: string]: any }): google.protobuf.OneofDescriptorProto;

            /**
             * Creates a plain object from an OneofDescriptorProto message. Also converts values to other types if specified.
             * @param m OneofDescriptorProto
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.protobuf.OneofDescriptorProto, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this OneofDescriptorProto to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        /** 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);
        }

        /** Represents an EnumDescriptorProto. */
        class EnumDescriptorProto implements IEnumDescriptorProto {

            /**
             * Constructs a new EnumDescriptorProto.
             * @param [p] Properties to set
             */
            constructor(p?: 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[];

            /**
             * 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 m EnumDescriptorProto message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.protobuf.IEnumDescriptorProto, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates an EnumDescriptorProto message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns EnumDescriptorProto
             */
            public static fromObject(d: { [k: string]: any }): google.protobuf.EnumDescriptorProto;

            /**
             * Creates a plain object from an EnumDescriptorProto message. Also converts values to other types if specified.
             * @param m EnumDescriptorProto
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.protobuf.EnumDescriptorProto, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this EnumDescriptorProto to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        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 [p] Properties to set
                 */
                constructor(p?: 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 m EnumReservedRange message or plain object to encode
                 * @param [w] Writer to encode to
                 * @returns Writer
                 */
                public static encode(m: google.protobuf.EnumDescriptorProto.IEnumReservedRange, w?: $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 r Reader or buffer to decode from
                 * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(m: { [k: string]: any }): (string|null);

                /**
                 * Creates an EnumReservedRange message from a plain object. Also converts values to their respective internal types.
                 * @param d Plain object
                 * @returns EnumReservedRange
                 */
                public static fromObject(d: { [k: string]: any }): google.protobuf.EnumDescriptorProto.EnumReservedRange;

                /**
                 * Creates a plain object from an EnumReservedRange message. Also converts values to other types if specified.
                 * @param m EnumReservedRange
                 * @param [o] Conversion options
                 * @returns Plain object
                 */
                public static toObject(m: google.protobuf.EnumDescriptorProto.EnumReservedRange, o?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this EnumReservedRange to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };
            }
        }

        /** 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 [p] Properties to set
             */
            constructor(p?: 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 m EnumValueDescriptorProto message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.protobuf.IEnumValueDescriptorProto, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates an EnumValueDescriptorProto message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns EnumValueDescriptorProto
             */
            public static fromObject(d: { [k: string]: any }): google.protobuf.EnumValueDescriptorProto;

            /**
             * Creates a plain object from an EnumValueDescriptorProto message. Also converts values to other types if specified.
             * @param m EnumValueDescriptorProto
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.protobuf.EnumValueDescriptorProto, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this EnumValueDescriptorProto to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        /** 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 [p] Properties to set
             */
            constructor(p?: 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 m ServiceDescriptorProto message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.protobuf.IServiceDescriptorProto, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a ServiceDescriptorProto message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns ServiceDescriptorProto
             */
            public static fromObject(d: { [k: string]: any }): google.protobuf.ServiceDescriptorProto;

            /**
             * Creates a plain object from a ServiceDescriptorProto message. Also converts values to other types if specified.
             * @param m ServiceDescriptorProto
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.protobuf.ServiceDescriptorProto, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ServiceDescriptorProto to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        /** 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 [p] Properties to set
             */
            constructor(p?: 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 m MethodDescriptorProto message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.protobuf.IMethodDescriptorProto, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a MethodDescriptorProto message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns MethodDescriptorProto
             */
            public static fromObject(d: { [k: string]: any }): google.protobuf.MethodDescriptorProto;

            /**
             * Creates a plain object from a MethodDescriptorProto message. Also converts values to other types if specified.
             * @param m MethodDescriptorProto
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.protobuf.MethodDescriptorProto, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this MethodDescriptorProto to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        /** 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 php_generic_services */
            php_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 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 [p] Properties to set
             */
            constructor(p?: 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 php_generic_services. */
            public php_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 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 m FileOptions message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.protobuf.IFileOptions, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a FileOptions message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns FileOptions
             */
            public static fromObject(d: { [k: string]: any }): google.protobuf.FileOptions;

            /**
             * Creates a plain object from a FileOptions message. Also converts values to other types if specified.
             * @param m FileOptions
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.protobuf.FileOptions, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this FileOptions to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        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 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 [p] Properties to set
             */
            constructor(p?: 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 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 m MessageOptions message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.protobuf.IMessageOptions, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a MessageOptions message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns MessageOptions
             */
            public static fromObject(d: { [k: string]: any }): google.protobuf.MessageOptions;

            /**
             * Creates a plain object from a MessageOptions message. Also converts values to other types if specified.
             * @param m MessageOptions
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.protobuf.MessageOptions, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this MessageOptions to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        /** 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 deprecated */
            deprecated?: (boolean|null);

            /** FieldOptions weak */
            weak?: (boolean|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);
        }

        /** Represents a FieldOptions. */
        class FieldOptions implements IFieldOptions {

            /**
             * Constructs a new FieldOptions.
             * @param [p] Properties to set
             */
            constructor(p?: 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 deprecated. */
            public deprecated: boolean;

            /** FieldOptions weak. */
            public weak: boolean;

            /** 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 m FieldOptions message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.protobuf.IFieldOptions, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a FieldOptions message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns FieldOptions
             */
            public static fromObject(d: { [k: string]: any }): google.protobuf.FieldOptions;

            /**
             * Creates a plain object from a FieldOptions message. Also converts values to other types if specified.
             * @param m FieldOptions
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.protobuf.FieldOptions, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this FieldOptions to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        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
            }
        }

        /** Properties of an OneofOptions. */
        interface IOneofOptions {

            /** OneofOptions uninterpreted_option */
            uninterpreted_option?: (google.protobuf.IUninterpretedOption[]|null);
        }

        /** Represents an OneofOptions. */
        class OneofOptions implements IOneofOptions {

            /**
             * Constructs a new OneofOptions.
             * @param [p] Properties to set
             */
            constructor(p?: google.protobuf.IOneofOptions);

            /** 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 m OneofOptions message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.protobuf.IOneofOptions, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates an OneofOptions message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns OneofOptions
             */
            public static fromObject(d: { [k: string]: any }): google.protobuf.OneofOptions;

            /**
             * Creates a plain object from an OneofOptions message. Also converts values to other types if specified.
             * @param m OneofOptions
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.protobuf.OneofOptions, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this OneofOptions to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        /** Properties of an EnumOptions. */
        interface IEnumOptions {

            /** EnumOptions allow_alias */
            allow_alias?: (boolean|null);

            /** EnumOptions deprecated */
            deprecated?: (boolean|null);

            /** EnumOptions uninterpreted_option */
            uninterpreted_option?: (google.protobuf.IUninterpretedOption[]|null);
        }

        /** Represents an EnumOptions. */
        class EnumOptions implements IEnumOptions {

            /**
             * Constructs a new EnumOptions.
             * @param [p] Properties to set
             */
            constructor(p?: google.protobuf.IEnumOptions);

            /** EnumOptions allow_alias. */
            public allow_alias: boolean;

            /** EnumOptions deprecated. */
            public deprecated: boolean;

            /** 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 m EnumOptions message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.protobuf.IEnumOptions, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates an EnumOptions message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns EnumOptions
             */
            public static fromObject(d: { [k: string]: any }): google.protobuf.EnumOptions;

            /**
             * Creates a plain object from an EnumOptions message. Also converts values to other types if specified.
             * @param m EnumOptions
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.protobuf.EnumOptions, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this EnumOptions to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        /** Properties of an EnumValueOptions. */
        interface IEnumValueOptions {

            /** EnumValueOptions deprecated */
            deprecated?: (boolean|null);

            /** EnumValueOptions uninterpreted_option */
            uninterpreted_option?: (google.protobuf.IUninterpretedOption[]|null);
        }

        /** Represents an EnumValueOptions. */
        class EnumValueOptions implements IEnumValueOptions {

            /**
             * Constructs a new EnumValueOptions.
             * @param [p] Properties to set
             */
            constructor(p?: google.protobuf.IEnumValueOptions);

            /** EnumValueOptions deprecated. */
            public deprecated: boolean;

            /** 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 m EnumValueOptions message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.protobuf.IEnumValueOptions, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates an EnumValueOptions message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns EnumValueOptions
             */
            public static fromObject(d: { [k: string]: any }): google.protobuf.EnumValueOptions;

            /**
             * Creates a plain object from an EnumValueOptions message. Also converts values to other types if specified.
             * @param m EnumValueOptions
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.protobuf.EnumValueOptions, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this EnumValueOptions to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        /** Properties of a ServiceOptions. */
        interface IServiceOptions {

            /** 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);
        }

        /** Represents a ServiceOptions. */
        class ServiceOptions implements IServiceOptions {

            /**
             * Constructs a new ServiceOptions.
             * @param [p] Properties to set
             */
            constructor(p?: google.protobuf.IServiceOptions);

            /** 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 m ServiceOptions message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.protobuf.IServiceOptions, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a ServiceOptions message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns ServiceOptions
             */
            public static fromObject(d: { [k: string]: any }): google.protobuf.ServiceOptions;

            /**
             * Creates a plain object from a ServiceOptions message. Also converts values to other types if specified.
             * @param m ServiceOptions
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.protobuf.ServiceOptions, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ServiceOptions to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        /** 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 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 [p] Properties to set
             */
            constructor(p?: 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 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 m MethodOptions message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.protobuf.IMethodOptions, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a MethodOptions message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns MethodOptions
             */
            public static fromObject(d: { [k: string]: any }): google.protobuf.MethodOptions;

            /**
             * Creates a plain object from a MethodOptions message. Also converts values to other types if specified.
             * @param m MethodOptions
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.protobuf.MethodOptions, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this MethodOptions to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        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|string|null);

            /** UninterpretedOption aggregate_value */
            aggregate_value?: (string|null);
        }

        /** Represents an UninterpretedOption. */
        class UninterpretedOption implements IUninterpretedOption {

            /**
             * Constructs a new UninterpretedOption.
             * @param [p] Properties to set
             */
            constructor(p?: 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|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 m UninterpretedOption message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.protobuf.IUninterpretedOption, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates an UninterpretedOption message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns UninterpretedOption
             */
            public static fromObject(d: { [k: string]: any }): google.protobuf.UninterpretedOption;

            /**
             * Creates a plain object from an UninterpretedOption message. Also converts values to other types if specified.
             * @param m UninterpretedOption
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.protobuf.UninterpretedOption, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this UninterpretedOption to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        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 [p] Properties to set
                 */
                constructor(p?: 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 m NamePart message or plain object to encode
                 * @param [w] Writer to encode to
                 * @returns Writer
                 */
                public static encode(m: google.protobuf.UninterpretedOption.INamePart, w?: $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 r Reader or buffer to decode from
                 * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(m: { [k: string]: any }): (string|null);

                /**
                 * Creates a NamePart message from a plain object. Also converts values to their respective internal types.
                 * @param d Plain object
                 * @returns NamePart
                 */
                public static fromObject(d: { [k: string]: any }): google.protobuf.UninterpretedOption.NamePart;

                /**
                 * Creates a plain object from a NamePart message. Also converts values to other types if specified.
                 * @param m NamePart
                 * @param [o] Conversion options
                 * @returns Plain object
                 */
                public static toObject(m: google.protobuf.UninterpretedOption.NamePart, o?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this NamePart to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };
            }
        }

        /** 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 [p] Properties to set
             */
            constructor(p?: 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 m SourceCodeInfo message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.protobuf.ISourceCodeInfo, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a SourceCodeInfo message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns SourceCodeInfo
             */
            public static fromObject(d: { [k: string]: any }): google.protobuf.SourceCodeInfo;

            /**
             * Creates a plain object from a SourceCodeInfo message. Also converts values to other types if specified.
             * @param m SourceCodeInfo
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.protobuf.SourceCodeInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this SourceCodeInfo to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        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 [p] Properties to set
                 */
                constructor(p?: 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 m Location message or plain object to encode
                 * @param [w] Writer to encode to
                 * @returns Writer
                 */
                public static encode(m: google.protobuf.SourceCodeInfo.ILocation, w?: $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 r Reader or buffer to decode from
                 * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(m: { [k: string]: any }): (string|null);

                /**
                 * Creates a Location message from a plain object. Also converts values to their respective internal types.
                 * @param d Plain object
                 * @returns Location
                 */
                public static fromObject(d: { [k: string]: any }): google.protobuf.SourceCodeInfo.Location;

                /**
                 * Creates a plain object from a Location message. Also converts values to other types if specified.
                 * @param m Location
                 * @param [o] Conversion options
                 * @returns Plain object
                 */
                public static toObject(m: google.protobuf.SourceCodeInfo.Location, o?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this Location to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };
            }
        }

        /** 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 [p] Properties to set
             */
            constructor(p?: 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 m GeneratedCodeInfo message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.protobuf.IGeneratedCodeInfo, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a GeneratedCodeInfo message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns GeneratedCodeInfo
             */
            public static fromObject(d: { [k: string]: any }): google.protobuf.GeneratedCodeInfo;

            /**
             * Creates a plain object from a GeneratedCodeInfo message. Also converts values to other types if specified.
             * @param m GeneratedCodeInfo
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.protobuf.GeneratedCodeInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this GeneratedCodeInfo to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        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);
            }

            /** Represents an Annotation. */
            class Annotation implements IAnnotation {

                /**
                 * Constructs a new Annotation.
                 * @param [p] Properties to set
                 */
                constructor(p?: 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;

                /**
                 * 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 m Annotation message or plain object to encode
                 * @param [w] Writer to encode to
                 * @returns Writer
                 */
                public static encode(m: google.protobuf.GeneratedCodeInfo.IAnnotation, w?: $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 r Reader or buffer to decode from
                 * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(m: { [k: string]: any }): (string|null);

                /**
                 * Creates an Annotation message from a plain object. Also converts values to their respective internal types.
                 * @param d Plain object
                 * @returns Annotation
                 */
                public static fromObject(d: { [k: string]: any }): google.protobuf.GeneratedCodeInfo.Annotation;

                /**
                 * Creates a plain object from an Annotation message. Also converts values to other types if specified.
                 * @param m Annotation
                 * @param [o] Conversion options
                 * @returns Plain object
                 */
                public static toObject(m: google.protobuf.GeneratedCodeInfo.Annotation, o?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this Annotation to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };
            }
        }

        /** 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 [p] Properties to set
             */
            constructor(p?: 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 m Duration message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.protobuf.IDuration, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a Duration message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns Duration
             */
            public static fromObject(d: { [k: string]: any }): google.protobuf.Duration;

            /**
             * Creates a plain object from a Duration message. Also converts values to other types if specified.
             * @param m Duration
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.protobuf.Duration, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Duration to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        /** Properties of a FieldMask. */
        interface IFieldMask {

            /** FieldMask paths */
            paths?: (string[]|null);
        }

        /** Represents a FieldMask. */
        class FieldMask implements IFieldMask {

            /**
             * Constructs a new FieldMask.
             * @param [p] Properties to set
             */
            constructor(p?: 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 m FieldMask message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.protobuf.IFieldMask, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a FieldMask message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns FieldMask
             */
            public static fromObject(d: { [k: string]: any }): google.protobuf.FieldMask;

            /**
             * Creates a plain object from a FieldMask message. Also converts values to other types if specified.
             * @param m FieldMask
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.protobuf.FieldMask, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this FieldMask to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        /** Properties of an Any. */
        interface IAny {

            /** Any type_url */
            type_url?: (string|null);

            /** Any value */
            value?: (Uint8Array|string|null);
        }

        /** Represents an Any. */
        class Any implements IAny {

            /**
             * Constructs a new Any.
             * @param [p] Properties to set
             */
            constructor(p?: google.protobuf.IAny);

            /** Any type_url. */
            public type_url: string;

            /** Any value. */
            public value: (Uint8Array|string);

            /**
             * Creates a new Any instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Any instance
             */
            public static create(properties?: google.protobuf.IAny): google.protobuf.Any;

            /**
             * Encodes the specified Any message. Does not implicitly {@link google.protobuf.Any.verify|verify} messages.
             * @param m Any message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.protobuf.IAny, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates an Any message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns Any
             */
            public static fromObject(d: { [k: string]: any }): google.protobuf.Any;

            /**
             * Creates a plain object from an Any message. Also converts values to other types if specified.
             * @param m Any
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.protobuf.Any, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Any to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        /** Properties of an Empty. */
        interface IEmpty {
        }

        /** Represents an Empty. */
        class Empty implements IEmpty {

            /**
             * Constructs a new Empty.
             * @param [p] Properties to set
             */
            constructor(p?: 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 m Empty message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.protobuf.IEmpty, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates an Empty message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns Empty
             */
            public static fromObject(d: { [k: string]: any }): google.protobuf.Empty;

            /**
             * Creates a plain object from an Empty message. Also converts values to other types if specified.
             * @param m Empty
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.protobuf.Empty, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Empty to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }
    }

    /** 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 [p] Properties to set
             */
            constructor(p?: 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 m Status message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.rpc.IStatus, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a Status message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns Status
             */
            public static fromObject(d: { [k: string]: any }): google.rpc.Status;

            /**
             * Creates a plain object from a Status message. Also converts values to other types if specified.
             * @param m Status
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.rpc.Status, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Status to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }
    }

    /** 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 [p] Properties to set
             */
            constructor(p?: 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 m Operation message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.longrunning.IOperation, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates an Operation message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns Operation
             */
            public static fromObject(d: { [k: string]: any }): google.longrunning.Operation;

            /**
             * Creates a plain object from an Operation message. Also converts values to other types if specified.
             * @param m Operation
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.longrunning.Operation, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Operation to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        /** Properties of a GetOperationRequest. */
        interface IGetOperationRequest {

            /** GetOperationRequest name */
            name?: (string|null);
        }

        /** Represents a GetOperationRequest. */
        class GetOperationRequest implements IGetOperationRequest {

            /**
             * Constructs a new GetOperationRequest.
             * @param [p] Properties to set
             */
            constructor(p?: 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 m GetOperationRequest message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.longrunning.IGetOperationRequest, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a GetOperationRequest message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns GetOperationRequest
             */
            public static fromObject(d: { [k: string]: any }): google.longrunning.GetOperationRequest;

            /**
             * Creates a plain object from a GetOperationRequest message. Also converts values to other types if specified.
             * @param m GetOperationRequest
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.longrunning.GetOperationRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this GetOperationRequest to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        /** 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 [p] Properties to set
             */
            constructor(p?: 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 m ListOperationsRequest message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.longrunning.IListOperationsRequest, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a ListOperationsRequest message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns ListOperationsRequest
             */
            public static fromObject(d: { [k: string]: any }): google.longrunning.ListOperationsRequest;

            /**
             * Creates a plain object from a ListOperationsRequest message. Also converts values to other types if specified.
             * @param m ListOperationsRequest
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.longrunning.ListOperationsRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ListOperationsRequest to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        /** 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 [p] Properties to set
             */
            constructor(p?: 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 m ListOperationsResponse message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.longrunning.IListOperationsResponse, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a ListOperationsResponse message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns ListOperationsResponse
             */
            public static fromObject(d: { [k: string]: any }): google.longrunning.ListOperationsResponse;

            /**
             * Creates a plain object from a ListOperationsResponse message. Also converts values to other types if specified.
             * @param m ListOperationsResponse
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.longrunning.ListOperationsResponse, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ListOperationsResponse to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        /** Properties of a CancelOperationRequest. */
        interface ICancelOperationRequest {

            /** CancelOperationRequest name */
            name?: (string|null);
        }

        /** Represents a CancelOperationRequest. */
        class CancelOperationRequest implements ICancelOperationRequest {

            /**
             * Constructs a new CancelOperationRequest.
             * @param [p] Properties to set
             */
            constructor(p?: 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 m CancelOperationRequest message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.longrunning.ICancelOperationRequest, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a CancelOperationRequest message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns CancelOperationRequest
             */
            public static fromObject(d: { [k: string]: any }): google.longrunning.CancelOperationRequest;

            /**
             * Creates a plain object from a CancelOperationRequest message. Also converts values to other types if specified.
             * @param m CancelOperationRequest
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.longrunning.CancelOperationRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this CancelOperationRequest to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        /** Properties of a DeleteOperationRequest. */
        interface IDeleteOperationRequest {

            /** DeleteOperationRequest name */
            name?: (string|null);
        }

        /** Represents a DeleteOperationRequest. */
        class DeleteOperationRequest implements IDeleteOperationRequest {

            /**
             * Constructs a new DeleteOperationRequest.
             * @param [p] Properties to set
             */
            constructor(p?: 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 m DeleteOperationRequest message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.longrunning.IDeleteOperationRequest, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a DeleteOperationRequest message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns DeleteOperationRequest
             */
            public static fromObject(d: { [k: string]: any }): google.longrunning.DeleteOperationRequest;

            /**
             * Creates a plain object from a DeleteOperationRequest message. Also converts values to other types if specified.
             * @param m DeleteOperationRequest
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.longrunning.DeleteOperationRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this DeleteOperationRequest to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        /** 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 [p] Properties to set
             */
            constructor(p?: 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 m WaitOperationRequest message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.longrunning.IWaitOperationRequest, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates a WaitOperationRequest message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns WaitOperationRequest
             */
            public static fromObject(d: { [k: string]: any }): google.longrunning.WaitOperationRequest;

            /**
             * Creates a plain object from a WaitOperationRequest message. Also converts values to other types if specified.
             * @param m WaitOperationRequest
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.longrunning.WaitOperationRequest, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this WaitOperationRequest to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }

        /** 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 [p] Properties to set
             */
            constructor(p?: 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 m OperationInfo message or plain object to encode
             * @param [w] Writer to encode to
             * @returns Writer
             */
            public static encode(m: google.longrunning.IOperationInfo, w?: $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 r Reader or buffer to decode from
             * @param [l] 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(r: ($protobuf.Reader|Uint8Array), l?: 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 m Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(m: { [k: string]: any }): (string|null);

            /**
             * Creates an OperationInfo message from a plain object. Also converts values to their respective internal types.
             * @param d Plain object
             * @returns OperationInfo
             */
            public static fromObject(d: { [k: string]: any }): google.longrunning.OperationInfo;

            /**
             * Creates a plain object from an OperationInfo message. Also converts values to other types if specified.
             * @param m OperationInfo
             * @param [o] Conversion options
             * @returns Plain object
             */
            public static toObject(m: google.longrunning.OperationInfo, o?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this OperationInfo to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };
        }
    }
}
