/**
 * Interface for registering benchmark suites
 */
import Executor from '../executors/Executor';
import { BenchmarkDeferredTestFunction, BenchmarkTestFunction } from '../BenchmarkTest';
import { BenchmarkSuiteProperties } from '../BenchmarkSuite';
/**
 * Importable interface that uses the currently installed global executor
 */
export default function registerSuite(name: string, descriptorOrFactory: BenchmarkSuiteDescriptor | BenchmarkSuiteFactory | Tests): void;
/**
 * Interface factory used by Executor
 */
export declare function getInterface(executor: Executor): {
    registerSuite(name: string, descriptorOrFactory: BenchmarkSuiteDescriptor | BenchmarkSuiteFactory | Tests): void;
    async: (testFunction: BenchmarkDeferredTestFunction, numCallsUntilResolution?: number | undefined) => BenchmarkTestFunction;
};
export interface BenchmarkInterface {
    registerSuite(name: string, descriptor: BenchmarkSuiteDescriptor | BenchmarkSuiteFactory | Tests): void;
    async: (testFunction: BenchmarkDeferredTestFunction, numCallsUntilResolution?: number) => BenchmarkTestFunction;
}
export interface Tests {
    [name: string]: BenchmarkSuiteDescriptor | BenchmarkTestFunction;
}
export declare type BenchmarkSuiteDescriptor = Partial<BenchmarkSuiteProperties> & {
    tests: Tests;
};
export interface BenchmarkSuiteFactory {
    (): BenchmarkSuiteDescriptor | Tests;
}
