import type { Config, ConfigOptions } from 'karma';
import type { KarmaTypescriptConfig } from 'karma-typescript';
declare module 'karma' {
    interface ConfigOptions {
        karmaTypescriptConfig?: KarmaTypescriptConfig | undefined;
    }
    interface Config extends ConfigOptions {
        preset?: string;
    }
}
interface KarmaConfiguratorOptions {
    /** Will be shown in the BrowserStack Automation UI */
    projectName: string;
    /** List of files/patterns to load in the browser. Don't forget the necessary .d.ts files. */
    includeFiles: ConfigOptions['files'];
    /** Path to the tsconfig.json file that will be used to compile the TS files given in `includeFiles` */
    tsconfigPath?: string;
    /** Retries of failed tests are disabled in local (not CI) environment. Set this to `true` to enable. */
    alwaysRetryTests?: boolean;
    /** A callback to add custom configuration. It's called when the basic configuration is complete. */
    configureCustom?: (karmaConfig: Config) => void | Promise<void>;
}
/**
 * Makes a function that applies an opinionated configuration, used by Fingerprint's projects, to Karma.
 *
 * When a Karma configuration file is created, add `--preset local`, `--preset browserstack` or
 * `--preset browserstack-beta` to the Karma command to choose where to run the tests.
 *
 * @example karma.conf.ts in the project's root directory
 * module.exports = makeKarmaConfigurator({ ... })
 *
 * @example Run tests in the local browsers
 * karma start --preset local --single-run
 */
export declare function makeKarmaConfigurator(options: KarmaConfiguratorOptions): (karmaConfig: Config) => void;
export {};
