import type { Dependencies } from '@ima/core';
import { AbstractAnalytic } from '@ima/plugin-analytic';
type ConsentSettings = {
    ad_storage?: 'denied' | 'granted';
    analytics_storage?: 'denied' | 'granted';
    personalization_storage?: 'denied' | 'granted';
};
export interface AnalyticGoogleSettings {
    consentSettings?: ConsentSettings;
    service: string;
    waitForUpdateTimeout?: number;
}
export interface PageViewData {
    page_location: string;
    page_path: string;
    page_referrer: string;
    page_route: string;
    page_status?: string;
    page_title: string;
}
/**
 * Google analytic 4 class
 */
export declare class GoogleAnalytics4 extends AbstractAnalytic {
    #private;
    _consentSettings?: ConsentSettings;
    static get $dependencies(): Dependencies;
    set _ga4Script(value: Gtag.Gtag);
    get _ga4Script(): Gtag.Gtag;
    get config(): AnalyticGoogleSettings;
    /**
     * Initializes the Google Analytics 4 plugin.
     */
    constructor(config: AnalyticGoogleSettings, ...rest: ConstructorParameters<typeof AbstractAnalytic>);
    /**
     * Hits custom event of given with given data
     */
    hit(eventName: string, eventData: Record<string, any>): void;
    /**
     * Hit page view event to analytic with defined data.
     */
    hitPageView(pageData: Record<string, any>): void;
    /**
     * Updates user consents in Google Analytics script
     *
     * @param purposeConsents Purpose Consents of TCModel, see: https://www.npmjs.com/package/@iabtcf/core#tcmodel
     */
    updateConsent(purposeConsents: Record<string, any>): void;
    /**
     * @override
     * @inheritdoc
     */
    _applyPurposeConsents(purposeConsents: Record<string, any>): void;
    /**
     * @override
     * @inheritdoc
     */
    _configuration(): void;
    /**
     * Returns page view data derived from pageData param.
     */
    _getPageViewData(pageData: Record<string, any>): PageViewData;
    /**
     * @override
     * @inheritdoc
     */
    _createGlobalDefinition(window: globalThis.Window): void;
}
export {};
//# sourceMappingURL=GoogleAnalytics4.d.ts.map