import { Config } from "./config";
import { AsyncEmitter, InterceptedEvent, Events, InterceptHandler, Interceptor } from "./events";
import Errors from "./errors";
import { ConfigInput } from "./config/types";
export declare abstract class BaseTestplane extends AsyncEmitter {
    protected _interceptors: Interceptor[];
    protected _config: Config;
    protected _initEventEmited: boolean;
    private _pendingConfig?;
    static create<T extends BaseTestplane>(this: new (config?: string | ConfigInput) => T, config?: string | ConfigInput): Promise<T>;
    protected constructor(config?: string | ConfigInput);
    protected _setup(): Promise<void>;
    /** @note Only the first call returns a promise to wait for INIT handlers to complete, subsequent calls return immediately to avoid deadlocks */
    protected _emitInitEventOnce(): Promise<void>;
    get config(): Config;
    get events(): Events;
    get errors(): typeof Errors;
    intercept(event: InterceptedEvent, handler: InterceptHandler): this;
    abstract isWorker(): boolean;
    protected _setLogLevel(): void;
    protected _loadPlugins(): void;
}
