/**
 * Copyright (c) 2020-present, Goldman Sachs
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import { type TestAssertion, type AssertionStatus, type ValueSpecification, AssertFail, type TestResult, EqualToJson, EqualToJsonAssertFail, EqualTo } from '@finos/legend-graph';
import { type GeneratorFn, ActionState } from '@finos/legend-shared';
import type { EditorStore } from '../../../EditorStore.js';
import { TESTABLE_RESULT } from '../../../sidebar-state/testable/GlobalTestRunnerState.js';
import type { TestableTestEditorState } from './TestableEditorState.js';
export declare enum TEST_ASSERTION_TAB {
    EXPECTED = "EXPECTED",
    RESULT = "RESULT"
}
export declare abstract class TestAssertionStatusState {
    resultState: TestAssertionResultState;
    status: AssertionStatus;
    constructor(resultState: TestAssertionResultState, status: AssertionStatus);
}
export declare class AssertFailState extends TestAssertionStatusState {
    status: AssertFail;
    constructor(resultState: TestAssertionResultState, status: AssertFail);
}
export declare class EqualToAssertFailState extends AssertFailState {
    diffModal: boolean;
    constructor(resultState: TestAssertionResultState, status: AssertionStatus);
    setDiffModal(val: boolean): void;
}
export declare class EqualToJsonAssertFailState extends AssertFailState {
    status: EqualToJsonAssertFail;
    diffModal: boolean;
    constructor(resultState: TestAssertionResultState, status: EqualToJsonAssertFail);
    setDiffModal(val: boolean): void;
}
export declare class UnsupportedAssertionStatusState extends TestAssertionStatusState {
}
export declare class TestAssertionResultState {
    testResult: TestResult | undefined;
    statusState: TestAssertionStatusState | Map<string, TestAssertionResultState> | undefined;
    readonly editorStore: EditorStore;
    readonly assertionState: TestAssertionEditorState;
    constructor(editorStore: EditorStore, assertionState: TestAssertionEditorState);
    setTestResult(val: TestResult | undefined): void;
    buildStatus(val: AssertionStatus | undefined): TestAssertionStatusState | undefined;
    get result(): TESTABLE_RESULT;
}
export declare abstract class TestAssertionState {
    readonly editorStore: EditorStore;
    assertion: TestAssertion;
    result: TestAssertionResultState;
    constructor(editorStore: EditorStore, assertionState: TestAssertionEditorState);
    abstract generateExpected(status: AssertFail): boolean;
    abstract generateBare(): TestAssertion;
    abstract label(): string;
    abstract get supportsGeneratingAssertion(): boolean;
}
export declare class EqualToJsonAssertionState extends TestAssertionState {
    assertion: EqualToJson;
    setExpectedValue(val: string): void;
    get supportsGeneratingAssertion(): boolean;
    generateExpected(status: AssertFail): boolean;
    generateBare(): TestAssertion;
    label(): string;
}
export declare class EqualToAssertionState extends TestAssertionState {
    assertion: EqualTo;
    valueSpec: ValueSpecification;
    constructor(editorStore: EditorStore, assertionState: TestAssertionEditorState, valueSpec: ValueSpecification);
    updateValueSpec(val: ValueSpecification): void;
    generateExpected(status: AssertFail): boolean;
    generateBare(): TestAssertion;
    label(): string;
    get supportsGeneratingAssertion(): boolean;
}
export declare class UnsupportedAssertionState extends TestAssertionState {
    get supportsGeneratingAssertion(): boolean;
    generateBare(): TestAssertion;
    generateExpected(status: AssertFail): boolean;
    label(): string;
}
export declare class TestAssertionEditorState {
    readonly editorStore: EditorStore;
    readonly testState: TestableTestEditorState;
    assertionState: TestAssertionState;
    assertionResultState: TestAssertionResultState;
    assertion: TestAssertion;
    selectedTab: TEST_ASSERTION_TAB;
    generatingExpectedAction: ActionState;
    constructor(editorStore: EditorStore, assertion: TestAssertion, testState: TestableTestEditorState);
    setSelectedTab(val: TEST_ASSERTION_TAB): void;
    generateExpected(): GeneratorFn<void>;
    buildAssertionState(assertion: TestAssertion): TestAssertionState;
}
//# sourceMappingURL=TestAssertionState.d.ts.map