import type { BinaryWriteOptions } from "@protobuf-ts/runtime";
import type { IBinaryWriter } from "@protobuf-ts/runtime";
import type { BinaryReadOptions } from "@protobuf-ts/runtime";
import type { IBinaryReader } from "@protobuf-ts/runtime";
import type { PartialMessage } from "@protobuf-ts/runtime";
import { MessageType } from "@protobuf-ts/runtime";
import { ParentalStatusTypeEnum_ParentalStatusType } from "../enums/parental_status_type";
import { IncomeRangeTypeEnum_IncomeRangeType } from "../enums/income_range_type";
import { GenderTypeEnum_GenderType } from "../enums/gender_type";
/**
 * Positive dimension specifying user's audience.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.AudienceDimension
 */
export interface AudienceDimension {
    /**
     * @generated from protobuf oneof: dimension
     */
    dimension: {
        oneofKind: "age";
        /**
         * Dimension specifying users by their age.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.AgeDimension age = 1;
         */
        age: AgeDimension;
    } | {
        oneofKind: "gender";
        /**
         * Dimension specifying users by their gender.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.GenderDimension gender = 2;
         */
        gender: GenderDimension;
    } | {
        oneofKind: "householdIncome";
        /**
         * Dimension specifying users by their household income.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.HouseholdIncomeDimension household_income = 3;
         */
        householdIncome: HouseholdIncomeDimension;
    } | {
        oneofKind: "parentalStatus";
        /**
         * Dimension specifying users by their parental status.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.ParentalStatusDimension parental_status = 4;
         */
        parentalStatus: ParentalStatusDimension;
    } | {
        oneofKind: "audienceSegments";
        /**
         * Dimension specifying users by their membership in other audience
         * segments.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.AudienceSegmentDimension audience_segments = 5;
         */
        audienceSegments: AudienceSegmentDimension;
    } | {
        oneofKind: undefined;
    };
}
/**
 * Negative dimension specifying users to exclude from the audience.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.AudienceExclusionDimension
 */
export interface AudienceExclusionDimension {
    /**
     * Audience segment to be excluded.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.common.ExclusionSegment exclusions = 1;
     */
    exclusions: ExclusionSegment[];
}
/**
 * An audience segment to be excluded from an audience.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.ExclusionSegment
 */
export interface ExclusionSegment {
    /**
     * @generated from protobuf oneof: segment
     */
    segment: {
        oneofKind: "userList";
        /**
         * User list segment to be excluded.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.UserListSegment user_list = 1;
         */
        userList: UserListSegment;
    } | {
        oneofKind: undefined;
    };
}
/**
 * Dimension specifying users by their age.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.AgeDimension
 */
export interface AgeDimension {
    /**
     * Contiguous age range to be included in the dimension.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.common.AgeSegment age_ranges = 1;
     */
    ageRanges: AgeSegment[];
    /**
     * Include users whose age is not determined.
     *
     * @generated from protobuf field: optional bool include_undetermined = 2;
     */
    includeUndetermined?: boolean;
}
/**
 * Contiguous age range.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.AgeSegment
 */
export interface AgeSegment {
    /**
     * Minimum age to include. A minimum age must be specified and must be at
     * least 18. Allowed values are 18, 25, 35, 45, 55, and 65.
     *
     * @generated from protobuf field: optional int32 min_age = 1;
     */
    minAge?: number;
    /**
     * Maximum age to include. A maximum age need not be specified. If specified,
     * max_age must be greater than min_age, and allowed values are 24, 34, 44,
     * 54, and 64.
     *
     * @generated from protobuf field: optional int32 max_age = 2;
     */
    maxAge?: number;
}
/**
 * Dimension specifying users by their gender.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.GenderDimension
 */
export interface GenderDimension {
    /**
     * Included gender demographic segments.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.enums.GenderTypeEnum.GenderType genders = 1;
     */
    genders: GenderTypeEnum_GenderType[];
    /**
     * Include users whose gender is not determined.
     *
     * @generated from protobuf field: optional bool include_undetermined = 2;
     */
    includeUndetermined?: boolean;
}
/**
 * Dimension specifying users by their household income.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.HouseholdIncomeDimension
 */
export interface HouseholdIncomeDimension {
    /**
     * Included household income demographic segments.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.enums.IncomeRangeTypeEnum.IncomeRangeType income_ranges = 1;
     */
    incomeRanges: IncomeRangeTypeEnum_IncomeRangeType[];
    /**
     * Include users whose household income is not determined.
     *
     * @generated from protobuf field: optional bool include_undetermined = 2;
     */
    includeUndetermined?: boolean;
}
/**
 * Dimension specifying users by their parental status.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.ParentalStatusDimension
 */
