declare global { interface Window { Mocha: any; mocha: any; describe: (description: string, fn: () => void) => void; it: (description: string, fn: () => void | Promise) => void; before: (fn: () => void | Promise) => void; after: (fn: () => void | Promise) => void; beforeEach: (fn: () => void | Promise) => void; afterEach: (fn: () => void | Promise) => void; chai?: { expect: any; assert: any; should: any; }; expect?: any; assert?: any; should?: any; MochaDetailedReporter?: { DetailedJsonReporter: any; }; [key: string]: any; } } export interface IBrowserTestEnvironment { createMochaInstance(sessionLabel: string): IBrowserMochaInstance; injectGlobals(mochaInstance: IBrowserMochaInstance): void; setupDOM?(): void; cleanupDOM?(): void; validateEnvironment(): BrowserEnvironmentValidation; } export interface IBrowserMochaInstance { suite: any; stats?: BrowserTestStats; run(): IBrowserMochaRunner; reporterOptions?: BrowserReporterOptions; timeout(ms: number): IBrowserMochaInstance; slow(ms: number): IBrowserMochaInstance; grep(pattern: string | RegExp): IBrowserMochaInstance; ui(name: string): IBrowserMochaInstance; reporter(reporter: any, options?: any): IBrowserMochaInstance; } export interface IBrowserMochaRunner { on(event: BrowserMochaEvent, callback: (...args: any[]) => void): void; once(event: BrowserMochaEvent, callback: (...args: any[]) => void): void; off(event: BrowserMochaEvent, callback: (...args: any[]) => void): void; stats?: BrowserTestStats; total: number; failures: any[]; } export type BrowserMochaEvent = 'start' | 'end' | 'suite' | 'suite end' | 'test' | 'test end' | 'hook' | 'hook end' | 'pass' | 'fail' | 'pending'; export interface BrowserTestStats { tests: number; passes: number; pending: number; failures: number; start?: Date; end?: Date; duration?: number; } export interface BrowserReporterOptions { outputToWindow?: string | boolean; windowVariableName?: string; clearOnRun?: boolean; showDiff?: boolean; inline?: boolean; [key: string]: any; } export interface BrowserTestEnvironmentConfig { defaultReporter?: BrowserReporterType; mochaOptions?: BrowserMochaOptions; enableDetailedReporter?: boolean; globalSetup?: () => void | Promise; globalTeardown?: () => void | Promise; domContainerSelector?: string; autoInjectGlobals?: boolean; validateBrowserSupport?: boolean; } export type BrowserReporterType = 'html' | 'json' | 'detailed' | 'spec' | 'dot' | 'nyan' | 'tap'; export interface BrowserMochaOptions { ui?: 'bdd' | 'tdd' | 'qunit' | 'exports'; reporter?: BrowserReporterType | any; timeout?: number; slow?: number; grep?: string | RegExp; reporterOptions?: BrowserReporterOptions; bail?: boolean; recursive?: boolean; globals?: string[]; checkLeaks?: boolean; fullTrace?: boolean; useColors?: boolean; diff?: boolean; } export interface BrowserEnvironmentValidation { valid: boolean; errors: string[]; warnings: string[]; features: BrowserFeatureSupport; performance: BrowserPerformanceInfo; } export interface BrowserFeatureSupport { es6Modules: boolean; asyncAwait: boolean; promises: boolean; fetch: boolean; webWorkers: boolean; localStorage: boolean; sessionStorage: boolean; indexedDB: boolean; console: boolean; requestAnimationFrame: boolean; } export interface BrowserPerformanceInfo { userAgent: string; platform: string; memory?: { used: number; total: number; limit: number; }; timing?: { domContentLoaded: number; loadComplete: number; }; } export {}; //# sourceMappingURL=browser.d.ts.map