/**
 * 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 Mapping, MappingTestSuite, type Class, type MappingModelCoverageAnalysisResult, type RawLambda, MappingTest, type AtomicTest, type EmbeddedData, type Store, type DataElement, StoreTestData } from '@finos/legend-graph';
import { ActionState, type GeneratorFn } from '@finos/legend-shared';
import { LambdaEditorState } from '@finos/legend-query-builder';
import { type MappingEditorState } from '../MappingEditorState.js';
import { TESTABLE_TEST_TAB, TestablePackageableElementEditorState, TestableTestEditorState, TestableTestSuiteEditorState } from '../../testable/TestableEditorState.js';
import { EmbeddedDataEditorState } from '../../data/DataEditorState.js';
import type { EditorStore } from '../../../../EditorStore.js';
export declare class StoreTestDataState {
    readonly editorStore: EditorStore;
    readonly testDataState: MappingTestDataState;
    storeTestData: StoreTestData;
    embeddedEditorState: EmbeddedDataEditorState;
    dataElementModal: boolean;
    constructor(editorStore: EditorStore, testDataState: MappingTestDataState, value: StoreTestData);
    setDataElementModal(val: boolean): void;
    changeEmbeddedData(val: EmbeddedData): void;
}
export declare class MappingTestDataState {
    readonly editorStore: EditorStore;
    readonly mappingTestableState: MappingTestableState;
    selectedDataState: StoreTestDataState | undefined;
    dataHolder: MappingTest;
    showNewModal: boolean;
    constructor(editorStore: EditorStore, mappingTestableState: MappingTestableState, holder: MappingTest);
    initDefaultStore(): void;
    setShowModal(val: boolean): void;
    openStoreTestData(val: StoreTestData): void;
    deleteStoreTestData(val: StoreTestData): void;
    addStoreTestData(val: Store, type: string, dataElement: DataElement | undefined): void;
}
export declare class MappingTestState extends TestableTestEditorState {
    readonly parentState: MappingTestSuiteState;
    readonly mappingTestableState: MappingTestableState;
    readonly uuid: string;
    test: MappingTest;
    dataState: MappingTestDataState;
    constructor(editorStore: EditorStore, parentSuiteState: MappingTestSuiteState, test: MappingTest);
    defaultTab(): TESTABLE_TEST_TAB;
}
export declare class MappingTestSuiteQueryState extends LambdaEditorState {
    editorStore: EditorStore;
    parent: MappingTestSuite;
    isInitializingLambda: boolean;
    query: RawLambda;
    constructor(editorStore: EditorStore, parent: MappingTestSuite, query: RawLambda);
    get lambdaId(): string;
    setIsInitializingLambda(val: boolean): void;
    updateLamba(val: RawLambda): GeneratorFn<void>;
    convertLambdaObjectToGrammarString(options?: {
        pretty?: boolean | undefined;
    }): GeneratorFn<void>;
    convertLambdaGrammarStringToObject(): GeneratorFn<void>;
}
export declare class MappingTestSuiteState extends TestableTestSuiteEditorState {
    readonly mappingTestableState: MappingTestableState;
    suite: MappingTestSuite;
    testStates: MappingTestState[];
    selectTestState: MappingTestState | undefined;
    showCreateModal: boolean;
    queryState: MappingTestSuiteQueryState;
    constructor(editorStore: EditorStore, mappingTestableState: MappingTestableState, suite: MappingTestSuite);
    buildTestStates(): MappingTestState[];
    buildTestState(val: AtomicTest): MappingTestState | undefined;
    buildQueryState(): MappingTestSuiteQueryState;
    createStoreTestData(targetClass: Class | undefined): StoreTestData | undefined;
    addNewTest(id: string, _class: Class | undefined): void;
    setShowModal(val: boolean): void;
    debug(): GeneratorFn<void>;
}
export declare class CreateSuiteState {
    readonly editorStore: EditorStore;
    readonly mappingTestableState: MappingTestableState;
    showModal: boolean;
    isCreatingSuiteState: ActionState;
    constructor(editorStore: EditorStore, mappingTestableState: MappingTestableState);
    createAndAddTestSuite(_class: Class, suiteName: string, testName: string): GeneratorFn<void>;
}
export declare class MappingTestableState extends TestablePackageableElementEditorState {
    readonly mappingEditorState: MappingEditorState;
    mappingModelCoverageAnalysisState: ActionState;
    mappingModelCoverageAnalysisResult: MappingModelCoverageAnalysisResult | undefined;
    createSuiteState: CreateSuiteState | undefined;
    selectedTestSuite: MappingTestSuiteState | undefined;
    runningSuite: MappingTestSuite | undefined;
    constructor(mappingEditorState: MappingEditorState);
    get mapping(): Mapping;
    init(): void;
    openCreateModal(): void;
    closeCreateModal(): void;
    changeSuite(suite: MappingTestSuite): void;
    buildTestSuiteState(val: MappingTestSuite): MappingTestSuiteState;
    analyzeMappingModelCoverage(): GeneratorFn<void>;
    runSuite(suite: MappingTestSuite): GeneratorFn<void>;
}
//# sourceMappingURL=MappingTestableState.d.ts.map