export interface ParentalStatusDimension {
    /**
     * Included parental status demographic segments.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.enums.ParentalStatusTypeEnum.ParentalStatusType parental_statuses = 1;
     */
    parentalStatuses: ParentalStatusTypeEnum_ParentalStatusType[];
    /**
     * Include users whose parental status is undetermined.
     *
     * @generated from protobuf field: optional bool include_undetermined = 2;
     */
    includeUndetermined?: boolean;
}
/**
 * Dimension specifying users by their membership in other audience segments.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.AudienceSegmentDimension
 */
export interface AudienceSegmentDimension {
    /**
     * Included audience segments. Users are included if they belong to at least
     * one segment.
     *
     * @generated from protobuf field: repeated google.ads.googleads.v11.common.AudienceSegment segments = 1;
     */
    segments: AudienceSegment[];
}
/**
 * Positive audience segment.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.AudienceSegment
 */
export interface AudienceSegment {
    /**
     * @generated from protobuf oneof: segment
     */
    segment: {
        oneofKind: "userList";
        /**
         * User list segment.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.UserListSegment user_list = 1;
         */
        userList: UserListSegment;
    } | {
        oneofKind: "userInterest";
        /**
         * Affinity or In-market segment.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.UserInterestSegment user_interest = 2;
         */
        userInterest: UserInterestSegment;
    } | {
        oneofKind: "lifeEvent";
        /**
         * Live-event audience segment.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.LifeEventSegment life_event = 3;
         */
        lifeEvent: LifeEventSegment;
    } | {
        oneofKind: "detailedDemographic";
        /**
         * Detailed demographic segment.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.DetailedDemographicSegment detailed_demographic = 4;
         */
        detailedDemographic: DetailedDemographicSegment;
    } | {
        oneofKind: "customAudience";
        /**
         * Custom audience segment.
         *
         * @generated from protobuf field: google.ads.googleads.v11.common.CustomAudienceSegment custom_audience = 5;
         */
        customAudience: CustomAudienceSegment;
    } | {
        oneofKind: undefined;
    };
}
/**
 * User list segment.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.UserListSegment
 */
export interface UserListSegment {
    /**
     * The user list resource.
     *
     * @generated from protobuf field: optional string user_list = 1;
     */
    userList?: string;
}
/**
 * User interest segment.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.UserInterestSegment
 */
export interface UserInterestSegment {
    /**
     * The user interest resource.
     *
     * @generated from protobuf field: optional string user_interest_category = 1;
     */
    userInterestCategory?: string;
}
/**
 * Live event segment.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.LifeEventSegment
 */
export interface LifeEventSegment {
    /**
     * The life event resource.
     *
     * @generated from protobuf field: optional string life_event = 1;
     */
    lifeEvent?: string;
}
/**
 * Detailed demographic segment.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.DetailedDemographicSegment
 */
export interface DetailedDemographicSegment {
    /**
     * The detailed demographic resource.
     *
     * @generated from protobuf field: optional string detailed_demographic = 1;
     */
    detailedDemographic?: string;
}
/**
 * Custom audience segment.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.CustomAudienceSegment
 */
