UNPKG

@htdangkhoa/google-ads

Version:
4,143 lines 188 kB
"use strict";
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
//   protoc-gen-ts_proto  v1.181.2
//   protoc               v3.21.12
// source: google/ads/googleads/v24/services/reach_plan_service.proto
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ReachPlanServiceClient = exports.ReachPlanServiceService = exports.TargetFrequencySettings = exports.SurfaceTargeting = exports.SurfaceTargetingCombinations = exports.YouTubeSelectLineUpTargeting = exports.YouTubeSelectLineUp = exports.YouTubeSelectSettings = exports.AdvancedProductTargeting = exports.AudienceTargeting = exports.ForecastMetricOptions = exports.EffectiveFrequencyBreakdown = exports.OnTargetAudienceMetrics = exports.PlannedProductForecast = exports.PlannedProductReachForecast = exports.Forecast = exports.ReachForecast = exports.ReachCurve = exports.GenerateReachForecastResponse = exports.PlannedProduct = exports.CampaignDuration = exports.Targeting = exports.FrequencyCap = exports.EffectiveFrequencyLimit = exports.GenerateReachForecastRequest = exports.PlannableUserInterest = exports.ListPlannableUserInterestsResponse = exports.ListPlannableUserInterestsRequest = exports.PlannableTargeting = exports.PlannableUserListMetadata = exports.PlannableUserList = exports.ListPlannableUserListsResponse = exports.ListPlannableUserListsRequest = exports.ProductCoreAttributes = exports.ProductMetadata = exports.ListPlannableProductsResponse = exports.ListPlannableProductsRequest = exports.PlannableLocation = exports.ListPlannableLocationsResponse = exports.ListPlannableLocationsRequest = exports.ConversionRateSuggestion = exports.GenerateConversionRatesResponse = exports.GenerateConversionRatesRequest = void 0;
/* eslint-disable */
const grpc_js_1 = require("@grpc/grpc-js");
const long_1 = __importDefault(require("long"));
const minimal_js_1 = __importDefault(require("protobufjs/minimal.js"));
const additional_application_info_js_1 = require("../common/additional_application_info.js");
const criteria_js_1 = require("../common/criteria.js");
const dates_js_1 = require("../common/dates.js");
const frequency_cap_time_unit_js_1 = require("../enums/frequency_cap_time_unit.js");
const reach_plan_age_range_js_1 = require("../enums/reach_plan_age_range.js");
const reach_plan_buying_method_js_1 = require("../enums/reach_plan_buying_method.js");
const reach_plan_conversion_rate_model_js_1 = require("../enums/reach_plan_conversion_rate_model.js");
const reach_plan_cost_model_js_1 = require("../enums/reach_plan_cost_model.js");
const reach_plan_marketing_objective_js_1 = require("../enums/reach_plan_marketing_objective.js");
const reach_plan_network_js_1 = require("../enums/reach_plan_network.js");
const reach_plan_plannable_user_list_status_js_1 = require("../enums/reach_plan_plannable_user_list_status.js");
const reach_plan_surface_js_1 = require("../enums/reach_plan_surface.js");
const target_frequency_time_unit_js_1 = require("../enums/target_frequency_time_unit.js");
const user_interest_taxonomy_type_js_1 = require("../enums/user_interest_taxonomy_type.js");
const user_list_crm_data_source_type_js_1 = require("../enums/user_list_crm_data_source_type.js");
const user_list_type_js_1 = require("../enums/user_list_type.js");
function createBaseGenerateConversionRatesRequest() {
    return { customer_id: "", customer_reach_group: undefined, reach_application_info: undefined };
}
exports.GenerateConversionRatesRequest = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.customer_id !== undefined && message.customer_id !== "") {
            writer.uint32(10).string(message.customer_id);
        }
        if (message.customer_reach_group !== undefined) {
            writer.uint32(18).string(message.customer_reach_group);
        }
        if (message.reach_application_info !== undefined) {
            additional_application_info_js_1.AdditionalApplicationInfo.encode(message.reach_application_info, writer.uint32(26).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseGenerateConversionRatesRequest();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.customer_id = reader.string();
                    continue;
                case 2:
                    if (tag !== 18) {
                        break;
                    }
                    message.customer_reach_group = reader.string();
                    continue;
                case 3:
                    if (tag !== 26) {
                        break;
                    }
                    message.reach_application_info = additional_application_info_js_1.AdditionalApplicationInfo.decode(reader, reader.uint32());
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            customer_id: isSet(object.customer_id) ? globalThis.String(object.customer_id) : "",
            customer_reach_group: isSet(object.customer_reach_group)
                ? globalThis.String(object.customer_reach_group)
                : undefined,
            reach_application_info: isSet(object.reach_application_info)
                ? additional_application_info_js_1.AdditionalApplicationInfo.fromJSON(object.reach_application_info)
                : undefined,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.customer_id !== undefined && message.customer_id !== "") {
            obj.customer_id = message.customer_id;
        }
        if (message.customer_reach_group !== undefined) {
            obj.customer_reach_group = message.customer_reach_group;
        }
        if (message.reach_application_info !== undefined) {
            obj.reach_application_info = additional_application_info_js_1.AdditionalApplicationInfo.toJSON(message.reach_application_info);
        }
        return obj;
    },
    create(base) {
        return exports.GenerateConversionRatesRequest.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b;
        const message = createBaseGenerateConversionRatesRequest();
        message.customer_id = (_a = object.customer_id) !== null && _a !== void 0 ? _a : "";
        message.customer_reach_group = (_b = object.customer_reach_group) !== null && _b !== void 0 ? _b : undefined;
        message.reach_application_info =
            (object.reach_application_info !== undefined && object.reach_application_info !== null)
                ? additional_application_info_js_1.AdditionalApplicationInfo.fromPartial(object.reach_application_info)
                : undefined;
        return message;
    },
};
function createBaseGenerateConversionRatesResponse() {
    return { conversion_rate_suggestions: [] };
}
exports.GenerateConversionRatesResponse = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.conversion_rate_suggestions !== undefined && message.conversion_rate_suggestions.length !== 0) {
            for (const v of message.conversion_rate_suggestions) {
                exports.ConversionRateSuggestion.encode(v, writer.uint32(10).fork()).ldelim();
            }
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseGenerateConversionRatesResponse();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.conversion_rate_suggestions.push(exports.ConversionRateSuggestion.decode(reader, reader.uint32()));
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            conversion_rate_suggestions: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.conversion_rate_suggestions)
                ? object.conversion_rate_suggestions.map((e) => exports.ConversionRateSuggestion.fromJSON(e))
                : [],
        };
    },
    toJSON(message) {
        var _a;
        const obj = {};
        if ((_a = message.conversion_rate_suggestions) === null || _a === void 0 ? void 0 : _a.length) {
            obj.conversion_rate_suggestions = message.conversion_rate_suggestions.map((e) => exports.ConversionRateSuggestion.toJSON(e));
        }
        return obj;
    },
    create(base) {
        return exports.GenerateConversionRatesResponse.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a;
        const message = createBaseGenerateConversionRatesResponse();
        message.conversion_rate_suggestions =
            ((_a = object.conversion_rate_suggestions) === null || _a === void 0 ? void 0 : _a.map((e) => exports.ConversionRateSuggestion.fromPartial(e))) || [];
        return message;
    },
};
function createBaseConversionRateSuggestion() {
    return { conversion_rate_model: 0, plannable_product_code: "", surface_targeting: undefined, conversion_rate: 0 };
}
exports.ConversionRateSuggestion = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.conversion_rate_model !== undefined && message.conversion_rate_model !== 0) {
            writer.uint32(8).int32(message.conversion_rate_model);
        }
        if (message.plannable_product_code !== undefined && message.plannable_product_code !== "") {
            writer.uint32(18).string(message.plannable_product_code);
        }
        if (message.surface_targeting !== undefined) {
            exports.SurfaceTargeting.encode(message.surface_targeting, writer.uint32(34).fork()).ldelim();
        }
        if (message.conversion_rate !== undefined && message.conversion_rate !== 0) {
            writer.uint32(25).double(message.conversion_rate);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseConversionRateSuggestion();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 8) {
                        break;
                    }
                    message.conversion_rate_model = reader.int32();
                    continue;
                case 2:
                    if (tag !== 18) {
                        break;
                    }
                    message.plannable_product_code = reader.string();
                    continue;
                case 4:
                    if (tag !== 34) {
                        break;
                    }
                    message.surface_targeting = exports.SurfaceTargeting.decode(reader, reader.uint32());
                    continue;
                case 3:
                    if (tag !== 25) {
                        break;
                    }
                    message.conversion_rate = reader.double();
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            conversion_rate_model: isSet(object.conversion_rate_model)
                ? (0, reach_plan_conversion_rate_model_js_1.reachPlanConversionRateModelEnum_ReachPlanConversionRateModelFromJSON)(object.conversion_rate_model)
                : 0,
            plannable_product_code: isSet(object.plannable_product_code)
                ? globalThis.String(object.plannable_product_code)
                : "",
            surface_targeting: isSet(object.surface_targeting)
                ? exports.SurfaceTargeting.fromJSON(object.surface_targeting)
                : undefined,
            conversion_rate: isSet(object.conversion_rate) ? globalThis.Number(object.conversion_rate) : 0,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.conversion_rate_model !== undefined && message.conversion_rate_model !== 0) {
            obj.conversion_rate_model = (0, reach_plan_conversion_rate_model_js_1.reachPlanConversionRateModelEnum_ReachPlanConversionRateModelToJSON)(message.conversion_rate_model);
        }
        if (message.plannable_product_code !== undefined && message.plannable_product_code !== "") {
            obj.plannable_product_code = message.plannable_product_code;
        }
        if (message.surface_targeting !== undefined) {
            obj.surface_targeting = exports.SurfaceTargeting.toJSON(message.surface_targeting);
        }
        if (message.conversion_rate !== undefined && message.conversion_rate !== 0) {
            obj.conversion_rate = message.conversion_rate;
        }
        return obj;
    },
    create(base) {
        return exports.ConversionRateSuggestion.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b, _c;
        const message = createBaseConversionRateSuggestion();
        message.conversion_rate_model = (_a = object.conversion_rate_model) !== null && _a !== void 0 ? _a : 0;
        message.plannable_product_code = (_b = object.plannable_product_code) !== null && _b !== void 0 ? _b : "";
        message.surface_targeting = (object.surface_targeting !== undefined && object.surface_targeting !== null)
            ? exports.SurfaceTargeting.fromPartial(object.surface_targeting)
            : undefined;
        message.conversion_rate = (_c = object.conversion_rate) !== null && _c !== void 0 ? _c : 0;
        return message;
    },
};
function createBaseListPlannableLocationsRequest() {
    return { reach_application_info: undefined };
}
exports.ListPlannableLocationsRequest = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.reach_application_info !== undefined) {
            additional_application_info_js_1.AdditionalApplicationInfo.encode(message.reach_application_info, writer.uint32(10).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseListPlannableLocationsRequest();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.reach_application_info = additional_application_info_js_1.AdditionalApplicationInfo.decode(reader, reader.uint32());
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            reach_application_info: isSet(object.reach_application_info)
                ? additional_application_info_js_1.AdditionalApplicationInfo.fromJSON(object.reach_application_info)
                : undefined,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.reach_application_info !== undefined) {
            obj.reach_application_info = additional_application_info_js_1.AdditionalApplicationInfo.toJSON(message.reach_application_info);
        }
        return obj;
    },
    create(base) {
        return exports.ListPlannableLocationsRequest.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        const message = createBaseListPlannableLocationsRequest();
        message.reach_application_info =
            (object.reach_application_info !== undefined && object.reach_application_info !== null)
                ? additional_application_info_js_1.AdditionalApplicationInfo.fromPartial(object.reach_application_info)
                : undefined;
        return message;
    },
};
function createBaseListPlannableLocationsResponse() {
    return { plannable_locations: [] };
}
exports.ListPlannableLocationsResponse = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.plannable_locations !== undefined && message.plannable_locations.length !== 0) {
            for (const v of message.plannable_locations) {
                exports.PlannableLocation.encode(v, writer.uint32(10).fork()).ldelim();
            }
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseListPlannableLocationsResponse();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.plannable_locations.push(exports.PlannableLocation.decode(reader, reader.uint32()));
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            plannable_locations: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.plannable_locations)
                ? object.plannable_locations.map((e) => exports.PlannableLocation.fromJSON(e))
                : [],
        };
    },
    toJSON(message) {
        var _a;
        const obj = {};
        if ((_a = message.plannable_locations) === null || _a === void 0 ? void 0 : _a.length) {
            obj.plannable_locations = message.plannable_locations.map((e) => exports.PlannableLocation.toJSON(e));
        }
        return obj;
    },
    create(base) {
        return exports.ListPlannableLocationsResponse.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a;
        const message = createBaseListPlannableLocationsResponse();
        message.plannable_locations = ((_a = object.plannable_locations) === null || _a === void 0 ? void 0 : _a.map((e) => exports.PlannableLocation.fromPartial(e))) || [];
        return message;
    },
};
function createBasePlannableLocation() {
    return {
        id: undefined,
        name: undefined,
        parent_country_id: undefined,
        country_code: undefined,
        location_type: undefined,
    };
}
exports.PlannableLocation = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.id !== undefined) {
            writer.uint32(34).string(message.id);
        }
        if (message.name !== undefined) {
            writer.uint32(42).string(message.name);
        }
        if (message.parent_country_id !== undefined) {
            writer.uint32(48).int64(message.parent_country_id);
        }
        if (message.country_code !== undefined) {
            writer.uint32(58).string(message.country_code);
        }
        if (message.location_type !== undefined) {
            writer.uint32(66).string(message.location_type);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBasePlannableLocation();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 4:
                    if (tag !== 34) {
                        break;
                    }
                    message.id = reader.string();
                    continue;
                case 5:
                    if (tag !== 42) {
                        break;
                    }
                    message.name = reader.string();
                    continue;
                case 6:
                    if (tag !== 48) {
                        break;
                    }
                    message.parent_country_id = longToString(reader.int64());
                    continue;
                case 7:
                    if (tag !== 58) {
                        break;
                    }
                    message.country_code = reader.string();
                    continue;
                case 8:
                    if (tag !== 66) {
                        break;
                    }
                    message.location_type = reader.string();
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            id: isSet(object.id) ? globalThis.String(object.id) : undefined,
            name: isSet(object.name) ? globalThis.String(object.name) : undefined,
            parent_country_id: isSet(object.parent_country_id) ? globalThis.String(object.parent_country_id) : undefined,
            country_code: isSet(object.country_code) ? globalThis.String(object.country_code) : undefined,
            location_type: isSet(object.location_type) ? globalThis.String(object.location_type) : undefined,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.id !== undefined) {
            obj.id = message.id;
        }
        if (message.name !== undefined) {
            obj.name = message.name;
        }
        if (message.parent_country_id !== undefined) {
            obj.parent_country_id = message.parent_country_id;
        }
        if (message.country_code !== undefined) {
            obj.country_code = message.country_code;
        }
        if (message.location_type !== undefined) {
            obj.location_type = message.location_type;
        }
        return obj;
    },
    create(base) {
        return exports.PlannableLocation.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b, _c, _d, _e;
        const message = createBasePlannableLocation();
        message.id = (_a = object.id) !== null && _a !== void 0 ? _a : undefined;
        message.name = (_b = object.name) !== null && _b !== void 0 ? _b : undefined;
        message.parent_country_id = (_c = object.parent_country_id) !== null && _c !== void 0 ? _c : undefined;
        message.country_code = (_d = object.country_code) !== null && _d !== void 0 ? _d : undefined;
        message.location_type = (_e = object.location_type) !== null && _e !== void 0 ? _e : undefined;
        return message;
    },
};
function createBaseListPlannableProductsRequest() {
    return { plannable_location_id: "", reach_application_info: undefined };
}
exports.ListPlannableProductsRequest = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.plannable_location_id !== undefined && message.plannable_location_id !== "") {
            writer.uint32(18).string(message.plannable_location_id);
        }
        if (message.reach_application_info !== undefined) {
            additional_application_info_js_1.AdditionalApplicationInfo.encode(message.reach_application_info, writer.uint32(26).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseListPlannableProductsRequest();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 2:
                    if (tag !== 18) {
                        break;
                    }
                    message.plannable_location_id = reader.string();
                    continue;
                case 3:
                    if (tag !== 26) {
                        break;
                    }
                    message.reach_application_info = additional_application_info_js_1.AdditionalApplicationInfo.decode(reader, reader.uint32());
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            plannable_location_id: isSet(object.plannable_location_id) ? globalThis.String(object.plannable_location_id) : "",
            reach_application_info: isSet(object.reach_application_info)
                ? additional_application_info_js_1.AdditionalApplicationInfo.fromJSON(object.reach_application_info)
                : undefined,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.plannable_location_id !== undefined && message.plannable_location_id !== "") {
            obj.plannable_location_id = message.plannable_location_id;
        }
        if (message.reach_application_info !== undefined) {
            obj.reach_application_info = additional_application_info_js_1.AdditionalApplicationInfo.toJSON(message.reach_application_info);
        }
        return obj;
    },
    create(base) {
        return exports.ListPlannableProductsRequest.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a;
        const message = createBaseListPlannableProductsRequest();
        message.plannable_location_id = (_a = object.plannable_location_id) !== null && _a !== void 0 ? _a : "";
        message.reach_application_info =
            (object.reach_application_info !== undefined && object.reach_application_info !== null)
                ? additional_application_info_js_1.AdditionalApplicationInfo.fromPartial(object.reach_application_info)
                : undefined;
        return message;
    },
};
function createBaseListPlannableProductsResponse() {
    return { product_metadata: [] };
}
exports.ListPlannableProductsResponse = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.product_metadata !== undefined && message.product_metadata.length !== 0) {
            for (const v of message.product_metadata) {
                exports.ProductMetadata.encode(v, writer.uint32(10).fork()).ldelim();
            }
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseListPlannableProductsResponse();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.product_metadata.push(exports.ProductMetadata.decode(reader, reader.uint32()));
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            product_metadata: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.product_metadata)
                ? object.product_metadata.map((e) => exports.ProductMetadata.fromJSON(e))
                : [],
        };
    },
    toJSON(message) {
        var _a;
        const obj = {};
        if ((_a = message.product_metadata) === null || _a === void 0 ? void 0 : _a.length) {
            obj.product_metadata = message.product_metadata.map((e) => exports.ProductMetadata.toJSON(e));
        }
        return obj;
    },
    create(base) {
        return exports.ListPlannableProductsResponse.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a;
        const message = createBaseListPlannableProductsResponse();
        message.product_metadata = ((_a = object.product_metadata) === null || _a === void 0 ? void 0 : _a.map((e) => exports.ProductMetadata.fromPartial(e))) || [];
        return message;
    },
};
function createBaseProductMetadata() {
    return {
        plannable_product_code: undefined,
        plannable_product_name: "",
        plannable_product_description: undefined,
        plannable_product_core_attributes: undefined,
        plannable_targeting: undefined,
    };
}
exports.ProductMetadata = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.plannable_product_code !== undefined) {
            writer.uint32(34).string(message.plannable_product_code);
        }
        if (message.plannable_product_name !== undefined && message.plannable_product_name !== "") {
            writer.uint32(26).string(message.plannable_product_name);
        }
        if (message.plannable_product_description !== undefined) {
            writer.uint32(42).string(message.plannable_product_description);
        }
        if (message.plannable_product_core_attributes !== undefined) {
            exports.ProductCoreAttributes.encode(message.plannable_product_core_attributes, writer.uint32(50).fork()).ldelim();
        }
        if (message.plannable_targeting !== undefined) {
            exports.PlannableTargeting.encode(message.plannable_targeting, writer.uint32(18).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseProductMetadata();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 4:
                    if (tag !== 34) {
                        break;
                    }
                    message.plannable_product_code = reader.string();
                    continue;
                case 3:
                    if (tag !== 26) {
                        break;
                    }
                    message.plannable_product_name = reader.string();
                    continue;
                case 5:
                    if (tag !== 42) {
                        break;
                    }
                    message.plannable_product_description = reader.string();
                    continue;
                case 6:
                    if (tag !== 50) {
                        break;
                    }
                    message.plannable_product_core_attributes = exports.ProductCoreAttributes.decode(reader, reader.uint32());
                    continue;
                case 2:
                    if (tag !== 18) {
                        break;
                    }
                    message.plannable_targeting = exports.PlannableTargeting.decode(reader, reader.uint32());
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            plannable_product_code: isSet(object.plannable_product_code)
                ? globalThis.String(object.plannable_product_code)
                : undefined,
            plannable_product_name: isSet(object.plannable_product_name)
                ? globalThis.String(object.plannable_product_name)
                : "",
            plannable_product_description: isSet(object.plannable_product_description)
                ? globalThis.String(object.plannable_product_description)
                : undefined,
            plannable_product_core_attributes: isSet(object.plannable_product_core_attributes)
                ? exports.ProductCoreAttributes.fromJSON(object.plannable_product_core_attributes)
                : undefined,
            plannable_targeting: isSet(object.plannable_targeting)
                ? exports.PlannableTargeting.fromJSON(object.plannable_targeting)
                : undefined,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.plannable_product_code !== undefined) {
            obj.plannable_product_code = message.plannable_product_code;
        }
        if (message.plannable_product_name !== undefined && message.plannable_product_name !== "") {
            obj.plannable_product_name = message.plannable_product_name;
        }
        if (message.plannable_product_description !== undefined) {
            obj.plannable_product_description = message.plannable_product_description;
        }
        if (message.plannable_product_core_attributes !== undefined) {
            obj.plannable_product_core_attributes = exports.ProductCoreAttributes.toJSON(message.plannable_product_core_attributes);
        }
        if (message.plannable_targeting !== undefined) {
            obj.plannable_targeting = exports.PlannableTargeting.toJSON(message.plannable_targeting);
        }
        return obj;
    },
    create(base) {
        return exports.ProductMetadata.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b, _c;
        const message = createBaseProductMetadata();
        message.plannable_product_code = (_a = object.plannable_product_code) !== null && _a !== void 0 ? _a : undefined;
        message.plannable_product_name = (_b = object.plannable_product_name) !== null && _b !== void 0 ? _b : "";
        message.plannable_product_description = (_c = object.plannable_product_description) !== null && _c !== void 0 ? _c : undefined;
        message.plannable_product_core_attributes =
            (object.plannable_product_core_attributes !== undefined && object.plannable_product_core_attributes !== null)
                ? exports.ProductCoreAttributes.fromPartial(object.plannable_product_core_attributes)
                : undefined;
        message.plannable_targeting = (object.plannable_targeting !== undefined && object.plannable_targeting !== null)
            ? exports.PlannableTargeting.fromPartial(object.plannable_targeting)
            : undefined;
        return message;
    },
};
function createBaseProductCoreAttributes() {
    return { marketing_objective: undefined, cost_model: undefined, buying_method: undefined };
}
exports.ProductCoreAttributes = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.marketing_objective !== undefined) {
            writer.uint32(8).int32(message.marketing_objective);
        }
        if (message.cost_model !== undefined) {
            writer.uint32(16).int32(message.cost_model);
        }
        if (message.buying_method !== undefined) {
            writer.uint32(24).int32(message.buying_method);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseProductCoreAttributes();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 8) {
                        break;
                    }
                    message.marketing_objective = reader.int32();
                    continue;
                case 2:
                    if (tag !== 16) {
                        break;
                    }
                    message.cost_model = reader.int32();
                    continue;
                case 3:
                    if (tag !== 24) {
                        break;
                    }
                    message.buying_method = reader.int32();
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            marketing_objective: isSet(object.marketing_objective)
                ? (0, reach_plan_marketing_objective_js_1.reachPlanMarketingObjectiveEnum_ReachPlanMarketingObjectiveFromJSON)(object.marketing_objective)
                : undefined,
            cost_model: isSet(object.cost_model)
                ? (0, reach_plan_cost_model_js_1.reachPlanCostModelEnum_ReachPlanCostModelFromJSON)(object.cost_model)
                : undefined,
            buying_method: isSet(object.buying_method)
                ? (0, reach_plan_buying_method_js_1.reachPlanBuyingMethodEnum_ReachPlanBuyingMethodFromJSON)(object.buying_method)
                : undefined,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.marketing_objective !== undefined) {
            obj.marketing_objective = (0, reach_plan_marketing_objective_js_1.reachPlanMarketingObjectiveEnum_ReachPlanMarketingObjectiveToJSON)(message.marketing_objective);
        }
        if (message.cost_model !== undefined) {
            obj.cost_model = (0, reach_plan_cost_model_js_1.reachPlanCostModelEnum_ReachPlanCostModelToJSON)(message.cost_model);
        }
        if (message.buying_method !== undefined) {
            obj.buying_method = (0, reach_plan_buying_method_js_1.reachPlanBuyingMethodEnum_ReachPlanBuyingMethodToJSON)(message.buying_method);
        }
        return obj;
    },
    create(base) {
        return exports.ProductCoreAttributes.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b, _c;
        const message = createBaseProductCoreAttributes();
        message.marketing_objective = (_a = object.marketing_objective) !== null && _a !== void 0 ? _a : undefined;
        message.cost_model = (_b = object.cost_model) !== null && _b !== void 0 ? _b : undefined;
        message.buying_method = (_c = object.buying_method) !== null && _c !== void 0 ? _c : undefined;
        return message;
    },
};
function createBaseListPlannableUserListsRequest() {
    return { customer_id: "", customer_reach_group: undefined, reach_application_info: undefined };
}
exports.ListPlannableUserListsRequest = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.customer_id !== undefined && message.customer_id !== "") {
            writer.uint32(10).string(message.customer_id);
        }
        if (message.customer_reach_group !== undefined) {
            writer.uint32(18).string(message.customer_reach_group);
        }
        if (message.reach_application_info !== undefined) {
            additional_application_info_js_1.AdditionalApplicationInfo.encode(message.reach_application_info, writer.uint32(26).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseListPlannableUserListsRequest();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.customer_id = reader.string();
                    continue;
                case 2:
                    if (tag !== 18) {
                        break;
                    }
                    message.customer_reach_group = reader.string();
                    continue;
                case 3:
                    if (tag !== 26) {
                        break;
                    }
                    message.reach_application_info = additional_application_info_js_1.AdditionalApplicationInfo.decode(reader, reader.uint32());
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            customer_id: isSet(object.customer_id) ? globalThis.String(object.customer_id) : "",
            customer_reach_group: isSet(object.customer_reach_group)
                ? globalThis.String(object.customer_reach_group)
                : undefined,
            reach_application_info: isSet(object.reach_application_info)
                ? additional_application_info_js_1.AdditionalApplicationInfo.fromJSON(object.reach_application_info)
                : undefined,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.customer_id !== undefined && message.customer_id !== "") {
            obj.customer_id = message.customer_id;
        }
        if (message.customer_reach_group !== undefined) {
            obj.customer_reach_group = message.customer_reach_group;
        }
        if (message.reach_application_info !== undefined) {
            obj.reach_application_info = additional_application_info_js_1.AdditionalApplicationInfo.toJSON(message.reach_application_info);
        }
        return obj;
    },
    create(base) {
        return exports.ListPlannableUserListsRequest.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b;
        const message = createBaseListPlannableUserListsRequest();
        message.customer_id = (_a = object.customer_id) !== null && _a !== void 0 ? _a : "";
        message.customer_reach_group = (_b = object.customer_reach_group) !== null && _b !== void 0 ? _b : undefined;
        message.reach_application_info =
            (object.reach_application_info !== undefined && object.reach_application_info !== null)
                ? additional_application_info_js_1.AdditionalApplicationInfo.fromPartial(object.reach_application_info)
                : undefined;
        return message;
    },
};
function createBaseListPlannableUserListsResponse() {
    return { plannable_user_lists: [] };
}
exports.ListPlannableUserListsResponse = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.plannable_user_lists !== undefined && message.plannable_user_lists.length !== 0) {
            for (const v of message.plannable_user_lists) {
                exports.PlannableUserList.encode(v, writer.uint32(10).fork()).ldelim();
            }
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseListPlannableUserListsResponse();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.plannable_user_lists.push(exports.PlannableUserList.decode(reader, reader.uint32()));
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            plannable_user_lists: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.plannable_user_lists)
                ? object.plannable_user_lists.map((e) => exports.PlannableUserList.fromJSON(e))
                : [],
        };
    },
    toJSON(message) {
        var _a;
        const obj = {};
        if ((_a = message.plannable_user_lists) === null || _a === void 0 ? void 0 : _a.length) {
            obj.plannable_user_lists = message.plannable_user_lists.map((e) => exports.PlannableUserList.toJSON(e));
        }
        return obj;
    },
    create(base) {
        return exports.ListPlannableUserListsResponse.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a;
        const message = createBaseListPlannableUserListsResponse();
        message.plannable_user_lists = ((_a = object.plannable_user_lists) === null || _a === void 0 ? void 0 : _a.map((e) => exports.PlannableUserList.fromPartial(e))) || [];
        return message;
    },
};
function createBasePlannableUserList() {
    return {
        user_list_info: undefined,
        display_name: "",
        user_list_type: 0,
        plannable_status: 0,
        plannable_user_list_metadata: undefined,
    };
}
exports.PlannableUserList = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.user_list_info !== undefined) {
            criteria_js_1.UserListInfo.encode(message.user_list_info, writer.uint32(10).fork()).ldelim();
        }
        if (message.display_name !== undefined && message.display_name !== "") {
            writer.uint32(18).string(message.display_name);
        }
        if (message.user_list_type !== undefined && message.user_list_type !== 0) {
            writer.uint32(24).int32(message.user_list_type);
        }
        if (message.plannable_status !== undefined && message.plannable_status !== 0) {
            writer.uint32(32).int32(message.plannable_status);
        }
        if (message.plannable_user_list_metadata !== undefined) {
            exports.PlannableUserListMetadata.encode(message.plannable_user_list_metadata, writer.uint32(42).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBasePlannableUserList();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.user_list_info = criteria_js_1.UserListInfo.decode(reader, reader.uint32());
                    continue;
                case 2:
                    if (tag !== 18) {
                        break;
                    }
                    message.display_name = reader.string();
                    continue;
                case 3:
                    if (tag !== 24) {
                        break;
                    }
                    message.user_list_type = reader.int32();
                    continue;
                case 4:
                    if (tag !== 32) {
                        break;
                    }
                    message.plannable_status = reader.int32();
                    continue;
                case 5:
                    if (tag !== 42) {
                        break;
                    }
                    message.plannable_user_list_metadata = exports.PlannableUserListMetadata.decode(reader, reader.uint32());
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            user_list_info: isSet(object.user_list_info) ? criteria_js_1.UserListInfo.fromJSON(object.user_list_info) : undefined,
            display_name: isSet(object.display_name) ? globalThis.String(object.display_name) : "",
            user_list_type: isSet(object.user_list_type) ? (0, user_list_type_js_1.userListTypeEnum_UserListTypeFromJSON)(object.user_list_type) : 0,
            plannable_status: isSet(object.plannable_status)
                ? (0, reach_plan_plannable_user_list_status_js_1.reachPlanPlannableUserListStatusEnum_ReachPlanPlannableUserListStatusFromJSON)(object.plannable_status)
                : 0,
            plannable_user_list_metadata: isSet(object.plannable_user_list_metadata)
                ? exports.PlannableUserListMetadata.fromJSON(object.plannable_user_list_metadata)
                : undefined,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.user_list_info !== undefined) {
            obj.user_list_info = criteria_js_1.UserListInfo.toJSON(message.user_list_info);
        }
        if (message.display_name !== undefined && message.display_name !== "") {
            obj.display_name = message.display_name;
        }
        if (message.user_list_type !== undefined && message.user_list_type !== 0) {
            obj.user_list_type = (0, user_list_type_js_1.userListTypeEnum_UserListTypeToJSON)(message.user_list_type);
        }
        if (message.plannable_status !== undefined && message.plannable_status !== 0) {
            obj.plannable_status = (0, reach_plan_plannable_user_list_status_js_1.reachPlanPlannableUserListStatusEnum_ReachPlanPlannableUserListStatusToJSON)(message.plannable_status);
        }
        if (message.plannable_user_list_metadata !== undefined) {
            obj.plannable_user_list_metadata = exports.PlannableUserListMetadata.toJSON(message.plannable_user_list_metadata);
        }
        return obj;
    },
    create(base) {
        return exports.PlannableUserList.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b, _c;
        const message = createBasePlannableUserList();
        message.user_list_info = (object.user_list_info !== undefined && object.user_list_info !== null)
            ? criteria_js_1.UserListInfo.fromPartial(object.user_list_info)
            : undefined;
        message.display_name = (_a = object.display_name) !== null && _a !== void 0 ? _a : "";
        message.user_list_type = (_b = object.user_list_type) !== null && _b !== void 0 ? _b : 0;
        message.plannable_status = (_c = object.plannable_status) !== null && _c !== void 0 ? _c : 0;
        message.plannable_user_list_metadata =
            (object.plannable_user_list_metadata !== undefined && object.plannable_user_list_metadata !== null)
                ? exports.PlannableUserListMetadata.fromPartial(object.plannable_user_list_metadata)
                : undefined;
        return message;
    },
};
function createBasePlannableUserListMetadata() {
    return { user_list_crm_data_source_type: 0 };
}
exports.PlannableUserListMetadata = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.user_list_crm_data_source_type !== undefined && message.user_list_crm_data_source_type !== 0) {
            writer.uint32(8).int32(message.user_list_crm_data_source_type);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBasePlannableUserListMetadata();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 8) {
                        break;
                    }
                    message.user_list_crm_data_source_type = reader.int32();
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            user_list_crm_data_source_type: isSet(object.user_list_crm_data_source_type)
                ? (0, user_list_crm_data_source_type_js_1.userListCrmDataSourceTypeEnum_UserListCrmDataSourceTypeFromJSON)(object.user_list_crm_data_source_type)
                : 0,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.user_list_crm_data_source_type !== undefined && message.user_list_crm_data_source_type !== 0) {
            obj.user_list_crm_data_source_type = (0, user_list_crm_data_source_type_js_1.userListCrmDataSourceTypeEnum_UserListCrmDataSourceTypeToJSON)(message.user_list_crm_data_source_type);
        }
        return obj;
    },
    create(base) {
        return exports.PlannableUserListMetadata.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a;
        const message = createBasePlannableUserListMetadata();
        message.user_list_crm_data_source_type = (_a = object.user_list_crm_data_source_type) !== null && _a !== void 0 ? _a : 0;
        return message;
    },
};
function createBasePlannableTargeting() {
    return {
        age_ranges: [],
        genders: [],
        devices: [],
        networks: [],
        youtube_select_lineup_targeting: undefined,
        surface_targeting: undefined,
    };
}
exports.PlannableTargeting = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.age_ranges !== undefined && message.age_ranges.length !== 0) {
            writer.uint32(10).fork();
            for (const v of message.age_ranges) {
                writer.int32(v);
            }
            writer.ldelim();
        }
        if (message.genders !== undefined && message.genders.length !== 0) {
            for (const v of message.genders) {
                criteria_js_1.GenderInfo.encode(v, writer.uint32(18).fork()).ldelim();
            }
        }
        if (message.devices !== undefined && message.devices.length !== 0) {
            for (const v of message.devices) {
                criteria_js_1.DeviceInfo.encode(v, writer.uint32(26).fork()).ldelim();
            }
        }
        if (message.networks !== undefined && message.networks.length !== 0) {
            writer.uint32(34).fork();
            for (const v of message.networks) {
                writer.int32(v);
            }
            writer.ldelim();
        }
        if (message.youtube_select_lineup_targeting !== undefined) {
            exports.YouTubeSelectLineUpTargeting.encode(message.youtube_select_lineup_targeting, writer.uint32(58).fork()).ldelim();
        }
        if (message.surface_targeting !== undefined) {
            exports.SurfaceTargetingCombinations.encode(message.surface_targeting, writer.uint32(50).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBasePlannableTargeting();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag === 8) {
                        message.age_ranges.push(reader.int32());
                        continue;
                    }
                    if (tag === 10) {
                        const end2 = reader.uint32() + reader.pos;
                        while (reader.pos < end2) {
                            message.age_ranges.push(reader.int32());
                        }
                        continue;
                    }
                    break;
                case 2:
                    if (tag !== 18) {
                        break;
                    }
                    message.genders.push(criteria_js_1.GenderInfo.decode(reader, reader.uint32()));
                    continue;
                case 3:
                    if (tag !== 26) {
                        break;
                    }
                    message.devices.push(criteria_js_1.DeviceInfo.decode(reader, reader.uint32()));
                    continue;
                case 4:
                    if (tag === 32) {
                        message.networks.push(reader.int32());
                        continue;
                    }
                    if (tag === 34) {
                        const end2 = reader.uint32() + reader.pos;
                        while (reader.pos < end2) {
                            message.networks.push(reader.int32());
                        }
                        continue;
                    }
                    break;
                case 7:
                    if (tag !== 58) {
                        break;
                    }
                    message.youtube_select_lineup_targeting = exports.YouTubeSelectLineUpTargeting.decode(reader, reader.uint32());
                    continue;
                case 6:
                    if (tag !== 50) {
                        break;
                    }
                    message.surface_targeting = exports.SurfaceTargetingCombinations.decode(reader, reader.uint32());
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            age_ranges: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.age_ranges)
                ? object.age_ranges.map((e) => (0, reach_plan_age_range_js_1.reachPlanAgeRangeEnum_ReachPlanAgeRangeFromJSON)(e))
                : [],
            genders: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.genders) ? object.genders.map((e) => criteria_js_1.GenderInfo.fromJSON(e)) : [],
            devices: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.devices) ? object.devices.map((e) => criteria_js_1.DeviceInfo.fromJSON(e)) : [],
            networks: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.networks)
                ? object.networks.map((e) => (0, reach_plan_network_js_1.reachPlanNetworkEnum_ReachPlanNetworkFromJSON)(e))
                : [],
            youtube_select_lineup_targeting: isSet(object.youtube_select_lineup_targeting)
                ? exports.YouTubeSelectLineUpTargeting.fromJSON(object.youtube_select_lineup_targeting)
                : undefined,
            surface_targeting: isSet(object.surface_targeting)
                ? exports.SurfaceTargetingCombinations.fromJSON(object.surface_targeting)
                : undefined,
        };
    },
    toJSON(message) {
        var _a, _b, _c, _d;
        const obj = {};
        if ((_a = message.age_ranges) === null || _a === void 0 ? void 0 : _a.length) {
            obj.age_ranges = message.age_ranges.map((e) => (0, reach_plan_age_range_js_1.reachPlanAgeRangeEnum_ReachPlanAgeRangeToJSON)(e));
        }
        if ((_b = message.genders) === null || _b === void 0 ? void 0 : _b.length) {
            obj.genders = message.genders.map((e) => criteria_js_1.GenderInfo.toJSON(e));
        }
        if ((_c = message.devices) === null || _c === void 0 ? void 0 : _c.length) {
            obj.devices = message.devices.map((e) => criteria_js_1.DeviceInfo.toJSON(e));
        }
        if ((_d = message.networks) === null || _d === void 0 ? void 0 : _d.length) {
            obj.networks = message.networks.map((e) => (0, reach_plan_network_js_1.reachPlanNetworkEnum_ReachPlanNetworkToJSON)(e));
        }
        if (message.youtube_select_lineup_targeting !== undefined) {
            obj.youtube_select_lineup_targeting = exports.YouTubeSelectLineUpTargeting.toJSON(message.youtube_select_lineup_targeting);
        }
        if (message.surface_targeting !== undefined) {
            obj.surface_targeting = exports.SurfaceTargetingCombinations.toJSON(message.surface_targeting);
        }
        return obj;
    },
    create(base) {
        return exports.PlannableTargeting.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b, _c, _d;
        const message = createBasePlannableTargeting();
        message.age_ranges = ((_a = object.age_ranges) === null || _a === void 0 ? void 0 : _a.map((e) => e)) || [];
        message.genders = ((_b = object.genders) === null || _b === void 0 ? void 0 : _b.map((e) => criteria_js_1.GenderInfo.fromPartial(e))) || [];
        message.devices = ((_c = object.devices) === null || _c === void 0 ? void 0 : _c.map((e) => criteria_js_1.DeviceInfo.fromPartial(e))) || [];
        message.networks = ((_d = object.networks) === null || _d === void 0 ? void 0 : _d.map((e) => e)) || [];
        message.youtube_select_lineup_targeting =
            (object.youtube_select_lineup_targeting !== undefined && object.youtube_select_lineup_targeting !== null)
                ? exports.YouTubeSelectLineUpTargeting.fromPartial(object.youtube_select_lineup_targeting)
                : undefined;
        message.surface_targeting = (object.surface_targeting !== undefined && object.surface_targeting !== null)
            ? exports.SurfaceTargetingCombinations.fromPartial(object.surface_targeting)
            : undefined;
        return message;
    },
};
function createBaseListPlannableUserInterestsRequest() {
    return {
        customer_id: "",
        user_interest_taxonomy_types: [],
        name_query: undefined,
        path_query: undefined,
        reach_application_info: undefined,
    };
}
exports.ListPlannableUserInterestsRequest = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.customer_id !== undefined && message.customer_id !== "") {
            writer.uint32(10).string(message.customer_id);
        }
        if (message.user_interest_taxonomy_types !== undefined && message.user_interest_taxonomy_types.length !== 0) {
            writer.uint32(18).fork();
            for (const v of message.user_interest_taxonomy_types) {
                writer.int32(v);
            }
            writer.ldelim();
        }
        if (message.name_query !== undefined) {
            writer.uint32(26).string(message.name_query);
        }
        if (message.path_query !== undefined) {
            writer.uint32(34).string(message.path_query);
        }
        if (message.reach_application_info !== undefined) {
            additional_application_info_js_1.AdditionalApplicationInfo.encode(message.reach_application_info, writer.uint32(42).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseListPlannableUserInterestsRequest();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.customer_id = reader.string();
                    continue;
                case 2:
                    if (tag === 16) {
                        message.user_interest_taxonomy_types.push(reader.int32());
                        continue;
                    }
                    if (tag === 18) {
                        const end2 = reader.uint32() + reader.pos;
                        while (reader.pos < end2) {
                            message.user_interest_taxonomy_types.push(reader.int32());
                        }
                        continue;
                    }
                    break;
                case 3:
                    if (tag !== 26) {
                        break;
                    }
                    message.name_query = reader.string();
                    continue;
                case 4:
                    if (tag !== 34) {
                        break;
                    }
                    message.path_query = reader.string();
                    continue;
                case 5:
                    if (tag !== 42) {
                        break;
                    }
                    message.reach_application_info = additional_application_info_js_1.AdditionalApplicationInfo.decode(reader, reader.uint32());
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            customer_id: isSet(object.customer_id) ? globalThis.String(object.customer_id) : "",
            user_interest_taxonomy_types: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.user_interest_taxonomy_types)
                ? object.user_interest_taxonomy_types.map((e) => (0, user_interest_taxonomy_type_js_1.userInterestTaxonomyTypeEnum_UserInterestTaxonomyTypeFromJSON)(e))
                : [],
            name_query: isSet(object.name_query) ? globalThis.String(object.name_query) : undefined,
            path_query: isSet(object.path_query) ? globalThis.String(object.path_query) : undefined,
            reach_application_info: isSet(object.reach_application_info)
                ? additional_application_info_js_1.AdditionalApplicationInfo.fromJSON(object.reach_application_info)
                : undefined,
        };
    },
    toJSON(message) {
        var _a;
        const obj = {};
        if (message.customer_id !== undefined && message.customer_id !== "") {
            obj.customer_id = message.customer_id;
        }
        if ((_a = message.user_interest_taxonomy_types) === null || _a === void 0 ? void 0 : _a.length) {
            obj.user_interest_taxonomy_types = message.user_interest_taxonomy_types.map((e) => (0, user_interest_taxonomy_type_js_1.userInterestTaxonomyTypeEnum_UserInterestTaxonomyTypeToJSON)(e));
        }
        if (message.name_query !== undefined) {
            obj.name_query = message.name_query;
        }
        if (message.path_query !== undefined) {
            obj.path_query = message.path_query;
        }
        if (message.reach_application_info !== undefined) {
            obj.reach_application_info = additional_application_info_js_1.AdditionalApplicationInfo.toJSON(message.reach_application_info);
        }
        return obj;
    },
    create(base) {
        return exports.ListPlannableUserInterestsRequest.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b, _c, _d;
        const message = createBaseListPlannableUserInterestsRequest();
        message.customer_id = (_a = object.customer_id) !== null && _a !== void 0 ? _a : "";
        message.user_interest_taxonomy_types = ((_b = object.user_interest_taxonomy_types) === null || _b === void 0 ? void 0 : _b.map((e) => e)) || [];
        message.name_query = (_c = object.name_query) !== null && _c !== void 0 ? _c : undefined;
        message.path_query = (_d = object.path_query) !== null && _d !== void 0 ? _d : undefined;
        message.reach_application_info =
            (object.reach_application_info !== undefined && object.reach_application_info !== null)
                ? additional_application_info_js_1.AdditionalApplicationInfo.fromPartial(object.reach_application_info)
                : undefined;
        return message;
    },
};
function createBaseListPlannableUserInterestsResponse() {
    return { plannable_user_interests: [] };
}
exports.ListPlannableUserInterestsResponse = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.plannable_user_interests !== undefined && message.plannable_user_interests.length !== 0) {
            for (const v of message.plannable_user_interests) {
                exports.PlannableUserInterest.encode(v, writer.uint32(10).fork()).ldelim();
            }
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseListPlannableUserInterestsResponse();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.plannable_user_interests.push(exports.PlannableUserInterest.decode(reader, reader.uint32()));
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            plannable_user_interests: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.plannable_user_interests)
                ? object.plannable_user_interests.map((e) => exports.PlannableUserInterest.fromJSON(e))
                : [],
        };
    },
    toJSON(message) {
        var _a;
        const obj = {};
        if ((_a = message.plannable_user_interests) === null || _a === void 0 ? void 0 : _a.length) {
            obj.plannable_user_interests = message.plannable_user_interests.map((e) => exports.PlannableUserInterest.toJSON(e));
        }
        return obj;
    },
    create(base) {
        return exports.ListPlannableUserInterestsResponse.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a;
        const message = createBaseListPlannableUserInterestsResponse();
        message.plannable_user_interests =
            ((_a = object.plannable_user_interests) === null || _a === void 0 ? void 0 : _a.map((e) => exports.PlannableUserInterest.fromPartial(e))) || [];
        return message;
    },
};
function createBasePlannableUserInterest() {
    return { user_interest: undefined, user_interest_type: 0, user_interest_display_name: "", user_interest_path: "" };
}
exports.PlannableUserInterest = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.user_interest !== undefined) {
            criteria_js_1.UserInterestInfo.encode(message.user_interest, writer.uint32(10).fork()).ldelim();
        }
        if (message.user_interest_type !== undefined && message.user_interest_type !== 0) {
            writer.uint32(16).int32(message.user_interest_type);
        }
        if (message.user_interest_display_name !== undefined && message.user_interest_display_name !== "") {
            writer.uint32(26).string(message.user_interest_display_name);
        }
        if (message.user_interest_path !== undefined && message.user_interest_path !== "") {
            writer.uint32(34).string(message.user_interest_path);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBasePlannableUserInterest();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.user_interest = criteria_js_1.UserInterestInfo.decode(reader, reader.uint32());
                    continue;
                case 2:
                    if (tag !== 16) {
                        break;
                    }
                    message.user_interest_type = reader.int32();
                    continue;
                case 3:
                    if (tag !== 26) {
                        break;
                    }
                    message.user_interest_display_name = reader.string();
                    continue;
                case 4:
                    if (tag !== 34) {
                        break;
                    }
                    message.user_interest_path = reader.string();
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            user_interest: isSet(object.user_interest) ? criteria_js_1.UserInterestInfo.fromJSON(object.user_interest) : undefined,
            user_interest_type: isSet(object.user_interest_type)
                ? (0, user_interest_taxonomy_type_js_1.userInterestTaxonomyTypeEnum_UserInterestTaxonomyTypeFromJSON)(object.user_interest_type)
                : 0,
            user_interest_display_name: isSet(object.user_interest_display_name)
                ? globalThis.String(object.user_interest_display_name)
                : "",
            user_interest_path: isSet(object.user_interest_path) ? globalThis.String(object.user_interest_path) : "",
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.user_interest !== undefined) {
            obj.user_interest = criteria_js_1.UserInterestInfo.toJSON(message.user_interest);
        }
        if (message.user_interest_type !== undefined && message.user_interest_type !== 0) {
            obj.user_interest_type = (0, user_interest_taxonomy_type_js_1.userInterestTaxonomyTypeEnum_UserInterestTaxonomyTypeToJSON)(message.user_interest_type);
        }
        if (message.user_interest_display_name !== undefined && message.user_interest_display_name !== "") {
            obj.user_interest_display_name = message.user_interest_display_name;
        }
        if (message.user_interest_path !== undefined && message.user_interest_path !== "") {
            obj.user_interest_path = message.user_interest_path;
        }
        return obj;
    },
    create(base) {
        return exports.PlannableUserInterest.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b, _c;
        const message = createBasePlannableUserInterest();
        message.user_interest = (object.user_interest !== undefined && object.user_interest !== null)
            ? criteria_js_1.UserInterestInfo.fromPartial(object.user_interest)
            : undefined;
        message.user_interest_type = (_a = object.user_interest_type) !== null && _a !== void 0 ? _a : 0;
        message.user_interest_display_name = (_b = object.user_interest_display_name) !== null && _b !== void 0 ? _b : "";
        message.user_interest_path = (_c = object.user_interest_path) !== null && _c !== void 0 ? _c : "";
        return message;
    },
};
function createBaseGenerateReachForecastRequest() {
    return {
        customer_id: "",
        currency_code: undefined,
        campaign_duration: undefined,
        cookie_frequency_cap: undefined,
        cookie_frequency_cap_setting: undefined,
        min_effective_frequency: undefined,
        effective_frequency_limit: undefined,
        targeting: undefined,
        planned_products: [],
        forecast_metric_options: undefined,
        customer_reach_group: undefined,
        reach_application_info: undefined,
    };
}
exports.GenerateReachForecastRequest = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.customer_id !== undefined && message.customer_id !== "") {
            writer.uint32(10).string(message.customer_id);
        }
        if (message.currency_code !== undefined) {
            writer.uint32(74).string(message.currency_code);
        }
        if (message.campaign_duration !== undefined) {
            exports.CampaignDuration.encode(message.campaign_duration, writer.uint32(26).fork()).ldelim();
        }
        if (message.cookie_frequency_cap !== undefined) {
            writer.uint32(80).int32(message.cookie_frequency_cap);
        }
        if (message.cookie_frequency_cap_setting !== undefined) {
            exports.FrequencyCap.encode(message.cookie_frequency_cap_setting, writer.uint32(66).fork()).ldelim();
        }
        if (message.min_effective_frequency !== undefined) {
            writer.uint32(88).int32(message.min_effective_frequency);
        }
        if (message.effective_frequency_limit !== undefined) {
            exports.EffectiveFrequencyLimit.encode(message.effective_frequency_limit, writer.uint32(98).fork()).ldelim();
        }
        if (message.targeting !== undefined) {
            exports.Targeting.encode(message.targeting, writer.uint32(50).fork()).ldelim();
        }
        if (message.planned_products !== undefined && message.planned_products.length !== 0) {
            for (const v of message.planned_products) {
                exports.PlannedProduct.encode(v, writer.uint32(58).fork()).ldelim();
            }
        }
        if (message.forecast_metric_options !== undefined) {
            exports.ForecastMetricOptions.encode(message.forecast_metric_options, writer.uint32(106).fork()).ldelim();
        }
        if (message.customer_reach_group !== undefined) {
            writer.uint32(114).string(message.customer_reach_group);
        }
        if (message.reach_application_info !== undefined) {
            additional_application_info_js_1.AdditionalApplicationInfo.encode(message.reach_application_info, writer.uint32(122).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseGenerateReachForecastRequest();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.customer_id = reader.string();
                    continue;
                case 9:
                    if (tag !== 74) {
                        break;
                    }
                    message.currency_code = reader.string();
                    continue;
                case 3:
                    if (tag !== 26) {
                        break;
                    }
                    message.campaign_duration = exports.CampaignDuration.decode(reader, reader.uint32());
                    continue;
                case 10:
                    if (tag !== 80) {
                        break;
                    }
                    message.cookie_frequency_cap = reader.int32();
                    continue;
                case 8:
                    if (tag !== 66) {
                        break;
                    }
                    message.cookie_frequency_cap_setting = exports.FrequencyCap.decode(reader, reader.uint32());
                    continue;
                case 11:
                    if (tag !== 88) {
                        break;
                    }
                    message.min_effective_frequency = reader.int32();
                    continue;
                case 12:
                    if (tag !== 98) {
                        break;
                    }
                    message.effective_frequency_limit = exports.EffectiveFrequencyLimit.decode(reader, reader.uint32());
                    continue;
                case 6:
                    if (tag !== 50) {
                        break;
                    }
                    message.targeting = exports.Targeting.decode(reader, reader.uint32());
                    continue;
                case 7:
                    if (tag !== 58) {
                        break;
                    }
                    message.planned_products.push(exports.PlannedProduct.decode(reader, reader.uint32()));
                    continue;
                case 13:
                    if (tag !== 106) {
                        break;
                    }
                    message.forecast_metric_options = exports.ForecastMetricOptions.decode(reader, reader.uint32());
                    continue;
                case 14:
                    if (tag !== 114) {
                        break;
                    }
                    message.customer_reach_group = reader.string();
                    continue;
                case 15:
                    if (tag !== 122) {
                        break;
                    }
                    message.reach_application_info = additional_application_info_js_1.AdditionalApplicationInfo.decode(reader, reader.uint32());
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            customer_id: isSet(object.customer_id) ? globalThis.String(object.customer_id) : "",
            currency_code: isSet(object.currency_code) ? globalThis.String(object.currency_code) : undefined,
            campaign_duration: isSet(object.campaign_duration)
                ? exports.CampaignDuration.fromJSON(object.campaign_duration)
                : undefined,
            cookie_frequency_cap: isSet(object.cookie_frequency_cap)
                ? globalThis.Number(object.cookie_frequency_cap)
                : undefined,
            cookie_frequency_cap_setting: isSet(object.cookie_frequency_cap_setting)
                ? exports.FrequencyCap.fromJSON(object.cookie_frequency_cap_setting)
                : undefined,
            min_effective_frequency: isSet(object.min_effective_frequency)
                ? globalThis.Number(object.min_effective_frequency)
                : undefined,
            effective_frequency_limit: isSet(object.effective_frequency_limit)
                ? exports.EffectiveFrequencyLimit.fromJSON(object.effective_frequency_limit)
                : undefined,
            targeting: isSet(object.targeting) ? exports.Targeting.fromJSON(object.targeting) : undefined,
            planned_products: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.planned_products)
                ? object.planned_products.map((e) => exports.PlannedProduct.fromJSON(e))
                : [],
            forecast_metric_options: isSet(object.forecast_metric_options)
                ? exports.ForecastMetricOptions.fromJSON(object.forecast_metric_options)
                : undefined,
            customer_reach_group: isSet(object.customer_reach_group)
                ? globalThis.String(object.customer_reach_group)
                : undefined,
            reach_application_info: isSet(object.reach_application_info)
                ? additional_application_info_js_1.AdditionalApplicationInfo.fromJSON(object.reach_application_info)
                : undefined,
        };
    },
    toJSON(message) {
        var _a;
        const obj = {};
        if (message.customer_id !== undefined && message.customer_id !== "") {
            obj.customer_id = message.customer_id;
        }
        if (message.currency_code !== undefined) {
            obj.currency_code = message.currency_code;
        }
        if (message.campaign_duration !== undefined) {
            obj.campaign_duration = exports.CampaignDuration.toJSON(message.campaign_duration);
        }
        if (message.cookie_frequency_cap !== undefined) {
            obj.cookie_frequency_cap = Math.round(message.cookie_frequency_cap);
        }
        if (message.cookie_frequency_cap_setting !== undefined) {
            obj.cookie_frequency_cap_setting = exports.FrequencyCap.toJSON(message.cookie_frequency_cap_setting);
        }
        if (message.min_effective_frequency !== undefined) {
            obj.min_effective_frequency = Math.round(message.min_effective_frequency);
        }
        if (message.effective_frequency_limit !== undefined) {
            obj.effective_frequency_limit = exports.EffectiveFrequencyLimit.toJSON(message.effective_frequency_limit);
        }
        if (message.targeting !== undefined) {
            obj.targeting = exports.Targeting.toJSON(message.targeting);
        }
        if ((_a = message.planned_products) === null || _a === void 0 ? void 0 : _a.length) {
            obj.planned_products = message.planned_products.map((e) => exports.PlannedProduct.toJSON(e));
        }
        if (message.forecast_metric_options !== undefined) {
            obj.forecast_metric_options = exports.ForecastMetricOptions.toJSON(message.forecast_metric_options);
        }
        if (message.customer_reach_group !== undefined) {
            obj.customer_reach_group = message.customer_reach_group;
        }
        if (message.reach_application_info !== undefined) {
            obj.reach_application_info = additional_application_info_js_1.AdditionalApplicationInfo.toJSON(message.reach_application_info);
        }
        return obj;
    },
    create(base) {
        return exports.GenerateReachForecastRequest.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b, _c, _d, _e, _f;
        const message = createBaseGenerateReachForecastRequest();
        message.customer_id = (_a = object.customer_id) !== null && _a !== void 0 ? _a : "";
        message.currency_code = (_b = object.currency_code) !== null && _b !== void 0 ? _b : undefined;
        message.campaign_duration = (object.campaign_duration !== undefined && object.campaign_duration !== null)
            ? exports.CampaignDuration.fromPartial(object.campaign_duration)
            : undefined;
        message.cookie_frequency_cap = (_c = object.cookie_frequency_cap) !== null && _c !== void 0 ? _c : undefined;
        message.cookie_frequency_cap_setting =
            (object.cookie_frequency_cap_setting !== undefined && object.cookie_frequency_cap_setting !== null)
                ? exports.FrequencyCap.fromPartial(object.cookie_frequency_cap_setting)
                : undefined;
        message.min_effective_frequency = (_d = object.min_effective_frequency) !== null && _d !== void 0 ? _d : undefined;
        message.effective_frequency_limit =
            (object.effective_frequency_limit !== undefined && object.effective_frequency_limit !== null)
                ? exports.EffectiveFrequencyLimit.fromPartial(object.effective_frequency_limit)
                : undefined;
        message.targeting = (object.targeting !== undefined && object.targeting !== null)
            ? exports.Targeting.fromPartial(object.targeting)
            : undefined;
        message.planned_products = ((_e = object.planned_products) === null || _e === void 0 ? void 0 : _e.map((e) => exports.PlannedProduct.fromPartial(e))) || [];
        message.forecast_metric_options =
            (object.forecast_metric_options !== undefined && object.forecast_metric_options !== null)
                ? exports.ForecastMetricOptions.fromPartial(object.forecast_metric_options)
                : undefined;
        message.customer_reach_group = (_f = object.customer_reach_group) !== null && _f !== void 0 ? _f : undefined;
        message.reach_application_info =
            (object.reach_application_info !== undefined && object.reach_application_info !== null)
                ? additional_application_info_js_1.AdditionalApplicationInfo.fromPartial(object.reach_application_info)
                : undefined;
        return message;
    },
};
function createBaseEffectiveFrequencyLimit() {
    return { effective_frequency_breakdown_limit: 0 };
}
exports.EffectiveFrequencyLimit = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.effective_frequency_breakdown_limit !== undefined && message.effective_frequency_breakdown_limit !== 0) {
            writer.uint32(8).int32(message.effective_frequency_breakdown_limit);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseEffectiveFrequencyLimit();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 8) {
                        break;
                    }
                    message.effective_frequency_breakdown_limit = reader.int32();
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            effective_frequency_breakdown_limit: isSet(object.effective_frequency_breakdown_limit)
                ? globalThis.Number(object.effective_frequency_breakdown_limit)
                : 0,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.effective_frequency_breakdown_limit !== undefined && message.effective_frequency_breakdown_limit !== 0) {
            obj.effective_frequency_breakdown_limit = Math.round(message.effective_frequency_breakdown_limit);
        }
        return obj;
    },
    create(base) {
        return exports.EffectiveFrequencyLimit.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a;
        const message = createBaseEffectiveFrequencyLimit();
        message.effective_frequency_breakdown_limit = (_a = object.effective_frequency_breakdown_limit) !== null && _a !== void 0 ? _a : 0;
        return message;
    },
};
function createBaseFrequencyCap() {
    return { impressions: 0, time_unit: 0 };
}
exports.FrequencyCap = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.impressions !== undefined && message.impressions !== 0) {
            writer.uint32(24).int32(message.impressions);
        }
        if (message.time_unit !== undefined && message.time_unit !== 0) {
            writer.uint32(16).int32(message.time_unit);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseFrequencyCap();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 3:
                    if (tag !== 24) {
                        break;
                    }
                    message.impressions = reader.int32();
                    continue;
                case 2:
                    if (tag !== 16) {
                        break;
                    }
                    message.time_unit = reader.int32();
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            impressions: isSet(object.impressions) ? globalThis.Number(object.impressions) : 0,
            time_unit: isSet(object.time_unit) ? (0, frequency_cap_time_unit_js_1.frequencyCapTimeUnitEnum_FrequencyCapTimeUnitFromJSON)(object.time_unit) : 0,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.impressions !== undefined && message.impressions !== 0) {
            obj.impressions = Math.round(message.impressions);
        }
        if (message.time_unit !== undefined && message.time_unit !== 0) {
            obj.time_unit = (0, frequency_cap_time_unit_js_1.frequencyCapTimeUnitEnum_FrequencyCapTimeUnitToJSON)(message.time_unit);
        }
        return obj;
    },
    create(base) {
        return exports.FrequencyCap.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b;
        const message = createBaseFrequencyCap();
        message.impressions = (_a = object.impressions) !== null && _a !== void 0 ? _a : 0;
        message.time_unit = (_b = object.time_unit) !== null && _b !== void 0 ? _b : 0;
        return message;
    },
};
function createBaseTargeting() {
    return {
        plannable_location_id: undefined,
        plannable_location_ids: [],
        age_range: 0,
        genders: [],
        devices: [],
        network: 0,
        audience_targeting: undefined,
    };
}
exports.Targeting = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.plannable_location_id !== undefined) {
            writer.uint32(50).string(message.plannable_location_id);
        }
        if (message.plannable_location_ids !== undefined && message.plannable_location_ids.length !== 0) {
            for (const v of message.plannable_location_ids) {
                writer.uint32(66).string(v);
            }
        }
        if (message.age_range !== undefined && message.age_range !== 0) {
            writer.uint32(16).int32(message.age_range);
        }
        if (message.genders !== undefined && message.genders.length !== 0) {
            for (const v of message.genders) {
                criteria_js_1.GenderInfo.encode(v, writer.uint32(26).fork()).ldelim();
            }
        }
        if (message.devices !== undefined && message.devices.length !== 0) {
            for (const v of message.devices) {
                criteria_js_1.DeviceInfo.encode(v, writer.uint32(34).fork()).ldelim();
            }
        }
        if (message.network !== undefined && message.network !== 0) {
            writer.uint32(40).int32(message.network);
        }
        if (message.audience_targeting !== undefined) {
            exports.AudienceTargeting.encode(message.audience_targeting, writer.uint32(58).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseTargeting();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 6:
                    if (tag !== 50) {
                        break;
                    }
                    message.plannable_location_id = reader.string();
                    continue;
                case 8:
                    if (tag !== 66) {
                        break;
                    }
                    message.plannable_location_ids.push(reader.string());
                    continue;
                case 2:
                    if (tag !== 16) {
                        break;
                    }
                    message.age_range = reader.int32();
                    continue;
                case 3:
                    if (tag !== 26) {
                        break;
                    }
                    message.genders.push(criteria_js_1.GenderInfo.decode(reader, reader.uint32()));
                    continue;
                case 4:
                    if (tag !== 34) {
                        break;
                    }
                    message.devices.push(criteria_js_1.DeviceInfo.decode(reader, reader.uint32()));
                    continue;
                case 5:
                    if (tag !== 40) {
                        break;
                    }
                    message.network = reader.int32();
                    continue;
                case 7:
                    if (tag !== 58) {
                        break;
                    }
                    message.audience_targeting = exports.AudienceTargeting.decode(reader, reader.uint32());
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            plannable_location_id: isSet(object.plannable_location_id)
                ? globalThis.String(object.plannable_location_id)
                : undefined,
            plannable_location_ids: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.plannable_location_ids)
                ? object.plannable_location_ids.map((e) => globalThis.String(e))
                : [],
            age_range: isSet(object.age_range) ? (0, reach_plan_age_range_js_1.reachPlanAgeRangeEnum_ReachPlanAgeRangeFromJSON)(object.age_range) : 0,
            genders: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.genders) ? object.genders.map((e) => criteria_js_1.GenderInfo.fromJSON(e)) : [],
            devices: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.devices) ? object.devices.map((e) => criteria_js_1.DeviceInfo.fromJSON(e)) : [],
            network: isSet(object.network) ? (0, reach_plan_network_js_1.reachPlanNetworkEnum_ReachPlanNetworkFromJSON)(object.network) : 0,
            audience_targeting: isSet(object.audience_targeting)
                ? exports.AudienceTargeting.fromJSON(object.audience_targeting)
                : undefined,
        };
    },
    toJSON(message) {
        var _a, _b, _c;
        const obj = {};
        if (message.plannable_location_id !== undefined) {
            obj.plannable_location_id = message.plannable_location_id;
        }
        if ((_a = message.plannable_location_ids) === null || _a === void 0 ? void 0 : _a.length) {
            obj.plannable_location_ids = message.plannable_location_ids;
        }
        if (message.age_range !== undefined && message.age_range !== 0) {
            obj.age_range = (0, reach_plan_age_range_js_1.reachPlanAgeRangeEnum_ReachPlanAgeRangeToJSON)(message.age_range);
        }
        if ((_b = message.genders) === null || _b === void 0 ? void 0 : _b.length) {
            obj.genders = message.genders.map((e) => criteria_js_1.GenderInfo.toJSON(e));
        }
        if ((_c = message.devices) === null || _c === void 0 ? void 0 : _c.length) {
            obj.devices = message.devices.map((e) => criteria_js_1.DeviceInfo.toJSON(e));
        }
        if (message.network !== undefined && message.network !== 0) {
            obj.network = (0, reach_plan_network_js_1.reachPlanNetworkEnum_ReachPlanNetworkToJSON)(message.network);
        }
        if (message.audience_targeting !== undefined) {
            obj.audience_targeting = exports.AudienceTargeting.toJSON(message.audience_targeting);
        }
        return obj;
    },
    create(base) {
        return exports.Targeting.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b, _c, _d, _e, _f;
        const message = createBaseTargeting();
        message.plannable_location_id = (_a = object.plannable_location_id) !== null && _a !== void 0 ? _a : undefined;
        message.plannable_location_ids = ((_b = object.plannable_location_ids) === null || _b === void 0 ? void 0 : _b.map((e) => e)) || [];
        message.age_range = (_c = object.age_range) !== null && _c !== void 0 ? _c : 0;
        message.genders = ((_d = object.genders) === null || _d === void 0 ? void 0 : _d.map((e) => criteria_js_1.GenderInfo.fromPartial(e))) || [];
        message.devices = ((_e = object.devices) === null || _e === void 0 ? void 0 : _e.map((e) => criteria_js_1.DeviceInfo.fromPartial(e))) || [];
        message.network = (_f = object.network) !== null && _f !== void 0 ? _f : 0;
        message.audience_targeting = (object.audience_targeting !== undefined && object.audience_targeting !== null)
            ? exports.AudienceTargeting.fromPartial(object.audience_targeting)
            : undefined;
        return message;
    },
};
function createBaseCampaignDuration() {
    return { duration_in_days: undefined, date_range: undefined };
}
exports.CampaignDuration = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.duration_in_days !== undefined) {
            writer.uint32(16).int32(message.duration_in_days);
        }
        if (message.date_range !== undefined) {
            dates_js_1.DateRange.encode(message.date_range, writer.uint32(26).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseCampaignDuration();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 2:
                    if (tag !== 16) {
                        break;
                    }
                    message.duration_in_days = reader.int32();
                    continue;
                case 3:
                    if (tag !== 26) {
                        break;
                    }
                    message.date_range = dates_js_1.DateRange.decode(reader, reader.uint32());
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            duration_in_days: isSet(object.duration_in_days) ? globalThis.Number(object.duration_in_days) : undefined,
            date_range: isSet(object.date_range) ? dates_js_1.DateRange.fromJSON(object.date_range) : undefined,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.duration_in_days !== undefined) {
            obj.duration_in_days = Math.round(message.duration_in_days);
        }
        if (message.date_range !== undefined) {
            obj.date_range = dates_js_1.DateRange.toJSON(message.date_range);
        }
        return obj;
    },
    create(base) {
        return exports.CampaignDuration.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a;
        const message = createBaseCampaignDuration();
        message.duration_in_days = (_a = object.duration_in_days) !== null && _a !== void 0 ? _a : undefined;
        message.date_range = (object.date_range !== undefined && object.date_range !== null)
            ? dates_js_1.DateRange.fromPartial(object.date_range)
            : undefined;
        return message;
    },
};
function createBasePlannedProduct() {
    return {
        plannable_product_code: undefined,
        budget_micros: undefined,
        conversion_rate: undefined,
        advanced_product_targeting: undefined,
    };
}
exports.PlannedProduct = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.plannable_product_code !== undefined) {
            writer.uint32(26).string(message.plannable_product_code);
        }
        if (message.budget_micros !== undefined) {
            writer.uint32(32).int64(message.budget_micros);
        }
        if (message.conversion_rate !== undefined) {
            writer.uint32(49).double(message.conversion_rate);
        }
        if (message.advanced_product_targeting !== undefined) {
            exports.AdvancedProductTargeting.encode(message.advanced_product_targeting, writer.uint32(42).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBasePlannedProduct();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 3:
                    if (tag !== 26) {
                        break;
                    }
                    message.plannable_product_code = reader.string();
                    continue;
                case 4:
                    if (tag !== 32) {
                        break;
                    }
                    message.budget_micros = longToString(reader.int64());
                    continue;
                case 6:
                    if (tag !== 49) {
                        break;
                    }
                    message.conversion_rate = reader.double();
                    continue;
                case 5:
                    if (tag !== 42) {
                        break;
                    }
                    message.advanced_product_targeting = exports.AdvancedProductTargeting.decode(reader, reader.uint32());
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            plannable_product_code: isSet(object.plannable_product_code)
                ? globalThis.String(object.plannable_product_code)
                : undefined,
            budget_micros: isSet(object.budget_micros) ? globalThis.String(object.budget_micros) : undefined,
            conversion_rate: isSet(object.conversion_rate) ? globalThis.Number(object.conversion_rate) : undefined,
            advanced_product_targeting: isSet(object.advanced_product_targeting)
                ? exports.AdvancedProductTargeting.fromJSON(object.advanced_product_targeting)
                : undefined,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.plannable_product_code !== undefined) {
            obj.plannable_product_code = message.plannable_product_code;
        }
        if (message.budget_micros !== undefined) {
            obj.budget_micros = message.budget_micros;
        }
        if (message.conversion_rate !== undefined) {
            obj.conversion_rate = message.conversion_rate;
        }
        if (message.advanced_product_targeting !== undefined) {
            obj.advanced_product_targeting = exports.AdvancedProductTargeting.toJSON(message.advanced_product_targeting);
        }
        return obj;
    },
    create(base) {
        return exports.PlannedProduct.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b, _c;
        const message = createBasePlannedProduct();
        message.plannable_product_code = (_a = object.plannable_product_code) !== null && _a !== void 0 ? _a : undefined;
        message.budget_micros = (_b = object.budget_micros) !== null && _b !== void 0 ? _b : undefined;
        message.conversion_rate = (_c = object.conversion_rate) !== null && _c !== void 0 ? _c : undefined;
        message.advanced_product_targeting =
            (object.advanced_product_targeting !== undefined && object.advanced_product_targeting !== null)
                ? exports.AdvancedProductTargeting.fromPartial(object.advanced_product_targeting)
                : undefined;
        return message;
    },
};
function createBaseGenerateReachForecastResponse() {
    return { on_target_audience_metrics: undefined, reach_curve: undefined };
}
exports.GenerateReachForecastResponse = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.on_target_audience_metrics !== undefined) {
            exports.OnTargetAudienceMetrics.encode(message.on_target_audience_metrics, writer.uint32(10).fork()).ldelim();
        }
        if (message.reach_curve !== undefined) {
            exports.ReachCurve.encode(message.reach_curve, writer.uint32(18).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseGenerateReachForecastResponse();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.on_target_audience_metrics = exports.OnTargetAudienceMetrics.decode(reader, reader.uint32());
                    continue;
                case 2:
                    if (tag !== 18) {
                        break;
                    }
                    message.reach_curve = exports.ReachCurve.decode(reader, reader.uint32());
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            on_target_audience_metrics: isSet(object.on_target_audience_metrics)
                ? exports.OnTargetAudienceMetrics.fromJSON(object.on_target_audience_metrics)
                : undefined,
            reach_curve: isSet(object.reach_curve) ? exports.ReachCurve.fromJSON(object.reach_curve) : undefined,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.on_target_audience_metrics !== undefined) {
            obj.on_target_audience_metrics = exports.OnTargetAudienceMetrics.toJSON(message.on_target_audience_metrics);
        }
        if (message.reach_curve !== undefined) {
            obj.reach_curve = exports.ReachCurve.toJSON(message.reach_curve);
        }
        return obj;
    },
    create(base) {
        return exports.GenerateReachForecastResponse.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        const message = createBaseGenerateReachForecastResponse();
        message.on_target_audience_metrics =
            (object.on_target_audience_metrics !== undefined && object.on_target_audience_metrics !== null)
                ? exports.OnTargetAudienceMetrics.fromPartial(object.on_target_audience_metrics)
                : undefined;
        message.reach_curve = (object.reach_curve !== undefined && object.reach_curve !== null)
            ? exports.ReachCurve.fromPartial(object.reach_curve)
            : undefined;
        return message;
    },
};
function createBaseReachCurve() {
    return { reach_forecasts: [] };
}
exports.ReachCurve = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.reach_forecasts !== undefined && message.reach_forecasts.length !== 0) {
            for (const v of message.reach_forecasts) {
                exports.ReachForecast.encode(v, writer.uint32(10).fork()).ldelim();
            }
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseReachCurve();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.reach_forecasts.push(exports.ReachForecast.decode(reader, reader.uint32()));
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            reach_forecasts: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.reach_forecasts)
                ? object.reach_forecasts.map((e) => exports.ReachForecast.fromJSON(e))
                : [],
        };
    },
    toJSON(message) {
        var _a;
        const obj = {};
        if ((_a = message.reach_forecasts) === null || _a === void 0 ? void 0 : _a.length) {
            obj.reach_forecasts = message.reach_forecasts.map((e) => exports.ReachForecast.toJSON(e));
        }
        return obj;
    },
    create(base) {
        return exports.ReachCurve.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a;
        const message = createBaseReachCurve();
        message.reach_forecasts = ((_a = object.reach_forecasts) === null || _a === void 0 ? void 0 : _a.map((e) => exports.ReachForecast.fromPartial(e))) || [];
        return message;
    },
};
function createBaseReachForecast() {
    return { cost_micros: "0", forecast: undefined, planned_product_reach_forecasts: [] };
}
exports.ReachForecast = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.cost_micros !== undefined && message.cost_micros !== "0") {
            writer.uint32(40).int64(message.cost_micros);
        }
        if (message.forecast !== undefined) {
            exports.Forecast.encode(message.forecast, writer.uint32(18).fork()).ldelim();
        }
        if (message.planned_product_reach_forecasts !== undefined && message.planned_product_reach_forecasts.length !== 0) {
            for (const v of message.planned_product_reach_forecasts) {
                exports.PlannedProductReachForecast.encode(v, writer.uint32(34).fork()).ldelim();
            }
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseReachForecast();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 5:
                    if (tag !== 40) {
                        break;
                    }
                    message.cost_micros = longToString(reader.int64());
                    continue;
                case 2:
                    if (tag !== 18) {
                        break;
                    }
                    message.forecast = exports.Forecast.decode(reader, reader.uint32());
                    continue;
                case 4:
                    if (tag !== 34) {
                        break;
                    }
                    message.planned_product_reach_forecasts.push(exports.PlannedProductReachForecast.decode(reader, reader.uint32()));
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            cost_micros: isSet(object.cost_micros) ? globalThis.String(object.cost_micros) : "0",
            forecast: isSet(object.forecast) ? exports.Forecast.fromJSON(object.forecast) : undefined,
            planned_product_reach_forecasts: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.planned_product_reach_forecasts)
                ? object.planned_product_reach_forecasts.map((e) => exports.PlannedProductReachForecast.fromJSON(e))
                : [],
        };
    },
    toJSON(message) {
        var _a;
        const obj = {};
        if (message.cost_micros !== undefined && message.cost_micros !== "0") {
            obj.cost_micros = message.cost_micros;
        }
        if (message.forecast !== undefined) {
            obj.forecast = exports.Forecast.toJSON(message.forecast);
        }
        if ((_a = message.planned_product_reach_forecasts) === null || _a === void 0 ? void 0 : _a.length) {
            obj.planned_product_reach_forecasts = message.planned_product_reach_forecasts.map((e) => exports.PlannedProductReachForecast.toJSON(e));
        }
        return obj;
    },
    create(base) {
        return exports.ReachForecast.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b;
        const message = createBaseReachForecast();
        message.cost_micros = (_a = object.cost_micros) !== null && _a !== void 0 ? _a : "0";
        message.forecast = (object.forecast !== undefined && object.forecast !== null)
            ? exports.Forecast.fromPartial(object.forecast)
            : undefined;
        message.planned_product_reach_forecasts =
            ((_b = object.planned_product_reach_forecasts) === null || _b === void 0 ? void 0 : _b.map((e) => exports.PlannedProductReachForecast.fromPartial(e))) || [];
        return message;
    },
};
function createBaseForecast() {
    return {
        on_target_reach: undefined,
        total_reach: undefined,
        on_target_impressions: undefined,
        total_impressions: undefined,
        viewable_impressions: undefined,
        effective_frequency_breakdowns: [],
        on_target_coview_reach: undefined,
        total_coview_reach: undefined,
        on_target_coview_impressions: undefined,
        total_coview_impressions: undefined,
        conversions: undefined,
        trueview_views: undefined,
        clicks: undefined,
    };
}
exports.Forecast = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.on_target_reach !== undefined) {
            writer.uint32(40).int64(message.on_target_reach);
        }
        if (message.total_reach !== undefined) {
            writer.uint32(48).int64(message.total_reach);
        }
        if (message.on_target_impressions !== undefined) {
            writer.uint32(56).int64(message.on_target_impressions);
        }
        if (message.total_impressions !== undefined) {
            writer.uint32(64).int64(message.total_impressions);
        }
        if (message.viewable_impressions !== undefined) {
            writer.uint32(72).int64(message.viewable_impressions);
        }
        if (message.effective_frequency_breakdowns !== undefined && message.effective_frequency_breakdowns.length !== 0) {
            for (const v of message.effective_frequency_breakdowns) {
                exports.EffectiveFrequencyBreakdown.encode(v, writer.uint32(82).fork()).ldelim();
            }
        }
        if (message.on_target_coview_reach !== undefined) {
            writer.uint32(88).int64(message.on_target_coview_reach);
        }
        if (message.total_coview_reach !== undefined) {
            writer.uint32(96).int64(message.total_coview_reach);
        }
        if (message.on_target_coview_impressions !== undefined) {
            writer.uint32(104).int64(message.on_target_coview_impressions);
        }
        if (message.total_coview_impressions !== undefined) {
            writer.uint32(112).int64(message.total_coview_impressions);
        }
        if (message.conversions !== undefined) {
            writer.uint32(129).double(message.conversions);
        }
        if (message.trueview_views !== undefined) {
            writer.uint32(136).int64(message.trueview_views);
        }
        if (message.clicks !== undefined) {
            writer.uint32(144).int64(message.clicks);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseForecast();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 5:
                    if (tag !== 40) {
                        break;
                    }
                    message.on_target_reach = longToString(reader.int64());
                    continue;
                case 6:
                    if (tag !== 48) {
                        break;
                    }
                    message.total_reach = longToString(reader.int64());
                    continue;
                case 7:
                    if (tag !== 56) {
                        break;
                    }
                    message.on_target_impressions = longToString(reader.int64());
                    continue;
                case 8:
                    if (tag !== 64) {
                        break;
                    }
                    message.total_impressions = longToString(reader.int64());
                    continue;
                case 9:
                    if (tag !== 72) {
                        break;
                    }
                    message.viewable_impressions = longToString(reader.int64());
                    continue;
                case 10:
                    if (tag !== 82) {
                        break;
                    }
                    message.effective_frequency_breakdowns.push(exports.EffectiveFrequencyBreakdown.decode(reader, reader.uint32()));
                    continue;
                case 11:
                    if (tag !== 88) {
                        break;
                    }
                    message.on_target_coview_reach = longToString(reader.int64());
                    continue;
                case 12:
                    if (tag !== 96) {
                        break;
                    }
                    message.total_coview_reach = longToString(reader.int64());
                    continue;
                case 13:
                    if (tag !== 104) {
                        break;
                    }
                    message.on_target_coview_impressions = longToString(reader.int64());
                    continue;
                case 14:
                    if (tag !== 112) {
                        break;
                    }
                    message.total_coview_impressions = longToString(reader.int64());
                    continue;
                case 16:
                    if (tag !== 129) {
                        break;
                    }
                    message.conversions = reader.double();
                    continue;
                case 17:
                    if (tag !== 136) {
                        break;
                    }
                    message.trueview_views = longToString(reader.int64());
                    continue;
                case 18:
                    if (tag !== 144) {
                        break;
                    }
                    message.clicks = longToString(reader.int64());
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            on_target_reach: isSet(object.on_target_reach) ? globalThis.String(object.on_target_reach) : undefined,
            total_reach: isSet(object.total_reach) ? globalThis.String(object.total_reach) : undefined,
            on_target_impressions: isSet(object.on_target_impressions)
                ? globalThis.String(object.on_target_impressions)
                : undefined,
            total_impressions: isSet(object.total_impressions) ? globalThis.String(object.total_impressions) : undefined,
            viewable_impressions: isSet(object.viewable_impressions)
                ? globalThis.String(object.viewable_impressions)
                : undefined,
            effective_frequency_breakdowns: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.effective_frequency_breakdowns)
                ? object.effective_frequency_breakdowns.map((e) => exports.EffectiveFrequencyBreakdown.fromJSON(e))
                : [],
            on_target_coview_reach: isSet(object.on_target_coview_reach)
                ? globalThis.String(object.on_target_coview_reach)
                : undefined,
            total_coview_reach: isSet(object.total_coview_reach) ? globalThis.String(object.total_coview_reach) : undefined,
            on_target_coview_impressions: isSet(object.on_target_coview_impressions)
                ? globalThis.String(object.on_target_coview_impressions)
                : undefined,
            total_coview_impressions: isSet(object.total_coview_impressions)
                ? globalThis.String(object.total_coview_impressions)
                : undefined,
            conversions: isSet(object.conversions) ? globalThis.Number(object.conversions) : undefined,
            trueview_views: isSet(object.trueview_views) ? globalThis.String(object.trueview_views) : undefined,
            clicks: isSet(object.clicks) ? globalThis.String(object.clicks) : undefined,
        };
    },
    toJSON(message) {
        var _a;
        const obj = {};
        if (message.on_target_reach !== undefined) {
            obj.on_target_reach = message.on_target_reach;
        }
        if (message.total_reach !== undefined) {
            obj.total_reach = message.total_reach;
        }
        if (message.on_target_impressions !== undefined) {
            obj.on_target_impressions = message.on_target_impressions;
        }
        if (message.total_impressions !== undefined) {
            obj.total_impressions = message.total_impressions;
        }
        if (message.viewable_impressions !== undefined) {
            obj.viewable_impressions = message.viewable_impressions;
        }
        if ((_a = message.effective_frequency_breakdowns) === null || _a === void 0 ? void 0 : _a.length) {
            obj.effective_frequency_breakdowns = message.effective_frequency_breakdowns.map((e) => exports.EffectiveFrequencyBreakdown.toJSON(e));
        }
        if (message.on_target_coview_reach !== undefined) {
            obj.on_target_coview_reach = message.on_target_coview_reach;
        }
        if (message.total_coview_reach !== undefined) {
            obj.total_coview_reach = message.total_coview_reach;
        }
        if (message.on_target_coview_impressions !== undefined) {
            obj.on_target_coview_impressions = message.on_target_coview_impressions;
        }
        if (message.total_coview_impressions !== undefined) {
            obj.total_coview_impressions = message.total_coview_impressions;
        }
        if (message.conversions !== undefined) {
            obj.conversions = message.conversions;
        }
        if (message.trueview_views !== undefined) {
            obj.trueview_views = message.trueview_views;
        }
        if (message.clicks !== undefined) {
            obj.clicks = message.clicks;
        }
        return obj;
    },
    create(base) {
        return exports.Forecast.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
        const message = createBaseForecast();
        message.on_target_reach = (_a = object.on_target_reach) !== null && _a !== void 0 ? _a : undefined;
        message.total_reach = (_b = object.total_reach) !== null && _b !== void 0 ? _b : undefined;
        message.on_target_impressions = (_c = object.on_target_impressions) !== null && _c !== void 0 ? _c : undefined;
        message.total_impressions = (_d = object.total_impressions) !== null && _d !== void 0 ? _d : undefined;
        message.viewable_impressions = (_e = object.viewable_impressions) !== null && _e !== void 0 ? _e : undefined;
        message.effective_frequency_breakdowns =
            ((_f = object.effective_frequency_breakdowns) === null || _f === void 0 ? void 0 : _f.map((e) => exports.EffectiveFrequencyBreakdown.fromPartial(e))) || [];
        message.on_target_coview_reach = (_g = object.on_target_coview_reach) !== null && _g !== void 0 ? _g : undefined;
        message.total_coview_reach = (_h = object.total_coview_reach) !== null && _h !== void 0 ? _h : undefined;
        message.on_target_coview_impressions = (_j = object.on_target_coview_impressions) !== null && _j !== void 0 ? _j : undefined;
        message.total_coview_impressions = (_k = object.total_coview_impressions) !== null && _k !== void 0 ? _k : undefined;
        message.conversions = (_l = object.conversions) !== null && _l !== void 0 ? _l : undefined;
        message.trueview_views = (_m = object.trueview_views) !== null && _m !== void 0 ? _m : undefined;
        message.clicks = (_o = object.clicks) !== null && _o !== void 0 ? _o : undefined;
        return message;
    },
};
function createBasePlannedProductReachForecast() {
    return { plannable_product_code: "", cost_micros: "0", planned_product_forecast: undefined };
}
exports.PlannedProductReachForecast = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.plannable_product_code !== undefined && message.plannable_product_code !== "") {
            writer.uint32(10).string(message.plannable_product_code);
        }
        if (message.cost_micros !== undefined && message.cost_micros !== "0") {
            writer.uint32(16).int64(message.cost_micros);
        }
        if (message.planned_product_forecast !== undefined) {
            exports.PlannedProductForecast.encode(message.planned_product_forecast, writer.uint32(26).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBasePlannedProductReachForecast();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.plannable_product_code = reader.string();
                    continue;
                case 2:
                    if (tag !== 16) {
                        break;
                    }
                    message.cost_micros = longToString(reader.int64());
                    continue;
                case 3:
                    if (tag !== 26) {
                        break;
                    }
                    message.planned_product_forecast = exports.PlannedProductForecast.decode(reader, reader.uint32());
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            plannable_product_code: isSet(object.plannable_product_code)
                ? globalThis.String(object.plannable_product_code)
                : "",
            cost_micros: isSet(object.cost_micros) ? globalThis.String(object.cost_micros) : "0",
            planned_product_forecast: isSet(object.planned_product_forecast)
                ? exports.PlannedProductForecast.fromJSON(object.planned_product_forecast)
                : undefined,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.plannable_product_code !== undefined && message.plannable_product_code !== "") {
            obj.plannable_product_code = message.plannable_product_code;
        }
        if (message.cost_micros !== undefined && message.cost_micros !== "0") {
            obj.cost_micros = message.cost_micros;
        }
        if (message.planned_product_forecast !== undefined) {
            obj.planned_product_forecast = exports.PlannedProductForecast.toJSON(message.planned_product_forecast);
        }
        return obj;
    },
    create(base) {
        return exports.PlannedProductReachForecast.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b;
        const message = createBasePlannedProductReachForecast();
        message.plannable_product_code = (_a = object.plannable_product_code) !== null && _a !== void 0 ? _a : "";
        message.cost_micros = (_b = object.cost_micros) !== null && _b !== void 0 ? _b : "0";
        message.planned_product_forecast =
            (object.planned_product_forecast !== undefined && object.planned_product_forecast !== null)
                ? exports.PlannedProductForecast.fromPartial(object.planned_product_forecast)
                : undefined;
        return message;
    },
};
function createBasePlannedProductForecast() {
    return {
        on_target_reach: "0",
        total_reach: "0",
        on_target_impressions: "0",
        total_impressions: "0",
        viewable_impressions: undefined,
        on_target_coview_reach: undefined,
        total_coview_reach: undefined,
        on_target_coview_impressions: undefined,
        total_coview_impressions: undefined,
        average_frequency: undefined,
        conversions: undefined,
        trueview_views: undefined,
        clicks: undefined,
    };
}
exports.PlannedProductForecast = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.on_target_reach !== undefined && message.on_target_reach !== "0") {
            writer.uint32(8).int64(message.on_target_reach);
        }
        if (message.total_reach !== undefined && message.total_reach !== "0") {
            writer.uint32(16).int64(message.total_reach);
        }
        if (message.on_target_impressions !== undefined && message.on_target_impressions !== "0") {
            writer.uint32(24).int64(message.on_target_impressions);
        }
        if (message.total_impressions !== undefined && message.total_impressions !== "0") {
            writer.uint32(32).int64(message.total_impressions);
        }
        if (message.viewable_impressions !== undefined) {
            writer.uint32(40).int64(message.viewable_impressions);
        }
        if (message.on_target_coview_reach !== undefined) {
            writer.uint32(48).int64(message.on_target_coview_reach);
        }
        if (message.total_coview_reach !== undefined) {
            writer.uint32(56).int64(message.total_coview_reach);
        }
        if (message.on_target_coview_impressions !== undefined) {
            writer.uint32(64).int64(message.on_target_coview_impressions);
        }
        if (message.total_coview_impressions !== undefined) {
            writer.uint32(72).int64(message.total_coview_impressions);
        }
        if (message.average_frequency !== undefined) {
            writer.uint32(81).double(message.average_frequency);
        }
        if (message.conversions !== undefined) {
            writer.uint32(97).double(message.conversions);
        }
        if (message.trueview_views !== undefined) {
            writer.uint32(104).int64(message.trueview_views);
        }
        if (message.clicks !== undefined) {
            writer.uint32(112).int64(message.clicks);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBasePlannedProductForecast();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 8) {
                        break;
                    }
                    message.on_target_reach = longToString(reader.int64());
                    continue;
                case 2:
                    if (tag !== 16) {
                        break;
                    }
                    message.total_reach = longToString(reader.int64());
                    continue;
                case 3:
                    if (tag !== 24) {
                        break;
                    }
                    message.on_target_impressions = longToString(reader.int64());
                    continue;
                case 4:
                    if (tag !== 32) {
                        break;
                    }
                    message.total_impressions = longToString(reader.int64());
                    continue;
                case 5:
                    if (tag !== 40) {
                        break;
                    }
                    message.viewable_impressions = longToString(reader.int64());
                    continue;
                case 6:
                    if (tag !== 48) {
                        break;
                    }
                    message.on_target_coview_reach = longToString(reader.int64());
                    continue;
                case 7:
                    if (tag !== 56) {
                        break;
                    }
                    message.total_coview_reach = longToString(reader.int64());
                    continue;
                case 8:
                    if (tag !== 64) {
                        break;
                    }
                    message.on_target_coview_impressions = longToString(reader.int64());
                    continue;
                case 9:
                    if (tag !== 72) {
                        break;
                    }
                    message.total_coview_impressions = longToString(reader.int64());
                    continue;
                case 10:
                    if (tag !== 81) {
                        break;
                    }
                    message.average_frequency = reader.double();
                    continue;
                case 12:
                    if (tag !== 97) {
                        break;
                    }
                    message.conversions = reader.double();
                    continue;
                case 13:
                    if (tag !== 104) {
                        break;
                    }
                    message.trueview_views = longToString(reader.int64());
                    continue;
                case 14:
                    if (tag !== 112) {
                        break;
                    }
                    message.clicks = longToString(reader.int64());
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            on_target_reach: isSet(object.on_target_reach) ? globalThis.String(object.on_target_reach) : "0",
            total_reach: isSet(object.total_reach) ? globalThis.String(object.total_reach) : "0",
            on_target_impressions: isSet(object.on_target_impressions)
                ? globalThis.String(object.on_target_impressions)
                : "0",
            total_impressions: isSet(object.total_impressions) ? globalThis.String(object.total_impressions) : "0",
            viewable_impressions: isSet(object.viewable_impressions)
                ? globalThis.String(object.viewable_impressions)
                : undefined,
            on_target_coview_reach: isSet(object.on_target_coview_reach)
                ? globalThis.String(object.on_target_coview_reach)
                : undefined,
            total_coview_reach: isSet(object.total_coview_reach) ? globalThis.String(object.total_coview_reach) : undefined,
            on_target_coview_impressions: isSet(object.on_target_coview_impressions)
                ? globalThis.String(object.on_target_coview_impressions)
                : undefined,
            total_coview_impressions: isSet(object.total_coview_impressions)
                ? globalThis.String(object.total_coview_impressions)
                : undefined,
            average_frequency: isSet(object.average_frequency) ? globalThis.Number(object.average_frequency) : undefined,
            conversions: isSet(object.conversions) ? globalThis.Number(object.conversions) : undefined,
            trueview_views: isSet(object.trueview_views) ? globalThis.String(object.trueview_views) : undefined,
            clicks: isSet(object.clicks) ? globalThis.String(object.clicks) : undefined,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.on_target_reach !== undefined && message.on_target_reach !== "0") {
            obj.on_target_reach = message.on_target_reach;
        }
        if (message.total_reach !== undefined && message.total_reach !== "0") {
            obj.total_reach = message.total_reach;
        }
        if (message.on_target_impressions !== undefined && message.on_target_impressions !== "0") {
            obj.on_target_impressions = message.on_target_impressions;
        }
        if (message.total_impressions !== undefined && message.total_impressions !== "0") {
            obj.total_impressions = message.total_impressions;
        }
        if (message.viewable_impressions !== undefined) {
            obj.viewable_impressions = message.viewable_impressions;
        }
        if (message.on_target_coview_reach !== undefined) {
            obj.on_target_coview_reach = message.on_target_coview_reach;
        }
        if (message.total_coview_reach !== undefined) {
            obj.total_coview_reach = message.total_coview_reach;
        }
        if (message.on_target_coview_impressions !== undefined) {
            obj.on_target_coview_impressions = message.on_target_coview_impressions;
        }
        if (message.total_coview_impressions !== undefined) {
            obj.total_coview_impressions = message.total_coview_impressions;
        }
        if (message.average_frequency !== undefined) {
            obj.average_frequency = message.average_frequency;
        }
        if (message.conversions !== undefined) {
            obj.conversions = message.conversions;
        }
        if (message.trueview_views !== undefined) {
            obj.trueview_views = message.trueview_views;
        }
        if (message.clicks !== undefined) {
            obj.clicks = message.clicks;
        }
        return obj;
    },
    create(base) {
        return exports.PlannedProductForecast.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
        const message = createBasePlannedProductForecast();
        message.on_target_reach = (_a = object.on_target_reach) !== null && _a !== void 0 ? _a : "0";
        message.total_reach = (_b = object.total_reach) !== null && _b !== void 0 ? _b : "0";
        message.on_target_impressions = (_c = object.on_target_impressions) !== null && _c !== void 0 ? _c : "0";
        message.total_impressions = (_d = object.total_impressions) !== null && _d !== void 0 ? _d : "0";
        message.viewable_impressions = (_e = object.viewable_impressions) !== null && _e !== void 0 ? _e : undefined;
        message.on_target_coview_reach = (_f = object.on_target_coview_reach) !== null && _f !== void 0 ? _f : undefined;
        message.total_coview_reach = (_g = object.total_coview_reach) !== null && _g !== void 0 ? _g : undefined;
        message.on_target_coview_impressions = (_h = object.on_target_coview_impressions) !== null && _h !== void 0 ? _h : undefined;
        message.total_coview_impressions = (_j = object.total_coview_impressions) !== null && _j !== void 0 ? _j : undefined;
        message.average_frequency = (_k = object.average_frequency) !== null && _k !== void 0 ? _k : undefined;
        message.conversions = (_l = object.conversions) !== null && _l !== void 0 ? _l : undefined;
        message.trueview_views = (_m = object.trueview_views) !== null && _m !== void 0 ? _m : undefined;
        message.clicks = (_o = object.clicks) !== null && _o !== void 0 ? _o : undefined;
        return message;
    },
};
function createBaseOnTargetAudienceMetrics() {
    return { youtube_audience_size: undefined, census_audience_size: undefined };
}
exports.OnTargetAudienceMetrics = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.youtube_audience_size !== undefined) {
            writer.uint32(24).int64(message.youtube_audience_size);
        }
        if (message.census_audience_size !== undefined) {
            writer.uint32(32).int64(message.census_audience_size);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseOnTargetAudienceMetrics();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 3:
                    if (tag !== 24) {
                        break;
                    }
                    message.youtube_audience_size = longToString(reader.int64());
                    continue;
                case 4:
                    if (tag !== 32) {
                        break;
                    }
                    message.census_audience_size = longToString(reader.int64());
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            youtube_audience_size: isSet(object.youtube_audience_size)
                ? globalThis.String(object.youtube_audience_size)
                : undefined,
            census_audience_size: isSet(object.census_audience_size)
                ? globalThis.String(object.census_audience_size)
                : undefined,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.youtube_audience_size !== undefined) {
            obj.youtube_audience_size = message.youtube_audience_size;
        }
        if (message.census_audience_size !== undefined) {
            obj.census_audience_size = message.census_audience_size;
        }
        return obj;
    },
    create(base) {
        return exports.OnTargetAudienceMetrics.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b;
        const message = createBaseOnTargetAudienceMetrics();
        message.youtube_audience_size = (_a = object.youtube_audience_size) !== null && _a !== void 0 ? _a : undefined;
        message.census_audience_size = (_b = object.census_audience_size) !== null && _b !== void 0 ? _b : undefined;
        return message;
    },
};
function createBaseEffectiveFrequencyBreakdown() {
    return {
        effective_frequency: 0,
        on_target_reach: "0",
        total_reach: "0",
        effective_coview_reach: undefined,
        on_target_effective_coview_reach: undefined,
    };
}
exports.EffectiveFrequencyBreakdown = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.effective_frequency !== undefined && message.effective_frequency !== 0) {
            writer.uint32(8).int32(message.effective_frequency);
        }
        if (message.on_target_reach !== undefined && message.on_target_reach !== "0") {
            writer.uint32(16).int64(message.on_target_reach);
        }
        if (message.total_reach !== undefined && message.total_reach !== "0") {
            writer.uint32(24).int64(message.total_reach);
        }
        if (message.effective_coview_reach !== undefined) {
            writer.uint32(32).int64(message.effective_coview_reach);
        }
        if (message.on_target_effective_coview_reach !== undefined) {
            writer.uint32(40).int64(message.on_target_effective_coview_reach);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseEffectiveFrequencyBreakdown();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 8) {
                        break;
                    }
                    message.effective_frequency = reader.int32();
                    continue;
                case 2:
                    if (tag !== 16) {
                        break;
                    }
                    message.on_target_reach = longToString(reader.int64());
                    continue;
                case 3:
                    if (tag !== 24) {
                        break;
                    }
                    message.total_reach = longToString(reader.int64());
                    continue;
                case 4:
                    if (tag !== 32) {
                        break;
                    }
                    message.effective_coview_reach = longToString(reader.int64());
                    continue;
                case 5:
                    if (tag !== 40) {
                        break;
                    }
                    message.on_target_effective_coview_reach = longToString(reader.int64());
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            effective_frequency: isSet(object.effective_frequency) ? globalThis.Number(object.effective_frequency) : 0,
            on_target_reach: isSet(object.on_target_reach) ? globalThis.String(object.on_target_reach) : "0",
            total_reach: isSet(object.total_reach) ? globalThis.String(object.total_reach) : "0",
            effective_coview_reach: isSet(object.effective_coview_reach)
                ? globalThis.String(object.effective_coview_reach)
                : undefined,
            on_target_effective_coview_reach: isSet(object.on_target_effective_coview_reach)
                ? globalThis.String(object.on_target_effective_coview_reach)
                : undefined,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.effective_frequency !== undefined && message.effective_frequency !== 0) {
            obj.effective_frequency = Math.round(message.effective_frequency);
        }
        if (message.on_target_reach !== undefined && message.on_target_reach !== "0") {
            obj.on_target_reach = message.on_target_reach;
        }
        if (message.total_reach !== undefined && message.total_reach !== "0") {
            obj.total_reach = message.total_reach;
        }
        if (message.effective_coview_reach !== undefined) {
            obj.effective_coview_reach = message.effective_coview_reach;
        }
        if (message.on_target_effective_coview_reach !== undefined) {
            obj.on_target_effective_coview_reach = message.on_target_effective_coview_reach;
        }
        return obj;
    },
    create(base) {
        return exports.EffectiveFrequencyBreakdown.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b, _c, _d, _e;
        const message = createBaseEffectiveFrequencyBreakdown();
        message.effective_frequency = (_a = object.effective_frequency) !== null && _a !== void 0 ? _a : 0;
        message.on_target_reach = (_b = object.on_target_reach) !== null && _b !== void 0 ? _b : "0";
        message.total_reach = (_c = object.total_reach) !== null && _c !== void 0 ? _c : "0";
        message.effective_coview_reach = (_d = object.effective_coview_reach) !== null && _d !== void 0 ? _d : undefined;
        message.on_target_effective_coview_reach = (_e = object.on_target_effective_coview_reach) !== null && _e !== void 0 ? _e : undefined;
        return message;
    },
};
function createBaseForecastMetricOptions() {
    return { include_coview: false };
}
exports.ForecastMetricOptions = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.include_coview !== undefined && message.include_coview !== false) {
            writer.uint32(8).bool(message.include_coview);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseForecastMetricOptions();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 8) {
                        break;
                    }
                    message.include_coview = reader.bool();
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return { include_coview: isSet(object.include_coview) ? globalThis.Boolean(object.include_coview) : false };
    },
    toJSON(message) {
        const obj = {};
        if (message.include_coview !== undefined && message.include_coview !== false) {
            obj.include_coview = message.include_coview;
        }
        return obj;
    },
    create(base) {
        return exports.ForecastMetricOptions.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a;
        const message = createBaseForecastMetricOptions();
        message.include_coview = (_a = object.include_coview) !== null && _a !== void 0 ? _a : false;
        return message;
    },
};
function createBaseAudienceTargeting() {
    return { user_interest: [], user_lists: [] };
}
exports.AudienceTargeting = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.user_interest !== undefined && message.user_interest.length !== 0) {
            for (const v of message.user_interest) {
                criteria_js_1.UserInterestInfo.encode(v, writer.uint32(10).fork()).ldelim();
            }
        }
        if (message.user_lists !== undefined && message.user_lists.length !== 0) {
            for (const v of message.user_lists) {
                criteria_js_1.UserListInfo.encode(v, writer.uint32(18).fork()).ldelim();
            }
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseAudienceTargeting();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.user_interest.push(criteria_js_1.UserInterestInfo.decode(reader, reader.uint32()));
                    continue;
                case 2:
                    if (tag !== 18) {
                        break;
                    }
                    message.user_lists.push(criteria_js_1.UserListInfo.decode(reader, reader.uint32()));
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            user_interest: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.user_interest)
                ? object.user_interest.map((e) => criteria_js_1.UserInterestInfo.fromJSON(e))
                : [],
            user_lists: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.user_lists)
                ? object.user_lists.map((e) => criteria_js_1.UserListInfo.fromJSON(e))
                : [],
        };
    },
    toJSON(message) {
        var _a, _b;
        const obj = {};
        if ((_a = message.user_interest) === null || _a === void 0 ? void 0 : _a.length) {
            obj.user_interest = message.user_interest.map((e) => criteria_js_1.UserInterestInfo.toJSON(e));
        }
        if ((_b = message.user_lists) === null || _b === void 0 ? void 0 : _b.length) {
            obj.user_lists = message.user_lists.map((e) => criteria_js_1.UserListInfo.toJSON(e));
        }
        return obj;
    },
    create(base) {
        return exports.AudienceTargeting.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b;
        const message = createBaseAudienceTargeting();
        message.user_interest = ((_a = object.user_interest) === null || _a === void 0 ? void 0 : _a.map((e) => criteria_js_1.UserInterestInfo.fromPartial(e))) || [];
        message.user_lists = ((_b = object.user_lists) === null || _b === void 0 ? void 0 : _b.map((e) => criteria_js_1.UserListInfo.fromPartial(e))) || [];
        return message;
    },
};
function createBaseAdvancedProductTargeting() {
    return {
        surface_targeting_settings: undefined,
        target_frequency_settings: undefined,
        youtube_select_settings: undefined,
    };
}
exports.AdvancedProductTargeting = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.surface_targeting_settings !== undefined) {
            exports.SurfaceTargeting.encode(message.surface_targeting_settings, writer.uint32(18).fork()).ldelim();
        }
        if (message.target_frequency_settings !== undefined) {
            exports.TargetFrequencySettings.encode(message.target_frequency_settings, writer.uint32(26).fork()).ldelim();
        }
        if (message.youtube_select_settings !== undefined) {
            exports.YouTubeSelectSettings.encode(message.youtube_select_settings, writer.uint32(10).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseAdvancedProductTargeting();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 2:
                    if (tag !== 18) {
                        break;
                    }
                    message.surface_targeting_settings = exports.SurfaceTargeting.decode(reader, reader.uint32());
                    continue;
                case 3:
                    if (tag !== 26) {
                        break;
                    }
                    message.target_frequency_settings = exports.TargetFrequencySettings.decode(reader, reader.uint32());
                    continue;
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.youtube_select_settings = exports.YouTubeSelectSettings.decode(reader, reader.uint32());
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            surface_targeting_settings: isSet(object.surface_targeting_settings)
                ? exports.SurfaceTargeting.fromJSON(object.surface_targeting_settings)
                : undefined,
            target_frequency_settings: isSet(object.target_frequency_settings)
                ? exports.TargetFrequencySettings.fromJSON(object.target_frequency_settings)
                : undefined,
            youtube_select_settings: isSet(object.youtube_select_settings)
                ? exports.YouTubeSelectSettings.fromJSON(object.youtube_select_settings)
                : undefined,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.surface_targeting_settings !== undefined) {
            obj.surface_targeting_settings = exports.SurfaceTargeting.toJSON(message.surface_targeting_settings);
        }
        if (message.target_frequency_settings !== undefined) {
            obj.target_frequency_settings = exports.TargetFrequencySettings.toJSON(message.target_frequency_settings);
        }
        if (message.youtube_select_settings !== undefined) {
            obj.youtube_select_settings = exports.YouTubeSelectSettings.toJSON(message.youtube_select_settings);
        }
        return obj;
    },
    create(base) {
        return exports.AdvancedProductTargeting.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        const message = createBaseAdvancedProductTargeting();
        message.surface_targeting_settings =
            (object.surface_targeting_settings !== undefined && object.surface_targeting_settings !== null)
                ? exports.SurfaceTargeting.fromPartial(object.surface_targeting_settings)
                : undefined;
        message.target_frequency_settings =
            (object.target_frequency_settings !== undefined && object.target_frequency_settings !== null)
                ? exports.TargetFrequencySettings.fromPartial(object.target_frequency_settings)
                : undefined;
        message.youtube_select_settings =
            (object.youtube_select_settings !== undefined && object.youtube_select_settings !== null)
                ? exports.YouTubeSelectSettings.fromPartial(object.youtube_select_settings)
                : undefined;
        return message;
    },
};
function createBaseYouTubeSelectSettings() {
    return { lineup_id: "0" };
}
exports.YouTubeSelectSettings = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.lineup_id !== undefined && message.lineup_id !== "0") {
            writer.uint32(8).int64(message.lineup_id);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseYouTubeSelectSettings();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 8) {
                        break;
                    }
                    message.lineup_id = longToString(reader.int64());
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return { lineup_id: isSet(object.lineup_id) ? globalThis.String(object.lineup_id) : "0" };
    },
    toJSON(message) {
        const obj = {};
        if (message.lineup_id !== undefined && message.lineup_id !== "0") {
            obj.lineup_id = message.lineup_id;
        }
        return obj;
    },
    create(base) {
        return exports.YouTubeSelectSettings.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a;
        const message = createBaseYouTubeSelectSettings();
        message.lineup_id = (_a = object.lineup_id) !== null && _a !== void 0 ? _a : "0";
        return message;
    },
};
function createBaseYouTubeSelectLineUp() {
    return { lineup_id: "0", lineup_name: "" };
}
exports.YouTubeSelectLineUp = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.lineup_id !== undefined && message.lineup_id !== "0") {
            writer.uint32(8).int64(message.lineup_id);
        }
        if (message.lineup_name !== undefined && message.lineup_name !== "") {
            writer.uint32(18).string(message.lineup_name);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseYouTubeSelectLineUp();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 8) {
                        break;
                    }
                    message.lineup_id = longToString(reader.int64());
                    continue;
                case 2:
                    if (tag !== 18) {
                        break;
                    }
                    message.lineup_name = reader.string();
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            lineup_id: isSet(object.lineup_id) ? globalThis.String(object.lineup_id) : "0",
            lineup_name: isSet(object.lineup_name) ? globalThis.String(object.lineup_name) : "",
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.lineup_id !== undefined && message.lineup_id !== "0") {
            obj.lineup_id = message.lineup_id;
        }
        if (message.lineup_name !== undefined && message.lineup_name !== "") {
            obj.lineup_name = message.lineup_name;
        }
        return obj;
    },
    create(base) {
        return exports.YouTubeSelectLineUp.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b;
        const message = createBaseYouTubeSelectLineUp();
        message.lineup_id = (_a = object.lineup_id) !== null && _a !== void 0 ? _a : "0";
        message.lineup_name = (_b = object.lineup_name) !== null && _b !== void 0 ? _b : "";
        return message;
    },
};
function createBaseYouTubeSelectLineUpTargeting() {
    return { youtube_select_lineups: [], default_youtube_select_lineup: undefined };
}
exports.YouTubeSelectLineUpTargeting = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.youtube_select_lineups !== undefined && message.youtube_select_lineups.length !== 0) {
            for (const v of message.youtube_select_lineups) {
                exports.YouTubeSelectLineUp.encode(v, writer.uint32(10).fork()).ldelim();
            }
        }
        if (message.default_youtube_select_lineup !== undefined) {
            exports.YouTubeSelectLineUp.encode(message.default_youtube_select_lineup, writer.uint32(18).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseYouTubeSelectLineUpTargeting();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.youtube_select_lineups.push(exports.YouTubeSelectLineUp.decode(reader, reader.uint32()));
                    continue;
                case 2:
                    if (tag !== 18) {
                        break;
                    }
                    message.default_youtube_select_lineup = exports.YouTubeSelectLineUp.decode(reader, reader.uint32());
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            youtube_select_lineups: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.youtube_select_lineups)
                ? object.youtube_select_lineups.map((e) => exports.YouTubeSelectLineUp.fromJSON(e))
                : [],
            default_youtube_select_lineup: isSet(object.default_youtube_select_lineup)
                ? exports.YouTubeSelectLineUp.fromJSON(object.default_youtube_select_lineup)
                : undefined,
        };
    },
    toJSON(message) {
        var _a;
        const obj = {};
        if ((_a = message.youtube_select_lineups) === null || _a === void 0 ? void 0 : _a.length) {
            obj.youtube_select_lineups = message.youtube_select_lineups.map((e) => exports.YouTubeSelectLineUp.toJSON(e));
        }
        if (message.default_youtube_select_lineup !== undefined) {
            obj.default_youtube_select_lineup = exports.YouTubeSelectLineUp.toJSON(message.default_youtube_select_lineup);
        }
        return obj;
    },
    create(base) {
        return exports.YouTubeSelectLineUpTargeting.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a;
        const message = createBaseYouTubeSelectLineUpTargeting();
        message.youtube_select_lineups = ((_a = object.youtube_select_lineups) === null || _a === void 0 ? void 0 : _a.map((e) => exports.YouTubeSelectLineUp.fromPartial(e))) ||
            [];
        message.default_youtube_select_lineup =
            (object.default_youtube_select_lineup !== undefined && object.default_youtube_select_lineup !== null)
                ? exports.YouTubeSelectLineUp.fromPartial(object.default_youtube_select_lineup)
                : undefined;
        return message;
    },
};
function createBaseSurfaceTargetingCombinations() {
    return { default_targeting: undefined, available_targeting_combinations: [] };
}
exports.SurfaceTargetingCombinations = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.default_targeting !== undefined) {
            exports.SurfaceTargeting.encode(message.default_targeting, writer.uint32(10).fork()).ldelim();
        }
        if (message.available_targeting_combinations !== undefined && message.available_targeting_combinations.length !== 0) {
            for (const v of message.available_targeting_combinations) {
                exports.SurfaceTargeting.encode(v, writer.uint32(18).fork()).ldelim();
            }
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseSurfaceTargetingCombinations();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.default_targeting = exports.SurfaceTargeting.decode(reader, reader.uint32());
                    continue;
                case 2:
                    if (tag !== 18) {
                        break;
                    }
                    message.available_targeting_combinations.push(exports.SurfaceTargeting.decode(reader, reader.uint32()));
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            default_targeting: isSet(object.default_targeting)
                ? exports.SurfaceTargeting.fromJSON(object.default_targeting)
                : undefined,
            available_targeting_combinations: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.available_targeting_combinations)
                ? object.available_targeting_combinations.map((e) => exports.SurfaceTargeting.fromJSON(e))
                : [],
        };
    },
    toJSON(message) {
        var _a;
        const obj = {};
        if (message.default_targeting !== undefined) {
            obj.default_targeting = exports.SurfaceTargeting.toJSON(message.default_targeting);
        }
        if ((_a = message.available_targeting_combinations) === null || _a === void 0 ? void 0 : _a.length) {
            obj.available_targeting_combinations = message.available_targeting_combinations.map((e) => exports.SurfaceTargeting.toJSON(e));
        }
        return obj;
    },
    create(base) {
        return exports.SurfaceTargetingCombinations.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a;
        const message = createBaseSurfaceTargetingCombinations();
        message.default_targeting = (object.default_targeting !== undefined && object.default_targeting !== null)
            ? exports.SurfaceTargeting.fromPartial(object.default_targeting)
            : undefined;
        message.available_targeting_combinations =
            ((_a = object.available_targeting_combinations) === null || _a === void 0 ? void 0 : _a.map((e) => exports.SurfaceTargeting.fromPartial(e))) || [];
        return message;
    },
};
function createBaseSurfaceTargeting() {
    return { surfaces: [] };
}
exports.SurfaceTargeting = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.surfaces !== undefined && message.surfaces.length !== 0) {
            writer.uint32(10).fork();
            for (const v of message.surfaces) {
                writer.int32(v);
            }
            writer.ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseSurfaceTargeting();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag === 8) {
                        message.surfaces.push(reader.int32());
                        continue;
                    }
                    if (tag === 10) {
                        const end2 = reader.uint32() + reader.pos;
                        while (reader.pos < end2) {
                            message.surfaces.push(reader.int32());
                        }
                        continue;
                    }
                    break;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            surfaces: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.surfaces)
                ? object.surfaces.map((e) => (0, reach_plan_surface_js_1.reachPlanSurfaceEnum_ReachPlanSurfaceFromJSON)(e))
                : [],
        };
    },
    toJSON(message) {
        var _a;
        const obj = {};
        if ((_a = message.surfaces) === null || _a === void 0 ? void 0 : _a.length) {
            obj.surfaces = message.surfaces.map((e) => (0, reach_plan_surface_js_1.reachPlanSurfaceEnum_ReachPlanSurfaceToJSON)(e));
        }
        return obj;
    },
    create(base) {
        return exports.SurfaceTargeting.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a;
        const message = createBaseSurfaceTargeting();
        message.surfaces = ((_a = object.surfaces) === null || _a === void 0 ? void 0 : _a.map((e) => e)) || [];
        return message;
    },
};
function createBaseTargetFrequencySettings() {
    return { time_unit: 0, target_frequency: 0 };
}
exports.TargetFrequencySettings = {
    encode(message, writer = minimal_js_1.default.Writer.create()) {
        if (message.time_unit !== undefined && message.time_unit !== 0) {
            writer.uint32(8).int32(message.time_unit);
        }
        if (message.target_frequency !== undefined && message.target_frequency !== 0) {
            writer.uint32(16).int32(message.target_frequency);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
        let end = length === undefined ? reader.len : reader.pos + length;
        const message = createBaseTargetFrequencySettings();
        while (reader.pos < end) {
            const tag = reader.uint32();
            switch (tag >>> 3) {
                case 1:
                    if (tag !== 8) {
                        break;
                    }
                    message.time_unit = reader.int32();
                    continue;
                case 2:
                    if (tag !== 16) {
                        break;
                    }
                    message.target_frequency = reader.int32();
                    continue;
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(object) {
        return {
            time_unit: isSet(object.time_unit)
                ? (0, target_frequency_time_unit_js_1.targetFrequencyTimeUnitEnum_TargetFrequencyTimeUnitFromJSON)(object.time_unit)
                : 0,
            target_frequency: isSet(object.target_frequency) ? globalThis.Number(object.target_frequency) : 0,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.time_unit !== undefined && message.time_unit !== 0) {
            obj.time_unit = (0, target_frequency_time_unit_js_1.targetFrequencyTimeUnitEnum_TargetFrequencyTimeUnitToJSON)(message.time_unit);
        }
        if (message.target_frequency !== undefined && message.target_frequency !== 0) {
            obj.target_frequency = Math.round(message.target_frequency);
        }
        return obj;
    },
    create(base) {
        return exports.TargetFrequencySettings.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b;
        const message = createBaseTargetFrequencySettings();
        message.time_unit = (_a = object.time_unit) !== null && _a !== void 0 ? _a : 0;
        message.target_frequency = (_b = object.target_frequency) !== null && _b !== void 0 ? _b : 0;
        return message;
    },
};
exports.ReachPlanServiceService = {
    /**
     * Returns a collection of conversion rate suggestions for supported plannable
     * products.
     *
     * List of thrown errors:
     *   [AuthenticationError]()
     *   [AuthorizationError]()
     *   [HeaderError]()
     *   [InternalError]()
     *   [QuotaError]()
     *   [RequestError]()
     */
    generateConversionRates: {
        path: "/google.ads.googleads.v24.services.ReachPlanService/GenerateConversionRates",
        requestStream: false,
        responseStream: false,
        requestSerialize: (value) => Buffer.from(exports.GenerateConversionRatesRequest.encode(value).finish()),
        requestDeserialize: (value) => exports.GenerateConversionRatesRequest.decode(value),
        responseSerialize: (value) => Buffer.from(exports.GenerateConversionRatesResponse.encode(value).finish()),
        responseDeserialize: (value) => exports.GenerateConversionRatesResponse.decode(value),
    },
    /**
     * Returns the list of plannable locations (for example, countries).
     *
     * List of thrown errors:
     *   [AuthenticationError]()
     *   [AuthorizationError]()
     *   [HeaderError]()
     *   [InternalError]()
     *   [QuotaError]()
     *   [RequestError]()
     */
    listPlannableLocations: {
        path: "/google.ads.googleads.v24.services.ReachPlanService/ListPlannableLocations",
        requestStream: false,
        responseStream: false,
        requestSerialize: (value) => Buffer.from(exports.ListPlannableLocationsRequest.encode(value).finish()),
        requestDeserialize: (value) => exports.ListPlannableLocationsRequest.decode(value),
        responseSerialize: (value) => Buffer.from(exports.ListPlannableLocationsResponse.encode(value).finish()),
        responseDeserialize: (value) => exports.ListPlannableLocationsResponse.decode(value),
    },
    /**
     * Returns the list of per-location plannable YouTube ad formats with allowed
     * targeting.
     *
     * List of thrown errors:
     *   [AuthenticationError]()
     *   [AuthorizationError]()
     *   [HeaderError]()
     *   [InternalError]()
     *   [QuotaError]()
     *   [RequestError]()
     */
    listPlannableProducts: {
        path: "/google.ads.googleads.v24.services.ReachPlanService/ListPlannableProducts",
        requestStream: false,
        responseStream: false,
        requestSerialize: (value) => Buffer.from(exports.ListPlannableProductsRequest.encode(value).finish()),
        requestDeserialize: (value) => exports.ListPlannableProductsRequest.decode(value),
        responseSerialize: (value) => Buffer.from(exports.ListPlannableProductsResponse.encode(value).finish()),
        responseDeserialize: (value) => exports.ListPlannableProductsResponse.decode(value),
    },
    /**
     * Generates a reach forecast for a given targeting / product mix.
     *
     * List of thrown errors:
     *   [AuthenticationError]()
     *   [AuthorizationError]()
     *   [FieldError]()
     *   [HeaderError]()
     *   [InternalError]()
     *   [QuotaError]()
     *   [RangeError]()
     *   [ReachPlanError]()
     *   [RequestError]()
     */
    generateReachForecast: {
        path: "/google.ads.googleads.v24.services.ReachPlanService/GenerateReachForecast",
        requestStream: false,
        responseStream: false,
        requestSerialize: (value) => Buffer.from(exports.GenerateReachForecastRequest.encode(value).finish()),
        requestDeserialize: (value) => exports.GenerateReachForecastRequest.decode(value),
        responseSerialize: (value) => Buffer.from(exports.GenerateReachForecastResponse.encode(value).finish()),
        responseDeserialize: (value) => exports.GenerateReachForecastResponse.decode(value),
    },
    /**
     * Returns the list of plannable user lists with their plannable status.
     * User lists may not be plannable for a number of reasons, including:
     * - They are less than 10 days old.
     * - They have a membership lifespan that is less than 30 days
     * - They have less than 10,000 or more than 700,000 users.
     *
     * List of thrown errors:
     *   [AuthenticationError]()
     *   [AuthorizationError]()
     *   [FieldError]()
     *   [HeaderError]()
     *   [InternalError]()
     *   [QuotaError]()
     *   [RangeError]()
     *   [ReachPlanError]()
     *   [RequestError]()
     */
    listPlannableUserLists: {
        path: "/google.ads.googleads.v24.services.ReachPlanService/ListPlannableUserLists",
        requestStream: false,
        responseStream: false,
        requestSerialize: (value) => Buffer.from(exports.ListPlannableUserListsRequest.encode(value).finish()),
        requestDeserialize: (value) => exports.ListPlannableUserListsRequest.decode(value),
        responseSerialize: (value) => Buffer.from(exports.ListPlannableUserListsResponse.encode(value).finish()),
        responseDeserialize: (value) => exports.ListPlannableUserListsResponse.decode(value),
    },
    /**
     * Returns the list of plannable user interests.
     * A plannable user interest is one that can be targeted in a reach forecast
     * using
     * [ReachPlanService.GenerateReachForecast][google.ads.googleads.v24.services.ReachPlanService.GenerateReachForecast].
     *
     * List of thrown errors:
     *   [AuthenticationError]()
     *   [AuthorizationError]()
     *   [FieldError]()
     *   [HeaderError]()
     *   [InternalError]()
     *   [ListOperationError]()
     *   [QuotaError]()
     *   [RequestError]()
     *   [StringLengthError]()
     */
    listPlannableUserInterests: {
        path: "/google.ads.googleads.v24.services.ReachPlanService/ListPlannableUserInterests",
        requestStream: false,
        responseStream: false,
        requestSerialize: (value) => Buffer.from(exports.ListPlannableUserInterestsRequest.encode(value).finish()),
        requestDeserialize: (value) => exports.ListPlannableUserInterestsRequest.decode(value),
        responseSerialize: (value) => Buffer.from(exports.ListPlannableUserInterestsResponse.encode(value).finish()),
        responseDeserialize: (value) => exports.ListPlannableUserInterestsResponse.decode(value),
    },
};
exports.ReachPlanServiceClient = (0, grpc_js_1.makeGenericClientConstructor)(exports.ReachPlanServiceService, "google.ads.googleads.v24.services.ReachPlanService");
function longToString(long) {
    return long.toString();
}
if (minimal_js_1.default.util.Long !== long_1.default) {
    minimal_js_1.default.util.Long = long_1.default;
    minimal_js_1.default.configure();
}
function isSet(value) {
    return value !== null && value !== undefined;
}