/**
 * 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 { DataQualityRelationValidation, DataQualityRelationValidationConfiguration } from '../../graph/metamodel/pure/packageableElements/data-quality/DataQualityValidationConfiguration.js';
import { type GeneratorFn, ActionState } from '@finos/legend-shared';
import { type ExecutionResult, RawLambda, RelationTypeMetadata } 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';
import { SuggestedValidationsState } from './DataQualityRelationValidationSuggestedValidationState.js';
export declare enum DATA_QUALITY_RELATION_VALIDATION_EDITOR_TAB {
    DEFINITION = "Definition",
    VALIDATIONS = "Validations",
    TRIAL_RUN = "Trial Run"
}
export declare const DEFAULT_QUERY_LIMIT = 1000;
export declare enum EXECUTION_TYPE {
    EXECUTION = "EXECUTION",
    PROFILING = "PROFILING"
}
export declare class RelationFunctionDefinitionEditorState extends LambdaEditorState {
    readonly editorStore: EditorStore;
    readonly relationValidationElement: DataQualityRelationValidationConfiguration;
    readonly configurationState: DataQualityRelationValidationConfigurationState;
    isConvertingFunctionBodyToString: boolean;
    constructor(relationValidationElement: DataQualityRelationValidationConfiguration, editorStore: EditorStore, configurationState: DataQualityRelationValidationConfigurationState);
    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, onSubmit: () => GeneratorFn<void>): void;
    build(lambda: RawLambda): LambdaParameterState[];
}
export declare class DataQualityRelationValidationConfigurationState extends ElementEditorState {
    readonly relationFunctionDefinitionEditorState: RelationFunctionDefinitionEditorState;
    readonly exportState: ActionState;
    selectedTab: DATA_QUALITY_RELATION_VALIDATION_EDITOR_TAB;
    lastExecutionType: EXECUTION_TYPE | undefined;
    currentExecutionType: EXECUTION_TYPE | undefined;
    isGeneratingPlan: boolean;
    runPromise: Promise<ExecutionResult> | undefined;
    executionResult?: ExecutionResult | undefined;
    executionPlanState: ExecutionPlanState;
    validationStates: DataQualityRelationValidationState[];
    readonly suggestedValidationsState: SuggestedValidationsState;
    parametersState: RelationDefinitionParameterState;
    isConvertingValidationLambdaObjects: boolean;
    resultState: DataQualityRelationResultState;
    executionDuration?: number | undefined;
    latestRunHashCode?: string | undefined;
    isSuggestionPanelOpen: boolean;
    relationTypeMetadata: RelationTypeMetadata;
    lastRelationColumnsQueryHash: string | undefined;
    queryLimit: number;
    constructor(editorStore: EditorStore, element: DataQualityRelationValidationConfiguration);
    setupValidationStatesWithColumns(): GeneratorFn<void>;
    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;
    get isRunning(): boolean;
    setExecutionDuration(val: number | undefined): void;
    resetResultState(): void;
    addValidationState(validation: DataQualityRelationValidation): void;
    deleteValidationState(validation: DataQualityRelationValidation): void;
    setQueryLimit(queryLimit: number): void;
    setRunPromise: (promise: Promise<ExecutionResult> | undefined) => void;
    setSelectedTab(tab: DATA_QUALITY_RELATION_VALIDATION_EDITOR_TAB): void;
    setExecutionResult: (executionResult: ExecutionResult | undefined, type: EXECUTION_TYPE) => void;
    handleRun(type: EXECUTION_TYPE): GeneratorFn<void>;
    convertValidationLambdaObjects(): GeneratorFn<void>;
    get bodyExpressionSequence(): RawLambda;
    run(type: EXECUTION_TYPE): GeneratorFn<void>;
    cancelRun(): GeneratorFn<void>;
    generatePlan(debug: boolean): GeneratorFn<void>;
    exportData(format: string): GeneratorFn<void>;
    getRelationColumns(): GeneratorFn<void>;
    applySuggestion(validationState: DataQualityRelationValidationState): void;
    modifyExistingSuggestion(validation: DataQualityRelationValidationState): void;
    applyOrModifySuggestion(validationState: DataQualityRelationValidationState): void;
    get hashCode(): string;
}
//# sourceMappingURL=DataQualityRelationValidationConfigurationState.d.ts.map