export interface CustomAudienceSegment {
    /**
     * The custom audience resource.
     *
     * @generated from protobuf field: optional string custom_audience = 1;
     */
    customAudience?: string;
}
declare class AudienceDimension$Type extends MessageType<AudienceDimension> {
    constructor();
    create(value?: PartialMessage<AudienceDimension>): AudienceDimension;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: AudienceDimension): AudienceDimension;
    internalBinaryWrite(message: AudienceDimension, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.AudienceDimension
 */
export declare const AudienceDimension: AudienceDimension$Type;
declare class AudienceExclusionDimension$Type extends MessageType<AudienceExclusionDimension> {
    constructor();
    create(value?: PartialMessage<AudienceExclusionDimension>): AudienceExclusionDimension;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: AudienceExclusionDimension): AudienceExclusionDimension;
    internalBinaryWrite(message: AudienceExclusionDimension, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.AudienceExclusionDimension
 */
export declare const AudienceExclusionDimension: AudienceExclusionDimension$Type;
declare class ExclusionSegment$Type extends MessageType<ExclusionSegment> {
    constructor();
    create(value?: PartialMessage<ExclusionSegment>): ExclusionSegment;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ExclusionSegment): ExclusionSegment;
    internalBinaryWrite(message: ExclusionSegment, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.ExclusionSegment
 */
export declare const ExclusionSegment: ExclusionSegment$Type;
declare class AgeDimension$Type extends MessageType<AgeDimension> {
    constructor();
    create(value?: PartialMessage<AgeDimension>): AgeDimension;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: AgeDimension): AgeDimension;
    internalBinaryWrite(message: AgeDimension, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.AgeDimension
 */
export declare const AgeDimension: AgeDimension$Type;
declare class AgeSegment$Type extends MessageType<AgeSegment> {
    constructor();
    create(value?: PartialMessage<AgeSegment>): AgeSegment;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: AgeSegment): AgeSegment;
    internalBinaryWrite(message: AgeSegment, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.AgeSegment
 */
export declare const AgeSegment: AgeSegment$Type;
declare class GenderDimension$Type extends MessageType<GenderDimension> {
    constructor();
    create(value?: PartialMessage<GenderDimension>): GenderDimension;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GenderDimension): GenderDimension;
    internalBinaryWrite(message: GenderDimension, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.GenderDimension
 */
export declare const GenderDimension: GenderDimension$Type;
declare class HouseholdIncomeDimension$Type extends MessageType<HouseholdIncomeDimension> {
    constructor();
    create(value?: PartialMessage<HouseholdIncomeDimension>): HouseholdIncomeDimension;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: HouseholdIncomeDimension): HouseholdIncomeDimension;
    internalBinaryWrite(message: HouseholdIncomeDimension, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.HouseholdIncomeDimension
 */
export declare const HouseholdIncomeDimension: HouseholdIncomeDimension$Type;
declare class ParentalStatusDimension$Type extends MessageType<ParentalStatusDimension> {
    constructor();
    create(value?: PartialMessage<ParentalStatusDimension>): ParentalStatusDimension;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ParentalStatusDimension): ParentalStatusDimension;
    internalBinaryWrite(message: ParentalStatusDimension, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.ParentalStatusDimension
 */
export declare const ParentalStatusDimension: ParentalStatusDimension$Type;
declare class AudienceSegmentDimension$Type extends MessageType<AudienceSegmentDimension> {
    constructor();
    create(value?: PartialMessage<AudienceSegmentDimension>): AudienceSegmentDimension;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: AudienceSegmentDimension): AudienceSegmentDimension;
    internalBinaryWrite(message: AudienceSegmentDimension, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.AudienceSegmentDimension
 */
export declare const AudienceSegmentDimension: AudienceSegmentDimension$Type;
declare class AudienceSegment$Type extends MessageType<AudienceSegment> {
    constructor();
    create(value?: PartialMessage<AudienceSegment>): AudienceSegment;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: AudienceSegment): AudienceSegment;
    internalBinaryWrite(message: AudienceSegment, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.AudienceSegment
 */
export declare const AudienceSegment: AudienceSegment$Type;
declare class UserListSegment$Type extends MessageType<UserListSegment> {
    constructor();
    create(value?: PartialMessage<UserListSegment>): UserListSegment;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: UserListSegment): UserListSegment;
    internalBinaryWrite(message: UserListSegment, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.UserListSegment
 */
export declare const UserListSegment: UserListSegment$Type;
declare class UserInterestSegment$Type extends MessageType<UserInterestSegment> {
    constructor();
    create(value?: PartialMessage<UserInterestSegment>): UserInterestSegment;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: UserInterestSegment): UserInterestSegment;
    internalBinaryWrite(message: UserInterestSegment, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.UserInterestSegment
 */
export declare const UserInterestSegment: UserInterestSegment$Type;
declare class LifeEventSegment$Type extends MessageType<LifeEventSegment> {
    constructor();
    create(value?: PartialMessage<LifeEventSegment>): LifeEventSegment;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: LifeEventSegment): LifeEventSegment;
    internalBinaryWrite(message: LifeEventSegment, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.LifeEventSegment
 */
export declare const LifeEventSegment: LifeEventSegment$Type;
declare class DetailedDemographicSegment$Type extends MessageType<DetailedDemographicSegment> {
    constructor();
    create(value?: PartialMessage<DetailedDemographicSegment>): DetailedDemographicSegment;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DetailedDemographicSegment): DetailedDemographicSegment;
    internalBinaryWrite(message: DetailedDemographicSegment, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.DetailedDemographicSegment
 */
export declare const DetailedDemographicSegment: DetailedDemographicSegment$Type;
declare class CustomAudienceSegment$Type extends MessageType<CustomAudienceSegment> {
    constructor();
    create(value?: PartialMessage<CustomAudienceSegment>): CustomAudienceSegment;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CustomAudienceSegment): CustomAudienceSegment;
    internalBinaryWrite(message: CustomAudienceSegment, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.CustomAudienceSegment
 */
export declare const CustomAudienceSegment: CustomAudienceSegment$Type;
export {};
