UNPKG

@htdangkhoa/google-ads

Version:
2,823 lines 120 kB
// 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/v19/services/reach_plan_service.proto
/* eslint-disable */
import { makeGenericClientConstructor, } from "@grpc/grpc-js";
import Long from "long";
import _m0 from "protobufjs/minimal.js";
import { DeviceInfo, GenderInfo, UserInterestInfo } from "../common/criteria.js";
import { DateRange } from "../common/dates.js";
import { frequencyCapTimeUnitEnum_FrequencyCapTimeUnitFromJSON, frequencyCapTimeUnitEnum_FrequencyCapTimeUnitToJSON, } from "../enums/frequency_cap_time_unit.js";
import { reachPlanAgeRangeEnum_ReachPlanAgeRangeFromJSON, reachPlanAgeRangeEnum_ReachPlanAgeRangeToJSON, } from "../enums/reach_plan_age_range.js";
import { reachPlanNetworkEnum_ReachPlanNetworkFromJSON, reachPlanNetworkEnum_ReachPlanNetworkToJSON, } from "../enums/reach_plan_network.js";
import { reachPlanSurfaceEnum_ReachPlanSurfaceFromJSON, reachPlanSurfaceEnum_ReachPlanSurfaceToJSON, } from "../enums/reach_plan_surface.js";
import { targetFrequencyTimeUnitEnum_TargetFrequencyTimeUnitFromJSON, targetFrequencyTimeUnitEnum_TargetFrequencyTimeUnitToJSON, } from "../enums/target_frequency_time_unit.js";
function createBaseListPlannableLocationsRequest() {
    return {};
}
export const ListPlannableLocationsRequest = {
    encode(_, writer = _m0.Writer.create()) {
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof _m0.Reader ? input : _m0.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) {
            }
            if ((tag & 7) === 4 || tag === 0) {
                break;
            }
            reader.skipType(tag & 7);
        }
        return message;
    },
    fromJSON(_) {
        return {};
    },
    toJSON(_) {
        const obj = {};
        return obj;
    },
    create(base) {
        return ListPlannableLocationsRequest.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(_) {
        const message = createBaseListPlannableLocationsRequest();
        return message;
    },
};
function createBaseListPlannableLocationsResponse() {
    return { plannable_locations: [] };
}
export const ListPlannableLocationsResponse = {
    encode(message, writer = _m0.Writer.create()) {
        if (message.plannable_locations !== undefined && message.plannable_locations.length !== 0) {
            for (const v of message.plannable_locations) {
                PlannableLocation.encode(v, writer.uint32(10).fork()).ldelim();
            }
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof _m0.Reader ? input : _m0.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(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) => 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) => PlannableLocation.toJSON(e));
        }
        return obj;
    },
    create(base) {
        return 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) => PlannableLocation.fromPartial(e))) || [];
        return message;
    },
};
function createBasePlannableLocation() {
    return {
        id: undefined,
        name: undefined,
        parent_country_id: undefined,
        country_code: undefined,
        location_type: undefined,
    };
}
export const PlannableLocation = {
    encode(message, writer = _m0.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 _m0.Reader ? input : _m0.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 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: "" };
}
export const ListPlannableProductsRequest = {
    encode(message, writer = _m0.Writer.create()) {
        if (message.plannable_location_id !== undefined && message.plannable_location_id !== "") {
            writer.uint32(18).string(message.plannable_location_id);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof _m0.Reader ? input : _m0.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;
            }
            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) : "",
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.plannable_location_id !== undefined && message.plannable_location_id !== "") {
            obj.plannable_location_id = message.plannable_location_id;
        }
        return obj;
    },
    create(base) {
        return 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 : "";
        return message;
    },
};
function createBaseListPlannableProductsResponse() {
    return { product_metadata: [] };
}
export const ListPlannableProductsResponse = {
    encode(message, writer = _m0.Writer.create()) {
        if (message.product_metadata !== undefined && message.product_metadata.length !== 0) {
            for (const v of message.product_metadata) {
                ProductMetadata.encode(v, writer.uint32(10).fork()).ldelim();
            }
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof _m0.Reader ? input : _m0.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(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) => 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) => ProductMetadata.toJSON(e));
        }
        return obj;
    },
    create(base) {
        return 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) => ProductMetadata.fromPartial(e))) || [];
        return message;
    },
};
function createBaseProductMetadata() {
    return { plannable_product_code: undefined, plannable_product_name: "", plannable_targeting: undefined };
}
export const ProductMetadata = {
    encode(message, writer = _m0.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_targeting !== undefined) {
            PlannableTargeting.encode(message.plannable_targeting, writer.uint32(18).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof _m0.Reader ? input : _m0.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 2:
                    if (tag !== 18) {
                        break;
                    }
                    message.plannable_targeting = 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_targeting: isSet(object.plannable_targeting)
                ? 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_targeting !== undefined) {
            obj.plannable_targeting = PlannableTargeting.toJSON(message.plannable_targeting);
        }
        return obj;
    },
    create(base) {
        return ProductMetadata.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b;
        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_targeting = (object.plannable_targeting !== undefined && object.plannable_targeting !== null)
            ? PlannableTargeting.fromPartial(object.plannable_targeting)
            : undefined;
        return message;
    },
};
function createBasePlannableTargeting() {
    return {
        age_ranges: [],
        genders: [],
        devices: [],
        networks: [],
        youtube_select_lineups: [],
        surface_targeting: undefined,
    };
}
export const PlannableTargeting = {
    encode(message, writer = _m0.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) {
                GenderInfo.encode(v, writer.uint32(18).fork()).ldelim();
            }
        }
        if (message.devices !== undefined && message.devices.length !== 0) {
            for (const v of message.devices) {
                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_lineups !== undefined && message.youtube_select_lineups.length !== 0) {
            for (const v of message.youtube_select_lineups) {
                YouTubeSelectLineUp.encode(v, writer.uint32(42).fork()).ldelim();
            }
        }
        if (message.surface_targeting !== undefined) {
            SurfaceTargetingCombinations.encode(message.surface_targeting, writer.uint32(50).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof _m0.Reader ? input : _m0.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(GenderInfo.decode(reader, reader.uint32()));
                    continue;
                case 3:
                    if (tag !== 26) {
                        break;
                    }
                    message.devices.push(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 5:
                    if (tag !== 42) {
                        break;
                    }
                    message.youtube_select_lineups.push(YouTubeSelectLineUp.decode(reader, reader.uint32()));
                    continue;
                case 6:
                    if (tag !== 50) {
                        break;
                    }
                    message.surface_targeting = 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) => reachPlanAgeRangeEnum_ReachPlanAgeRangeFromJSON(e))
                : [],
            genders: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.genders) ? object.genders.map((e) => GenderInfo.fromJSON(e)) : [],
            devices: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.devices) ? object.devices.map((e) => DeviceInfo.fromJSON(e)) : [],
            networks: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.networks)
                ? object.networks.map((e) => reachPlanNetworkEnum_ReachPlanNetworkFromJSON(e))
                : [],
            youtube_select_lineups: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.youtube_select_lineups)
                ? object.youtube_select_lineups.map((e) => YouTubeSelectLineUp.fromJSON(e))
                : [],
            surface_targeting: isSet(object.surface_targeting)
                ? SurfaceTargetingCombinations.fromJSON(object.surface_targeting)
                : undefined,
        };
    },
    toJSON(message) {
        var _a, _b, _c, _d, _e;
        const obj = {};
        if ((_a = message.age_ranges) === null || _a === void 0 ? void 0 : _a.length) {
            obj.age_ranges = message.age_ranges.map((e) => reachPlanAgeRangeEnum_ReachPlanAgeRangeToJSON(e));
        }
        if ((_b = message.genders) === null || _b === void 0 ? void 0 : _b.length) {
            obj.genders = message.genders.map((e) => GenderInfo.toJSON(e));
        }
        if ((_c = message.devices) === null || _c === void 0 ? void 0 : _c.length) {
            obj.devices = message.devices.map((e) => DeviceInfo.toJSON(e));
        }
        if ((_d = message.networks) === null || _d === void 0 ? void 0 : _d.length) {
            obj.networks = message.networks.map((e) => reachPlanNetworkEnum_ReachPlanNetworkToJSON(e));
        }
        if ((_e = message.youtube_select_lineups) === null || _e === void 0 ? void 0 : _e.length) {
            obj.youtube_select_lineups = message.youtube_select_lineups.map((e) => YouTubeSelectLineUp.toJSON(e));
        }
        if (message.surface_targeting !== undefined) {
            obj.surface_targeting = SurfaceTargetingCombinations.toJSON(message.surface_targeting);
        }
        return obj;
    },
    create(base) {
        return PlannableTargeting.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b, _c, _d, _e;
        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) => GenderInfo.fromPartial(e))) || [];
        message.devices = ((_c = object.devices) === null || _c === void 0 ? void 0 : _c.map((e) => DeviceInfo.fromPartial(e))) || [];
        message.networks = ((_d = object.networks) === null || _d === void 0 ? void 0 : _d.map((e) => e)) || [];
        message.youtube_select_lineups = ((_e = object.youtube_select_lineups) === null || _e === void 0 ? void 0 : _e.map((e) => YouTubeSelectLineUp.fromPartial(e))) ||
            [];
        message.surface_targeting = (object.surface_targeting !== undefined && object.surface_targeting !== null)
            ? SurfaceTargetingCombinations.fromPartial(object.surface_targeting)
            : undefined;
        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,
    };
}
export const GenerateReachForecastRequest = {
    encode(message, writer = _m0.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) {
            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) {
            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) {
            EffectiveFrequencyLimit.encode(message.effective_frequency_limit, writer.uint32(98).fork()).ldelim();
        }
        if (message.targeting !== undefined) {
            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) {
                PlannedProduct.encode(v, writer.uint32(58).fork()).ldelim();
            }
        }
        if (message.forecast_metric_options !== undefined) {
            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);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof _m0.Reader ? input : _m0.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 = 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 = 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 = EffectiveFrequencyLimit.decode(reader, reader.uint32());
                    continue;
                case 6:
                    if (tag !== 50) {
                        break;
                    }
                    message.targeting = Targeting.decode(reader, reader.uint32());
                    continue;
                case 7:
                    if (tag !== 58) {
                        break;
                    }
                    message.planned_products.push(PlannedProduct.decode(reader, reader.uint32()));
                    continue;
                case 13:
                    if (tag !== 106) {
                        break;
                    }
                    message.forecast_metric_options = ForecastMetricOptions.decode(reader, reader.uint32());
                    continue;
                case 14:
                    if (tag !== 114) {
                        break;
                    }
                    message.customer_reach_group = reader.string();
                    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)
                ? 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)
                ? 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)
                ? EffectiveFrequencyLimit.fromJSON(object.effective_frequency_limit)
                : undefined,
            targeting: isSet(object.targeting) ? 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) => PlannedProduct.fromJSON(e))
                : [],
            forecast_metric_options: isSet(object.forecast_metric_options)
                ? ForecastMetricOptions.fromJSON(object.forecast_metric_options)
                : undefined,
            customer_reach_group: isSet(object.customer_reach_group)
                ? globalThis.String(object.customer_reach_group)
                : 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 = 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 = 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 = EffectiveFrequencyLimit.toJSON(message.effective_frequency_limit);
        }
        if (message.targeting !== undefined) {
            obj.targeting = 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) => PlannedProduct.toJSON(e));
        }
        if (message.forecast_metric_options !== undefined) {
            obj.forecast_metric_options = ForecastMetricOptions.toJSON(message.forecast_metric_options);
        }
        if (message.customer_reach_group !== undefined) {
            obj.customer_reach_group = message.customer_reach_group;
        }
        return obj;
    },
    create(base) {
        return 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)
            ? 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)
                ? 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)
                ? EffectiveFrequencyLimit.fromPartial(object.effective_frequency_limit)
                : undefined;
        message.targeting = (object.targeting !== undefined && object.targeting !== null)
            ? Targeting.fromPartial(object.targeting)
            : undefined;
        message.planned_products = ((_e = object.planned_products) === null || _e === void 0 ? void 0 : _e.map((e) => PlannedProduct.fromPartial(e))) || [];
        message.forecast_metric_options =
            (object.forecast_metric_options !== undefined && object.forecast_metric_options !== null)
                ? ForecastMetricOptions.fromPartial(object.forecast_metric_options)
                : undefined;
        message.customer_reach_group = (_f = object.customer_reach_group) !== null && _f !== void 0 ? _f : undefined;
        return message;
    },
};
function createBaseEffectiveFrequencyLimit() {
    return { effective_frequency_breakdown_limit: 0 };
}
export const EffectiveFrequencyLimit = {
    encode(message, writer = _m0.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 _m0.Reader ? input : _m0.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 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 };
}
export const FrequencyCap = {
    encode(message, writer = _m0.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 _m0.Reader ? input : _m0.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) ? 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 = frequencyCapTimeUnitEnum_FrequencyCapTimeUnitToJSON(message.time_unit);
        }
        return obj;
    },
    create(base) {
        return 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,
    };
}
export const Targeting = {
    encode(message, writer = _m0.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) {
                GenderInfo.encode(v, writer.uint32(26).fork()).ldelim();
            }
        }
        if (message.devices !== undefined && message.devices.length !== 0) {
            for (const v of message.devices) {
                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) {
            AudienceTargeting.encode(message.audience_targeting, writer.uint32(58).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof _m0.Reader ? input : _m0.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(GenderInfo.decode(reader, reader.uint32()));
                    continue;
                case 4:
                    if (tag !== 34) {
                        break;
                    }
                    message.devices.push(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 = 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) ? reachPlanAgeRangeEnum_ReachPlanAgeRangeFromJSON(object.age_range) : 0,
            genders: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.genders) ? object.genders.map((e) => GenderInfo.fromJSON(e)) : [],
            devices: globalThis.Array.isArray(object === null || object === void 0 ? void 0 : object.devices) ? object.devices.map((e) => DeviceInfo.fromJSON(e)) : [],
            network: isSet(object.network) ? reachPlanNetworkEnum_ReachPlanNetworkFromJSON(object.network) : 0,
            audience_targeting: isSet(object.audience_targeting)
                ? 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 = reachPlanAgeRangeEnum_ReachPlanAgeRangeToJSON(message.age_range);
        }
        if ((_b = message.genders) === null || _b === void 0 ? void 0 : _b.length) {
            obj.genders = message.genders.map((e) => GenderInfo.toJSON(e));
        }
        if ((_c = message.devices) === null || _c === void 0 ? void 0 : _c.length) {
            obj.devices = message.devices.map((e) => DeviceInfo.toJSON(e));
        }
        if (message.network !== undefined && message.network !== 0) {
            obj.network = reachPlanNetworkEnum_ReachPlanNetworkToJSON(message.network);
        }
        if (message.audience_targeting !== undefined) {
            obj.audience_targeting = AudienceTargeting.toJSON(message.audience_targeting);
        }
        return obj;
    },
    create(base) {
        return 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) => GenderInfo.fromPartial(e))) || [];
        message.devices = ((_e = object.devices) === null || _e === void 0 ? void 0 : _e.map((e) => 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)
            ? AudienceTargeting.fromPartial(object.audience_targeting)
            : undefined;
        return message;
    },
};
function createBaseCampaignDuration() {
    return { duration_in_days: undefined, date_range: undefined };
}
export const CampaignDuration = {
    encode(message, writer = _m0.Writer.create()) {
        if (message.duration_in_days !== undefined) {
            writer.uint32(16).int32(message.duration_in_days);
        }
        if (message.date_range !== undefined) {
            DateRange.encode(message.date_range, writer.uint32(26).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof _m0.Reader ? input : _m0.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 = 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) ? 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 = DateRange.toJSON(message.date_range);
        }
        return obj;
    },
    create(base) {
        return 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)
            ? DateRange.fromPartial(object.date_range)
            : undefined;
        return message;
    },
};
function createBasePlannedProduct() {
    return { plannable_product_code: undefined, budget_micros: undefined, advanced_product_targeting: undefined };
}
export const PlannedProduct = {
    encode(message, writer = _m0.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.advanced_product_targeting !== undefined) {
            AdvancedProductTargeting.encode(message.advanced_product_targeting, writer.uint32(42).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof _m0.Reader ? input : _m0.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 5:
                    if (tag !== 42) {
                        break;
                    }
                    message.advanced_product_targeting = 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,
            advanced_product_targeting: isSet(object.advanced_product_targeting)
                ? 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.advanced_product_targeting !== undefined) {
            obj.advanced_product_targeting = AdvancedProductTargeting.toJSON(message.advanced_product_targeting);
        }
        return obj;
    },
    create(base) {
        return PlannedProduct.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b;
        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.advanced_product_targeting =
            (object.advanced_product_targeting !== undefined && object.advanced_product_targeting !== null)
                ? AdvancedProductTargeting.fromPartial(object.advanced_product_targeting)
                : undefined;
        return message;
    },
};
function createBaseGenerateReachForecastResponse() {
    return { on_target_audience_metrics: undefined, reach_curve: undefined };
}
export const GenerateReachForecastResponse = {
    encode(message, writer = _m0.Writer.create()) {
        if (message.on_target_audience_metrics !== undefined) {
            OnTargetAudienceMetrics.encode(message.on_target_audience_metrics, writer.uint32(10).fork()).ldelim();
        }
        if (message.reach_curve !== undefined) {
            ReachCurve.encode(message.reach_curve, writer.uint32(18).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof _m0.Reader ? input : _m0.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 = OnTargetAudienceMetrics.decode(reader, reader.uint32());
                    continue;
                case 2:
                    if (tag !== 18) {
                        break;
                    }
                    message.reach_curve = 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)
                ? OnTargetAudienceMetrics.fromJSON(object.on_target_audience_metrics)
                : undefined,
            reach_curve: isSet(object.reach_curve) ? ReachCurve.fromJSON(object.reach_curve) : undefined,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.on_target_audience_metrics !== undefined) {
            obj.on_target_audience_metrics = OnTargetAudienceMetrics.toJSON(message.on_target_audience_metrics);
        }
        if (message.reach_curve !== undefined) {
            obj.reach_curve = ReachCurve.toJSON(message.reach_curve);
        }
        return obj;
    },
    create(base) {
        return 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)
                ? OnTargetAudienceMetrics.fromPartial(object.on_target_audience_metrics)
                : undefined;
        message.reach_curve = (object.reach_curve !== undefined && object.reach_curve !== null)
            ? ReachCurve.fromPartial(object.reach_curve)
            : undefined;
        return message;
    },
};
function createBaseReachCurve() {
    return { reach_forecasts: [] };
}
export const ReachCurve = {
    encode(message, writer = _m0.Writer.create()) {
        if (message.reach_forecasts !== undefined && message.reach_forecasts.length !== 0) {
            for (const v of message.reach_forecasts) {
                ReachForecast.encode(v, writer.uint32(10).fork()).ldelim();
            }
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof _m0.Reader ? input : _m0.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(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) => 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) => ReachForecast.toJSON(e));
        }
        return obj;
    },
    create(base) {
        return 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) => ReachForecast.fromPartial(e))) || [];
        return message;
    },
};
function createBaseReachForecast() {
    return { cost_micros: "0", forecast: undefined, planned_product_reach_forecasts: [] };
}
export const ReachForecast = {
    encode(message, writer = _m0.Writer.create()) {
        if (message.cost_micros !== undefined && message.cost_micros !== "0") {
            writer.uint32(40).int64(message.cost_micros);
        }
        if (message.forecast !== undefined) {
            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) {
                PlannedProductReachForecast.encode(v, writer.uint32(34).fork()).ldelim();
            }
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof _m0.Reader ? input : _m0.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 = Forecast.decode(reader, reader.uint32());
                    continue;
                case 4:
                    if (tag !== 34) {
                        break;
                    }
                    message.planned_product_reach_forecasts.push(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) ? 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) => 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 = 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) => PlannedProductReachForecast.toJSON(e));
        }
        return obj;
    },
    create(base) {
        return 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)
            ? 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) => 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,
        views: undefined,
    };
}
export const Forecast = {
    encode(message, writer = _m0.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) {
                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.views !== undefined) {
            writer.uint32(120).int64(message.views);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof _m0.Reader ? input : _m0.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(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 15:
                    if (tag !== 120) {
                        break;
                    }
                    message.views = 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) => 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,
            views: isSet(object.views) ? globalThis.String(object.views) : 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) => 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.views !== undefined) {
            obj.views = message.views;
        }
        return obj;
    },
    create(base) {
        return Forecast.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
        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) => 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.views = (_l = object.views) !== null && _l !== void 0 ? _l : undefined;
        return message;
    },
};
function createBasePlannedProductReachForecast() {
    return { plannable_product_code: "", cost_micros: "0", planned_product_forecast: undefined };
}
export const PlannedProductReachForecast = {
    encode(message, writer = _m0.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) {
            PlannedProductForecast.encode(message.planned_product_forecast, writer.uint32(26).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof _m0.Reader ? input : _m0.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 = 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)
                ? 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 = PlannedProductForecast.toJSON(message.planned_product_forecast);
        }
        return obj;
    },
    create(base) {
        return 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)
                ? 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,
        views: undefined,
    };
}
export const PlannedProductForecast = {
    encode(message, writer = _m0.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.views !== undefined) {
            writer.uint32(88).int64(message.views);
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof _m0.Reader ? input : _m0.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 11:
                    if (tag !== 88) {
                        break;
                    }
                    message.views = 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,
            views: isSet(object.views) ? globalThis.String(object.views) : 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.views !== undefined) {
            obj.views = message.views;
        }
        return obj;
    },
    create(base) {
        return PlannedProductForecast.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
        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.views = (_l = object.views) !== null && _l !== void 0 ? _l : undefined;
        return message;
    },
};
function createBaseOnTargetAudienceMetrics() {
    return { youtube_audience_size: undefined, census_audience_size: undefined };
}
export const OnTargetAudienceMetrics = {
    encode(message, writer = _m0.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 _m0.Reader ? input : _m0.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 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,
    };
}
export const EffectiveFrequencyBreakdown = {
    encode(message, writer = _m0.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 _m0.Reader ? input : _m0.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 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 };
}
export const ForecastMetricOptions = {
    encode(message, writer = _m0.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 _m0.Reader ? input : _m0.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 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: [] };
}
export const AudienceTargeting = {
    encode(message, writer = _m0.Writer.create()) {
        if (message.user_interest !== undefined && message.user_interest.length !== 0) {
            for (const v of message.user_interest) {
                UserInterestInfo.encode(v, writer.uint32(10).fork()).ldelim();
            }
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof _m0.Reader ? input : _m0.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(UserInterestInfo.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) => UserInterestInfo.fromJSON(e))
                : [],
        };
    },
    toJSON(message) {
        var _a;
        const obj = {};
        if ((_a = message.user_interest) === null || _a === void 0 ? void 0 : _a.length) {
            obj.user_interest = message.user_interest.map((e) => UserInterestInfo.toJSON(e));
        }
        return obj;
    },
    create(base) {
        return AudienceTargeting.fromPartial(base !== null && base !== void 0 ? base : {});
    },
    fromPartial(object) {
        var _a;
        const message = createBaseAudienceTargeting();
        message.user_interest = ((_a = object.user_interest) === null || _a === void 0 ? void 0 : _a.map((e) => UserInterestInfo.fromPartial(e))) || [];
        return message;
    },
};
function createBaseAdvancedProductTargeting() {
    return {
        surface_targeting_settings: undefined,
        target_frequency_settings: undefined,
        youtube_select_settings: undefined,
    };
}
export const AdvancedProductTargeting = {
    encode(message, writer = _m0.Writer.create()) {
        if (message.surface_targeting_settings !== undefined) {
            SurfaceTargeting.encode(message.surface_targeting_settings, writer.uint32(18).fork()).ldelim();
        }
        if (message.target_frequency_settings !== undefined) {
            TargetFrequencySettings.encode(message.target_frequency_settings, writer.uint32(26).fork()).ldelim();
        }
        if (message.youtube_select_settings !== undefined) {
            YouTubeSelectSettings.encode(message.youtube_select_settings, writer.uint32(10).fork()).ldelim();
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof _m0.Reader ? input : _m0.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 = SurfaceTargeting.decode(reader, reader.uint32());
                    continue;
                case 3:
                    if (tag !== 26) {
                        break;
                    }
                    message.target_frequency_settings = TargetFrequencySettings.decode(reader, reader.uint32());
                    continue;
                case 1:
                    if (tag !== 10) {
                        break;
                    }
                    message.youtube_select_settings = 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)
                ? SurfaceTargeting.fromJSON(object.surface_targeting_settings)
                : undefined,
            target_frequency_settings: isSet(object.target_frequency_settings)
                ? TargetFrequencySettings.fromJSON(object.target_frequency_settings)
                : undefined,
            youtube_select_settings: isSet(object.youtube_select_settings)
                ? YouTubeSelectSettings.fromJSON(object.youtube_select_settings)
                : undefined,
        };
    },
    toJSON(message) {
        const obj = {};
        if (message.surface_targeting_settings !== undefined) {
            obj.surface_targeting_settings = SurfaceTargeting.toJSON(message.surface_targeting_settings);
        }
        if (message.target_frequency_settings !== undefined) {
            obj.target_frequency_settings = TargetFrequencySettings.toJSON(message.target_frequency_settings);
        }
        if (message.youtube_select_settings !== undefined) {
            obj.youtube_select_settings = YouTubeSelectSettings.toJSON(message.youtube_select_settings);
        }
        return obj;
    },
    create(base) {
        return 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)
                ? SurfaceTargeting.fromPartial(object.surface_targeting_settings)
                : undefined;
        message.target_frequency_settings =
            (object.target_frequency_settings !== undefined && object.target_frequency_settings !== null)
                ? TargetFrequencySettings.fromPartial(object.target_frequency_settings)
                : undefined;
        message.youtube_select_settings =
            (object.youtube_select_settings !== undefined && object.youtube_select_settings !== null)
                ? YouTubeSelectSettings.fromPartial(object.youtube_select_settings)
                : undefined;
        return message;
    },
};
function createBaseYouTubeSelectSettings() {
    return { lineup_id: "0" };
}
export const YouTubeSelectSettings = {
    encode(message, writer = _m0.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 _m0.Reader ? input : _m0.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 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: "" };
}
export const YouTubeSelectLineUp = {
    encode(message, writer = _m0.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 _m0.Reader ? input : _m0.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 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 createBaseSurfaceTargetingCombinations() {
    return { default_targeting: undefined, available_targeting_combinations: [] };
}
export const SurfaceTargetingCombinations = {
    encode(message, writer = _m0.Writer.create()) {
        if (message.default_targeting !== undefined) {
            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) {
                SurfaceTargeting.encode(v, writer.uint32(18).fork()).ldelim();
            }
        }
        return writer;
    },
    decode(input, length) {
        const reader = input instanceof _m0.Reader ? input : _m0.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 = SurfaceTargeting.decode(reader, reader.uint32());
                    continue;
                case 2:
                    if (tag !== 18) {
                        break;
                    }
                    message.available_targeting_combinations.push(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)
                ? 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) => SurfaceTargeting.fromJSON(e))
                : [],
        };
    },
    toJSON(message) {
        var _a;
        const obj = {};
        if (message.default_targeting !== undefined) {
            obj.default_targeting = 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) => SurfaceTargeting.toJSON(e));
        }
        return obj;
    },
    create(base) {
        return 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)
            ? SurfaceTargeting.fromPartial(object.default_targeting)
            : undefined;
        message.available_targeting_combinations =
            ((_a = object.available_targeting_combinations) === null || _a === void 0 ? void 0 : _a.map((e) => SurfaceTargeting.fromPartial(e))) || [];
        return message;
    },
};
function createBaseSurfaceTargeting() {
    return { surfaces: [] };
}
export const SurfaceTargeting = {
    encode(message, writer = _m0.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 _m0.Reader ? input : _m0.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) => 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) => reachPlanSurfaceEnum_ReachPlanSurfaceToJSON(e));
        }
        return obj;
    },
    create(base) {
        return 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 };
}
export const TargetFrequencySettings = {
    encode(message, writer = _m0.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 _m0.Reader ? input : _m0.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)
                ? 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 = 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 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;
    },
};
export const ReachPlanServiceService = {
    /**
     * Returns the list of plannable locations (for example, countries).
     *
     * List of thrown errors:
     *   [AuthenticationError]()
     *   [AuthorizationError]()
     *   [HeaderError]()
     *   [InternalError]()
     *   [QuotaError]()
     *   [RequestError]()
     */
    listPlannableLocations: {
        path: "/google.ads.googleads.v19.services.ReachPlanService/ListPlannableLocations",
        requestStream: false,
        responseStream: false,
        requestSerialize: (value) => Buffer.from(ListPlannableLocationsRequest.encode(value).finish()),
        requestDeserialize: (value) => ListPlannableLocationsRequest.decode(value),
        responseSerialize: (value) => Buffer.from(ListPlannableLocationsResponse.encode(value).finish()),
        responseDeserialize: (value) => 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.v19.services.ReachPlanService/ListPlannableProducts",
        requestStream: false,
        responseStream: false,
        requestSerialize: (value) => Buffer.from(ListPlannableProductsRequest.encode(value).finish()),
        requestDeserialize: (value) => ListPlannableProductsRequest.decode(value),
        responseSerialize: (value) => Buffer.from(ListPlannableProductsResponse.encode(value).finish()),
        responseDeserialize: (value) => 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.v19.services.ReachPlanService/GenerateReachForecast",
        requestStream: false,
        responseStream: false,
        requestSerialize: (value) => Buffer.from(GenerateReachForecastRequest.encode(value).finish()),
        requestDeserialize: (value) => GenerateReachForecastRequest.decode(value),
        responseSerialize: (value) => Buffer.from(GenerateReachForecastResponse.encode(value).finish()),
        responseDeserialize: (value) => GenerateReachForecastResponse.decode(value),
    },
};
export const ReachPlanServiceClient = makeGenericClientConstructor(ReachPlanServiceService, "google.ads.googleads.v19.services.ReachPlanService");
function longToString(long) {
    return long.toString();
}
if (_m0.util.Long !== Long) {
    _m0.util.Long = Long;
    _m0.configure();
}
function isSet(value) {
    return value !== null && value !== undefined;
}