import Executor from '../executors/Executor';
import { BenchmarkDeferredTestFunction, BenchmarkTestFunction } from '../BenchmarkTest';
import { BenchmarkSuiteProperties } from '../BenchmarkSuite';
export default function getInterface(executor: Executor): {
    registerSuite(descriptor: BenchmarkSuiteDescriptor | BenchmarkSuiteFactory): void;
    async: (testFunction: BenchmarkDeferredTestFunction, numCallsUntilResolution?: number) => BenchmarkTestFunction;
};
export interface BenchmarkInterface {
    registerSuite(descriptor: BenchmarkSuiteDescriptor): void;
    async: (testFunction: BenchmarkDeferredTestFunction, numCallsUntilResolution?: number) => BenchmarkTestFunction;
}
export declare type NestedBenchmarkSuiteDescriptor = Partial<BenchmarkSuiteProperties> & {
    tests: {
        [name: string]: NestedBenchmarkSuiteDescriptor | BenchmarkTestFunction;
    };
};
export declare type BenchmarkSuiteDescriptor = NestedBenchmarkSuiteDescriptor & {
    name: string;
};
export interface BenchmarkSuiteFactory {
    (): BenchmarkSuiteDescriptor;
}
