import { Page, Browser } from 'playwright-chromium';
import { RollupWatcher } from 'rollup';
import { ViteDevServer, InlineConfig, ResolvedConfig } from 'vite';

/**
 * Vite Dev Server when testing serve
 */
declare let viteServer: ViteDevServer;
/**
 * Root of the Vite fixture
 */
declare let rootDir: string;
/**
 * Path to the current test file
 */
declare let testPath: string;
/**
 * Path to the test folder
 */
declare let testDir: string;
/**
 * Test folder name
 */
declare let testName: string;
/**
 * current test using vite inline config
 * when using server.js is not possible to get the config
 */
declare let viteConfig: InlineConfig | undefined;
declare let serverLogs: string[];
declare let browserLogs: string[];
declare let browserErrors: Error[];
declare let resolvedConfig: ResolvedConfig;
declare let page: Page;
declare let browser: Browser;
declare let viteTestUrl: string;
declare let watcher: RollupWatcher | undefined;
declare function setViteUrl(url: string): void;
declare function startDefaultServe(): Promise<void>;
/**
 * Send the rebuild complete message in build watch
 */
declare function notifyRebuildComplete(watcher: RollupWatcher): Promise<RollupWatcher>;
declare function slash(p: string): string;
declare module 'vite' {
    interface InlineConfig {
        testConfig?: {
            baseRoute: string;
        };
    }
}
declare module 'vite' {
    interface UserConfig {
        /**
         * special test only hook
         *
         * runs after build and before preview
         */
        __test__?: () => void;
    }
}

export { browser, browserErrors, browserLogs, notifyRebuildComplete, page, resolvedConfig, rootDir, serverLogs, setViteUrl, slash, startDefaultServe, testDir, testName, testPath, viteConfig, viteServer, viteTestUrl, watcher };
