/**
 * 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 AccessPoint, type PackageableElement, type TestSuite, DataProduct, DataProductTestSuite, BaseDataResolver, DataProductAccessPointTest, IngestDefinition } from '@finos/legend-graph';
import { type GeneratorFn, ActionState } from '@finos/legend-shared';
import type { EditorStore } from '../../../../EditorStore.js';
import type { DataProductEditorState } from '../DataProductEditorState.js';
import { RelationElementsDataState, RelationElementState } from '../../data/EmbeddedDataState.js';
import { TESTABLE_RESULT } from '../../../../sidebar-state/testable/GlobalTestRunnerState.js';
import { TestableTestEditorState, TestableTestSuiteEditorState } from '../../testable/TestableEditorState.js';
export declare class DataProductTestState extends TestableTestEditorState {
    readonly suiteState: DataProductTestSuiteState;
    test: DataProductAccessPointTest;
    readonly uuid: string;
    /** Wraps assertion.expected — drives both column definitions and test data rows. */
    testDataRelationState: RelationElementState | undefined;
    constructor(suiteState: DataProductTestSuiteState, test: DataProductAccessPointTest);
    private buildTestDataRelationState;
    get accessPointLabel(): string;
}
export declare class DataProductElementTestDataState {
    readonly testDataState: DataProductTestDataState;
    readonly testData: BaseDataResolver;
    readonly editorStore: EditorStore;
    readonly relationElementsDataState: RelationElementsDataState | undefined;
    constructor(testDataState: DataProductTestDataState, testData: BaseDataResolver);
    get element(): PackageableElement;
    get elementName(): string;
    get itemLabel(): string;
    private initAccessorOptions;
    private refreshAccessorOptions;
}
export declare class DataProductTestDataState {
    readonly editorStore: EditorStore;
    readonly suiteState: DataProductTestSuiteState;
    elementTestDataStates: DataProductElementTestDataState[];
    selectedElementTestDataState: DataProductElementTestDataState | undefined;
    showAddElementModal: boolean;
    constructor(suiteState: DataProductTestSuiteState, options?: {
        selectedElementPath?: string | undefined;
        selectedItemId?: string | undefined;
    });
    get availableElementsToAdd(): PackageableElement[];
    setShowAddElementModal(val: boolean): void;
    addElement(path: string): void;
    deleteElement(elementState: DataProductElementTestDataState): void;
    refreshElementTestDataStates(options?: {
        selectedElementPath?: string | undefined;
    }): void;
    setSelectedElementTestDataState(val: DataProductElementTestDataState | undefined): void;
}
export declare class DataProductTestSuiteState extends TestableTestSuiteEditorState {
    readonly testableState: DataProductTestableState;
    suite: DataProductTestSuite;
    testStates: DataProductTestState[];
    selectTestState: DataProductTestState | undefined;
    testDataState: DataProductTestDataState;
    constructor(editorStore: EditorStore, testableState: DataProductTestableState, suite: DataProductTestSuite);
    refreshTestDataState(): void;
    buildTestStates(): void;
    deleteTest(test: DataProductAccessPointTest): void;
    addNewTest(testName: string, accessPointId: string): GeneratorFn<string | undefined>;
    get result(): TESTABLE_RESULT;
}
export declare class DataProductTestableState {
    readonly editorStore: EditorStore;
    readonly dataProductEditorState: DataProductEditorState;
    suiteStates: DataProductTestSuiteState[];
    selectedSuiteState: DataProductTestSuiteState | undefined;
    runningAllTestsState: ActionState;
    showCreateSuiteModal: boolean;
    showCreateTestModal: boolean;
    suiteToRename: TestSuite | undefined;
    constructor(dataProductEditorState: DataProductEditorState);
    get dataProduct(): DataProduct;
    setSelectedSuiteState(val: DataProductTestSuiteState | undefined): void;
    setShowCreateSuiteModal(val: boolean): void;
    setShowCreateTestModal(val: boolean): void;
    setSuiteToRename(val: TestSuite | undefined): void;
    changeSuite(suite: TestSuite): void;
    /**
     * Build suite states from the DataProduct.tests array.
     * Call this on init and after grammar→form roundtrip.
     */
    init(): void;
    /** Returns all graph ingest elements available in the model. */
    get availableIngestSources(): IngestDefinition[];
    /** Access points on the DataProduct being edited (used for test's accessPointId). */
    get ownAccessPoints(): AccessPoint[];
    getOwnAccessPointLabel(accessPointId: string): string;
    /**
     * Create a new test suite with one initial test on the DataProduct.
     * Test data is auto-seeded for the selected access point on the current
     * DataProduct (no element picker required).
     * Columns are inferred via the engine when possible.
     */
    createSuite(suiteName: string, testName: string, accessPointId: string): GeneratorFn<string | undefined>;
    deleteSuite(suiteState: DataProductTestSuiteState): void;
    runAllTests(): GeneratorFn<void>;
}
//# sourceMappingURL=DataProductTestableState.d.ts.map