import { Stage } from './stage'; import { Context } from './context'; declare type StageHandler = (stage: Stage) => (void | Promise); declare type ContextHandler = (context: Context, stage: Stage) => (void | Promise); interface PerformRecipes { message: string; handler?: ContextHandler; spec?: Spec; } export declare class Spec { protected beforeHandlers: StageHandler[]; protected beforeEachHandlers: ContextHandler[]; protected afterHandlers: StageHandler[]; protected afterEachHandlers: ContextHandler[]; protected performRecipes: PerformRecipes[]; protected onlyEnabled: boolean; protected _stage: Stage; parent: Spec; constructor(stage?: Stage, parent?: Spec); set stage(s: Stage); get stage(): Stage; hasOnly(): boolean; isRoot(): boolean; before(handler: StageHandler, append?: boolean): this; beforeEach(handler: ContextHandler, append?: boolean): this; after(handler: StageHandler, append?: boolean): this; afterEach(handler: ContextHandler, append?: boolean): this; spec(message: string, spec: Spec): this; test(message: string, handler: ContextHandler): this; skip(message: string, handler?: ContextHandler): this; only(message: string, handler: ContextHandler): this; perform(): Promise; protected performBegin(): Promise; protected performEnd(): Promise; protected performSpec(recipe: PerformRecipes): Promise; protected performTest(recipe: PerformRecipes): Promise; protected performBefore(): Promise; protected performAfter(): Promise; protected performBeforeEach(context: Context): Promise; protected performAfterEach(context: Context): Promise; protected createStage(): Stage; protected createContext(): Context; } export {};