/**
 * 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 } from '../../EditorStore.js';
import { type GeneratorFn } from '@finos/legend-shared';
import { ElementEditorState } from './ElementEditorState.js';
import { type CompilationError, type PackageableElement, ConcreteFunctionDefinition } from '@finos/legend-graph';
import { LambdaEditorState } from '@finos/legend-application';
export declare enum FUNCTION_SPEC_TAB {
    GENERAL = "GENERAL",
    TAGGED_VALUES = "TAGGED_VALUES",
    STEREOTYPES = "STEREOTYPES"
}
export declare class FunctionBodyEditorState extends LambdaEditorState {
    editorStore: EditorStore;
    functionElement: ConcreteFunctionDefinition;
    isConvertingFunctionBodyToString: boolean;
    constructor(functionElement: ConcreteFunctionDefinition, editorStore: EditorStore);
    get lambdaId(): string;
    convertLambdaGrammarStringToObject(): GeneratorFn<void>;
    convertLambdaObjectToGrammarString(pretty: boolean, firstLoad?: boolean): GeneratorFn<void>;
}
export declare class FunctionEditorState extends ElementEditorState {
    selectedTab: FUNCTION_SPEC_TAB;
    functionBodyEditorState: FunctionBodyEditorState;
    constructor(editorStore: EditorStore, element: PackageableElement);
    get functionElement(): ConcreteFunctionDefinition;
    setSelectedTab(tab: FUNCTION_SPEC_TAB): void;
    revealCompilationError(compilationError: CompilationError): boolean;
    get hasCompilationError(): boolean;
    clearCompilationError(): void;
    reprocess(newElement: ConcreteFunctionDefinition, editorStore: EditorStore): FunctionEditorState;
}
//# sourceMappingURL=FunctionEditorState.d.ts.map