import { CONSENT_ACTION } from '../DataFacade/enums';
import { DataExchangeSetting } from '../SettingsV2/interfaces';
import { DataTransferObject } from '../DataFacade/interfaces';
export default class EventDispatcher {
    private static instance;
    private dataLayerNames;
    private windowEventNames;
    private dataLayer;
    private blockDataLayerPush;
    private isUniversalEventTrackingDisabled;
    private constructor();
    static getInstance(): EventDispatcher;
    /**
     * When activated, events will be pushed to the data layer
     *
     * @param shouldBlock
     */
    setBlockDataLayerPush(shouldBlock: boolean): void;
    /**
     * When present, events will not be pushed to the window.uetq
     *
     * @param isDisabled
     */
    setUetDisabled(isDisabled: boolean): void;
    /**
     * Determine if data layer pushes on deny is enabled
     */
    shouldBlockDataLayerPush(): boolean;
    static resetInstance(): void;
    init(dataExchangeSettings: DataExchangeSetting[]): void;
    setDataLayer(data: Window, dataLayerName: string): void;
    getDataLayer(): Map<string, any>;
    dispatch(dataTransferObjects: DataTransferObject[], isConsentModeEnabled?: boolean, consentAction?: CONSENT_ACTION): void;
    private isValidDataLayer;
    pushEventsToDataLayer(dataTransferObjects: DataTransferObject[], isConsentModeEnabled?: boolean, consentAction?: CONSENT_ACTION): void;
    private dispatchWindowEvents;
}
