/* eslint-disable @typescript-eslint/no-explicit-any */
declare module "@financial-times/o-tracking";
declare module "@financial-times/o-viewport";

export {};
declare global {
  export interface Window {
    dataLayer: any;
    gtag: any;
    permutive: {
      addon: any;
      consent: CallableConsent;
      track: any;
    };
    _brandmetrics: any;
    gtmCategory?: string; //channels only
    isOvideoPlayer?: boolean; //channels only
  }

  export interface ConsentOptions {
    opt_in?: boolean;
    token?: string;
  }

  export interface CallableConsent {
    ({}: ConsentOptions): void;
  }

  export interface VideoTrackingOptions {
    isOTracking?: boolean;
    isGATracking?: boolean;
    isPermutiveTracking?: boolean;
    GA_datalayer?: any;
    GA_milestones?: number[];
    oTracking_milestones?: number[];
    route_url?: string;
  }
}
