/* eslint-disable no-trailing-spaces */
interface BrowserTraits {
  isIncognito: boolean;
  hasCanvasNoise: boolean;
  possibleCountryCodes: string[];
}

interface ResponseData {
  /**
   * [API](https://overpoweredjs.bot/docs/response/clusterUUID)
   */
  clusterUUID: string;
   /**
   * [API](https://overpoweredjs.bot/docs/response/uniquenessScore)
   */
  uniquenessScore: number;
   /**
   * [API](https://overpoweredjs.bot/docs/response/botScore)
   */
  botScore: number;
   /**
   * [API](https://overpoweredjs.bot/docs/response/browserTraits)
   */
  browserTraits: BrowserTraits;
   /**
   * [API](https://overpoweredjs.bot/docs/response/hash)
   */
  hash: string;
   /**
   * [API](https://overpoweredjs.bot/docs/response/authToken)
   */
  authToken: string;
}

declare module 'ovpjs' {
  const ovpjs: (options: {
    /**
     * API Key
     * 
     * [Create an API Key](https://overpoweredjs.bot/dashboard)
     */
    API_KEY: string;
    onError: (e: Error) => void;
  }) => Promise<ResponseData>;

  export default ovpjs;
}

declare global {
  interface Window {
    ovpjs: typeof import('ovpjs')
  }
}
