///
import { TestSuiteContext } from "./test-suite-context.class";
import { Maybe, SimpleLogger } from "@sakuli/commons";
import { FinishedMeasurable, Measurable, StartedMeasurable } from "./measureable.interface";
import { TestCaseContext } from "./test-case-context.class";
import { TestStepContext } from "./test-step-context.class";
import { TestActionContext } from "./test-action-context.class";
import { TestExecutionContextRaw } from "./test-execution-context-raw.interface";
import { TestContextEntityState } from "./test-context-entity-state.class";
import { EventEmitter } from "events";
import { END_EXECUTION, END_TESTACTION, END_TESTCASE, END_TESTSTEP, END_TESTSUITE, START_EXECUTION, START_TESTACTION, START_TESTCASE, START_TESTSTEP, START_TESTSUITE, TestActionChangeListener, TestActionEndListener, TestCaseChangeListener, TestCaseEndListener, TestStepChangeListener, TestStepEndListener, TestSuiteChangeListener, TestSuiteEndListener, UPDATE_TESTACTION, UPDATE_TESTCASE, UPDATE_TESTSTEP, UPDATE_TESTSUITE } from "./test-execution-context.events";
export declare type TestExecutionChangeListener = (state: TestExecutionContext) => void;
/**
* An execution-context is the main bridge between sakuli and any api that runs on sakuli
*
*/
export declare class TestExecutionContext extends EventEmitter implements Measurable {
readonly logger: SimpleLogger;
startDate: Date | null;
endDate: Date | null;
readonly testSuites: TestSuiteContext[];
error: Maybe;
constructor(logger: SimpleLogger);
on(e: typeof START_EXECUTION, cb: (e: TestExecutionContext) => void): this;
on(e: typeof END_EXECUTION, cb: (e: TestExecutionContext) => void): this;
on(e: typeof START_TESTSUITE, cb: TestSuiteChangeListener): this;
on(e: typeof UPDATE_TESTSUITE, cb: TestSuiteChangeListener): this;
on(e: typeof END_TESTSUITE, cb: TestSuiteEndListener): this;
on(e: typeof START_TESTCASE, cb: TestCaseChangeListener): this;
on(e: typeof UPDATE_TESTCASE, cb: TestCaseChangeListener): this;
on(e: typeof END_TESTCASE, cb: TestCaseEndListener): this;
on(e: typeof START_TESTSTEP, cb: TestStepChangeListener): this;
on(e: typeof UPDATE_TESTSTEP, cb: TestStepChangeListener): this;
on(e: typeof END_TESTSTEP, cb: TestStepEndListener): this;
on(e: typeof START_TESTACTION, cb: TestActionChangeListener): this;
on(e: typeof UPDATE_TESTACTION, cb: TestActionChangeListener): this;
on(e: typeof END_TESTACTION, cb: TestActionEndListener): this;
on(e: "change", cb: (e: TestExecutionContext) => void): this;
startExecution(): void;
isExecutionStarted(): this is StartedMeasurable;
isExecutionFinished(): this is FinishedMeasurable;
endExecution(): void;
get entities(): (TestActionContext | TestStepContext | TestCaseContext | TestSuiteContext)[];
get testCases(): TestCaseContext[];
get testSteps(): TestStepContext[];
get testActions(): TestActionContext[];
get duration(): number;
startTestSuite(testSuite?: Partial): void;
getCurrentTestSuite(): Maybe;
updateCurrentTestSuite(testSuite: Partial): TestSuiteContext;
private _updateCurrentTestSuite;
endTestSuite(): void;
startTestCase(testCase?: Partial): void;
getCurrentTestCase(): Maybe;
updateCurrentTestCase(testCaseContext: Partial): TestCaseContext & Partial;
private _updateCurrentTestCase;
endTestCase(): void;
startTestStep(testStep?: Partial): void;
updateCurrentTestStep(testStep: Partial): TestStepContext & Partial;
private _updateCurrentTestStep;
endTestStep(): void;
getCurrentTestStep(): Maybe;
startTestAction(testAction: Partial): void;
updateCurrentTestAction(testAction: Partial): TestActionContext;
/**
* The actual logic to update a test action - will not emit any event
* @param testAction
* @private
*/
private _updateCurrentTestAction;
endTestAction(): void;
getCurrentTestAction(): Maybe;
private emitChange;
onChange(listener: TestExecutionChangeListener): void;
get resultState(): TestContextEntityState;
toJson(): TestExecutionContextRaw;
}
//# sourceMappingURL=test-execution-context.class.d.ts.map