/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
/* eslint-disable @typescript-eslint/no-explicit-any */
declare class AvAnalytics {
  plugins: any[];

  attributePrefix: string;

  recursive: boolean;

  pageTracking: boolean;

  isPageTracking: boolean;

  hasInit: boolean;

  constructor(
    plugins: any | any[],
    promise?: PromiseConstructor,
    pageTracking?: boolean,
    autoTrack?: boolean,
    options?: Record<string, any>
  );

  startAutoTrack(): void;

  stopAutoTrack(): void;

  handleEvent(event: any): void;

  invalidEvent(event: any): boolean;

  getAnalyticAttrs(elem: any): any;

  startPageTracking(): void;

  stopPageTracking(): void;

  init(): void;

  setPageTracking(value?: any): void;

  trackEvent(properties: any): Promise<any[]>;

  trackPageView(url?: string): Promise<any[]>;
}

/* eslint-disable @typescript-eslint/no-explicit-any */
declare class AvAnalyticsPlugin {
  constructor(enabled?: boolean);

  trackEvent(): any;

  trackPageView(): any;

  isEnabled(): boolean;
}

/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
/* eslint-disable @typescript-eslint/no-explicit-any */


declare class AvSplunkAnalytics extends AvAnalyticsPlugin {
  constructor(AvLogMessages: any, enabled?: boolean);

  trackEvent(properties: any): any;

  trackPageView(url: string): any;
}

/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
/* eslint-disable @typescript-eslint/no-explicit-any */


declare class AvTelemetryAnalytics extends AvAnalyticsPlugin {
  constructor(
    AvLogMessages: any,
    enabled?: boolean,
    source_system: string,
    contact: string,
    owner: string,
    sessionId?: string
  );

  trackEvent(properties: any): any;

  trackPageView(url: string): any;
}

/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
/* eslint-disable @typescript-eslint/no-explicit-any */


declare class AvDmaAnalytics extends AvAnalyticsPlugin {
  constructor(AvLogMessages: any, enabled?: boolean);

  trackEvent(properties: any): any;

  trackPageView(url: string): any;
}

export { AvAnalytics, AvAnalyticsPlugin, AvDmaAnalytics, AvSplunkAnalytics, AvTelemetryAnalytics };
