import { DoCheck, ElementRef, KeyValueDiffers, OnInit } from '@angular/core';
import * as i0 from "@angular/core";
/**
 * SME directive to wrap around telemetry tags for convenience and control. JSLL and 1DS use these to add information to telemetry events.
 */
export declare class TelemetryDirective implements DoCheck, OnInit {
    private elementRef;
    private kvDiffers;
    /**
      * JSLL/1DS main tag labels - all tags are supported (data-bi-*) but these are the main labels and are
      * specifically checked for in various cases.
      */
    private static readonly idLabel;
    private static readonly areaNameLabel;
    private static readonly slotNumberLabel;
    private static readonly contentNameLabel;
    private static readonly contentSourceLabel;
    private static readonly templateNameLabel;
    private static readonly productIdLabel;
    private static readonly contentTypeLabel;
    private static readonly disableAutomaticTrackingLabel;
    private static readonly disableElementTrackingLabel;
    private static readonly directivePrefix;
    private static readonly labeledDirectives;
    /**
     * The source name to use for logging
     */
    protected get logSourceName(): string;
    /**
     * Content to specify custom directives on
     */
    smeTelemetry: any;
    /**
     * Adds data-bi-id
     */
    set telemetryId(value: string);
    get telemetryId(): string;
    /**
     * Adds data-bi-area
     */
    set areaName(value: string);
    get areaName(): string;
    /**
     * Adds data-bi-slot
     */
    set slotNumber(value: string);
    get slotNumber(): string;
    /**
     * Adds data-bi-name
     */
    set contentName(value: string);
    get contentName(): string;
    /**
     * Adds data-bi-source
     */
    set contentSource(value: string);
    get contentSource(): string;
    /**
     * Adds data-bi-type
     */
    set contentType(value: string);
    get contentType(): string;
    /**
     * Adds data-bi-view
     */
    set templateName(value: string);
    get templateName(): string;
    /**
     * Adds data-bi-product
     */
    set productId(value: string);
    get productId(): string;
    /**
     * Adds each field in JSON object to element. Allows for custom element typings. Data-m has a similar behavior, but splitting up
     * the individual fields works together with lineage component, whereas specifying data-m blocks the lineage handling (ie cannot pull
     * tags from higher or lower in the DOM tree)
     * This uses the ngDoCheck to change DOM mainly, this setter is used for the initial object set.
     */
    set dataBlob(value: any);
    get dataBlob(): any;
    /**
     * Adds data-bi-mto
     * Removes the element from being subject to default automatic tracking.
     */
    set disableAutomaticTracking(value: boolean);
    get disableAutomaticTracking(): boolean;
    /**
     * Adds data-bi-dnt
     * Removes element from all telemetry events.
     */
    set disableElementTracking(value: boolean);
    get disableElementTracking(): boolean;
    /**
     * Initialize differ for data blob so it constantly updates based on object.
     * Also, check if smeTelemetry specified. If so, search for anything with smeTelemetry prefix and add data-bi telemetry
     * tags. This allows for any singular addition of a data-bi- tag, as opposed to dataBlob which uses an object to retrieve fields.
     * Due to Angular limitations we cannot bind to any custom SmeTelemetry____ directive, limiting it to mainly use for
     * static data-bi- labels. Custom directives, if not part of data blob, should primarily stem from the data-bi-
     * dictionary for adding target fields in telemetry.
     * See https://martech.azurewebsites.net/website-tools/jsll/references/data-bi-event-dictionary/
     * @param elementRef    Element with the directive
     * @param kvDiffers     KeyValue differs for dataBlob
     */
    constructor(elementRef: ElementRef, kvDiffers: KeyValueDiffers);
    private dataBlobDiffer;
    /**
     * Internal variable holders
     */
    private internalId;
    private internalAreaName;
    private internalSlotNumber;
    private internalContentName;
    private internalContentSource;
    private internalTemplateName;
    private internalProductId;
    private internalContentType;
    private internalDisableAutomaticTracking;
    private internalDisableElementTracking;
    private internalDataBlob;
    ngOnInit(): void;
    /**
     * Handle changes to data blob object, needed b/c data object will update without triggering setter.
     * Selectively update DOM fields based on individual changes.
     */
    ngDoCheck(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TelemetryDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<TelemetryDirective, "[smeTelemetry], [smeTelemetryId], [smeTelemetryArea], [smeTelemetrySlot], [smeTelemetryContentName],    [smeTelemetryContentSource], [smeTelemetryContentType], [smeTelemetryTemplate], [smeTelemetryProduct],    [smeTelemetryDataBlob], [smeTelemetryDisableAuto], [smeTelemetryDisableElement]", never, { "smeTelemetry": "smeTelemetry"; "telemetryId": "smeTelemetryId"; "areaName": "smeTelemetryArea"; "slotNumber": "smeTelemetrySlot"; "contentName": "smeTelemetryContentName"; "contentSource": "smeTelemetryContentSource"; "contentType": "smeTelemetryContentType"; "templateName": "smeTelemetryTemplate"; "productId": "smeTelemetryProduct"; "dataBlob": "smeTelemetryDataBlob"; "disableAutomaticTracking": "smeTelemetryDisableAuto"; "disableElementTracking": "smeTelemetryDisableElement"; }, {}, never, never, false, never>;
}
