/**
 * 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, AssertFail, type TestResult, EqualToJson, EqualToJsonAssertFail } 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 {
    ASSERTION_SETUP = "ASSERTION_SETUP",
    ASSERTION_RESULT = "ASSERTION_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 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): void;
    abstract generateBare(): TestAssertion;
    abstract label(): string;
}
export declare class EqualToJsonAssertionState extends TestAssertionState {
    assertion: EqualToJson;
    setExpectedValue(val: string): void;
    generateExpected(status: AssertFail): void;
    generateBare(): TestAssertion;
    label(): string;
}
export declare class UnsupportedAssertionState extends TestAssertionState {
    generateBare(): TestAssertion;
    generateExpected(status: AssertFail): void;
    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