import Suite, { SuiteProperties } from '../Suite';
import Test, { TestFunction } from '../Test';
import { Executor } from '../executors/Executor';
export default function registerSuite(name: string, descriptorOrFactory: ObjectSuiteDescriptor | ObjectSuiteFactory | Tests): void;
export declare function getInterface(executor: Executor): {
    registerSuite(name: string, descriptorOrFactory: ObjectSuiteDescriptor | ObjectSuiteFactory | Tests): void;
};
export interface ObjectInterface {
    registerSuite(name: string, mainDescriptor: ObjectSuiteDescriptor | ObjectSuiteFactory | Tests): void;
}
export interface Tests {
    [name: string]: ObjectSuiteDescriptor | TestFunction | Tests;
}
export interface ObjectSuiteDescriptor extends Partial<SuiteProperties> {
    tests: Tests;
}
export interface ObjectSuiteFactory {
    (): ObjectSuiteDescriptor | Tests;
}
export declare function isSuiteDescriptorFactory<T>(value: any): value is T;
export declare function createSuite<S extends typeof Suite, T extends typeof Test>(name: string, parent: Suite, descriptor: ObjectSuiteDescriptor | Tests, SuiteClass: S, TestClass: T): Suite;
