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 { FrequencyCapTimeUnitEnum_FrequencyCapTimeUnit } from "../enums/frequency_cap_time_unit";
import { FrequencyCapEventTypeEnum_FrequencyCapEventType } from "../enums/frequency_cap_event_type";
import { FrequencyCapLevelEnum_FrequencyCapLevel } from "../enums/frequency_cap_level";
/**
 * A rule specifying the maximum number of times an ad (or some set of ads) can
 * be shown to a user over a particular time period.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.FrequencyCapEntry
 */
export interface FrequencyCapEntry {
    /**
     * The key of a particular frequency cap. There can be no more
     * than one frequency cap with the same key.
     *
     * @generated from protobuf field: google.ads.googleads.v11.common.FrequencyCapKey key = 1;
     */
    key?: FrequencyCapKey;
    /**
     * Maximum number of events allowed during the time range by this cap.
     *
     * @generated from protobuf field: optional int32 cap = 3;
     */
    cap?: number;
}
/**
 * A group of fields used as keys for a frequency cap.
 * There can be no more than one frequency cap with the same key.
 *
 * @generated from protobuf message google.ads.googleads.v11.common.FrequencyCapKey
 */
export interface FrequencyCapKey {
    /**
     * The level on which the cap is to be applied (for example, ad group ad, ad
     * group). The cap is applied to all the entities of this level.
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.FrequencyCapLevelEnum.FrequencyCapLevel level = 1;
     */
    level: FrequencyCapLevelEnum_FrequencyCapLevel;
    /**
     * The type of event that the cap applies to (for example, impression).
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.FrequencyCapEventTypeEnum.FrequencyCapEventType event_type = 3;
     */
    eventType: FrequencyCapEventTypeEnum_FrequencyCapEventType;
    /**
     * Unit of time the cap is defined at (for example, day, week).
     *
     * @generated from protobuf field: google.ads.googleads.v11.enums.FrequencyCapTimeUnitEnum.FrequencyCapTimeUnit time_unit = 2;
     */
    timeUnit: FrequencyCapTimeUnitEnum_FrequencyCapTimeUnit;
    /**
     * Number of time units the cap lasts.
     *
     * @generated from protobuf field: optional int32 time_length = 5;
     */
    timeLength?: number;
}
declare class FrequencyCapEntry$Type extends MessageType<FrequencyCapEntry> {
    constructor();
    create(value?: PartialMessage<FrequencyCapEntry>): FrequencyCapEntry;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: FrequencyCapEntry): FrequencyCapEntry;
    internalBinaryWrite(message: FrequencyCapEntry, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.FrequencyCapEntry
 */
export declare const FrequencyCapEntry: FrequencyCapEntry$Type;
declare class FrequencyCapKey$Type extends MessageType<FrequencyCapKey> {
    constructor();
    create(value?: PartialMessage<FrequencyCapKey>): FrequencyCapKey;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: FrequencyCapKey): FrequencyCapKey;
    internalBinaryWrite(message: FrequencyCapKey, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message google.ads.googleads.v11.common.FrequencyCapKey
 */
export declare const FrequencyCapKey: FrequencyCapKey$Type;
export {};
