/**
 * 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 EditorStore, ElementEditorState } from '@finos/legend-application-studio';
import { type DataQualityRelationValidation, DataQualityRelationValidationConfiguration } from '../../graph/metamodel/pure/packageableElements/data-quality/DataQualityValidationConfiguration.js';
import { type GeneratorFn, ActionState } from '@finos/legend-shared';
import { type ExecutionResult, RawLambda } from '@finos/legend-graph';
import { ExecutionPlanState, LambdaEditorState, LambdaParametersState, LambdaParameterState } from '@finos/legend-query-builder';
import { DataQualityRelationValidationState } from './DataQualityRelationValidationState.js';
import { DataQualityRelationResultState } from './DataQualityRelationResultState.js';
import type { SelectOption } from '@finos/legend-art';
export declare enum DATA_QUALITY_RELATION_VALIDATION_EDITOR_TAB {
    DEFINITION = "Definition",
    VALIDATIONS = "Validations",
    TRIAL_RUN = "Trial Run"
}
export declare class RelationFunctionDefinitionEditorState extends LambdaEditorState {
    readonly editorStore: EditorStore;
    readonly relationValidationElement: DataQualityRelationValidationConfiguration;
    isConvertingFunctionBodyToString: boolean;
    constructor(relationValidationElement: DataQualityRelationValidationConfiguration, editorStore: EditorStore);
    get lambdaId(): string;
    convertLambdaGrammarStringToObject(): GeneratorFn<void>;
    convertLambdaObjectToGrammarString(options?: {
        pretty?: boolean | undefined;
        preserveCompilationError?: boolean | undefined;
        firstLoad?: boolean | undefined;
    }): GeneratorFn<void>;
    get hashCode(): string;
}
export declare class RelationDefinitionParameterState extends LambdaParametersState {
    readonly relationValidationConfigurationState: DataQualityRelationValidationConfigurationState;
    constructor(relationValidationConfigurationState: DataQualityRelationValidationConfigurationState);
    openModal(lambda: RawLambda, runLambdaWithConstraints: boolean): void;
    build(lambda: RawLambda): LambdaParameterState[];
}
export declare class DataQualityRelationValidationConfigurationState extends ElementEditorState {
    readonly relationFunctionDefinitionEditorState: RelationFunctionDefinitionEditorState;
    readonly exportState: ActionState;
    selectedTab: DATA_QUALITY_RELATION_VALIDATION_EDITOR_TAB;
    isRunningValidation: boolean;
    isGeneratingPlan: boolean;
    validationRunPromise: Promise<ExecutionResult> | undefined;
    executionResult?: ExecutionResult | undefined;
    executionPlanState: ExecutionPlanState;
    validationStates: DataQualityRelationValidationState[];
    parametersState: RelationDefinitionParameterState;
    isConvertingValidationLambdaObjects: boolean;
    resultState: DataQualityRelationResultState;
    executionDuration?: number | undefined;
    latestRunHashCode?: string | undefined;
    constructor(editorStore: EditorStore, element: DataQualityRelationValidationConfiguration);
    reprocess(newElement: DataQualityRelationValidationConfiguration, editorStore: EditorStore): DataQualityRelationValidationConfigurationState;
    get validationElement(): DataQualityRelationValidationConfiguration;
    get validationOptions(): SelectOption[];
    getNullableValidationState: (relationValidation: DataQualityRelationValidation) => DataQualityRelationValidationState | undefined;
    getValidationState: (validation: DataQualityRelationValidation) => DataQualityRelationValidationState;
    get relationValidationOptions(): SelectOption[];
    get checkForStaleResults(): boolean;
    setExecutionDuration(val: number | undefined): void;
    resetResultState(): void;
    addValidationState(validation: DataQualityRelationValidation): void;
    deleteValidationState(validation: DataQualityRelationValidation): void;
    setValidationRunPromise: (promise: Promise<ExecutionResult> | undefined) => void;
    setSelectedTab(tab: DATA_QUALITY_RELATION_VALIDATION_EDITOR_TAB): void;
    setExecutionResult: (executionResult: ExecutionResult | undefined) => void;
    handleRunValidation(): GeneratorFn<void>;
    convertValidationLambdaObjects(): GeneratorFn<void>;
    get bodyExpressionSequence(): RawLambda;
    setIsRunningValidation(val: boolean): void;
    runValidation(): GeneratorFn<void>;
    cancelValidationRun(): GeneratorFn<void>;
    generatePlan(debug: boolean): GeneratorFn<void>;
    exportData(format: string): GeneratorFn<void>;
    handleExport(format: string): void;
    get hashCode(): string;
}
//# sourceMappingURL=DataQualityRelationValidationConfigurationState.d.ts.map