import { AnalyticsClient } from '../client/analytics'; import { v4 as uuidv4 } from 'uuid'; type PluginWithId = { readonly Id: string; }; export type PluginClass = typeof Plugin & PluginWithId; export declare const BasePluginEventTypes: { pageview: string; event: string; }; export type PluginOptions = { client: AnalyticsClient; uuidGenerator?: typeof uuidv4; }; export declare abstract class Plugin { protected client: AnalyticsClient; protected uuidGenerator: typeof uuidv4; constructor({ client, uuidGenerator }: PluginOptions); abstract getApi(name: string): any; } export declare abstract class BasePlugin extends Plugin { protected action?: string; protected actionData: { [name: string]: string; }; private pageViewId; private nextPageViewId; private hasSentFirstPageView?; private currentLocation; private lastReferrer; constructor({ client, uuidGenerator }: PluginOptions); protected abstract addHooks(): void; protected abstract clearPluginData(): void; getApi(name: string): Function | null; setAction(action: string, options?: any): void; clearData(): void; getLocationInformation(eventType: string, payload: any): { pageViewId: string; referrer: string; location: string; hitType: string; }; protected updateLocationInformation(eventType: string, payload: any): void; getDefaultContextInformation(eventType: string): { title: string; encoding: string; language: string; userAgent: string; screenResolution: string; screenColor: string; time: number; eventId: string; }; private updateLocationForNextPageView; private getNextValues; private getCurrentLocationFromPayload; } export {};