/**
 * 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 { InstanceSetImplementationState, PropertyMappingState } from '../MappingElementState.js';
import { type GeneratorFn } from '@finos/legend-shared';
import type { EditorStore } from '../../../../EditorStore.js';
import { type PropertyMapping, type RelationalInstanceSetImplementation, type CompilationError, type SourceInformation, RelationalPropertyMapping, ParserError, EmbeddedRelationalInstanceSetImplementation } from '@finos/legend-graph';
export declare class RelationalPropertyMappingState extends PropertyMappingState {
    editorStore: EditorStore;
    instanceSetImplementationState: RelationalInstanceSetImplementationState;
    propertyMapping: RelationalPropertyMapping | EmbeddedRelationalInstanceSetImplementation;
    constructor(editorStore: EditorStore, instanceSetImplementationState: RootRelationalInstanceSetImplementationState, propertyMapping: RelationalPropertyMapping);
    get lambdaId(): string;
    convertLambdaGrammarStringToObject(): GeneratorFn<void>;
    convertLambdaObjectToGrammarString(pretty: boolean): GeneratorFn<void>;
}
export declare abstract class RelationalInstanceSetImplementationState extends InstanceSetImplementationState {
}
export declare class EmbeddedRelationalInstanceSetImplementationState extends RelationalInstanceSetImplementationState implements RelationalPropertyMappingState {
    instanceSetImplementationState: RelationalInstanceSetImplementationState;
    mappingElement: EmbeddedRelationalInstanceSetImplementation;
    propertyMapping: EmbeddedRelationalInstanceSetImplementation;
    constructor(editorStore: EditorStore, instanceSetImplementationState: RelationalInstanceSetImplementationState, setImplementation: EmbeddedRelationalInstanceSetImplementation);
    get lambdaId(): string;
    getPropertyMappingStates(propertyMappings: PropertyMapping[]): RelationalPropertyMappingState[];
    lambdaPrefix: string;
    lambdaString: string;
    parserError?: ParserError | undefined;
    compilationError?: CompilationError | undefined;
    decorate(): void;
    convertPropertyMappingTransformObjects(): GeneratorFn<void>;
    setLambdaString(val: string): void;
    setParserError(error: ParserError | undefined): void;
    setCompilationError(error: CompilationError | undefined): void;
    get fullLambdaString(): string;
    processSourceInformation(sourceInformation: SourceInformation): SourceInformation;
    extractLambdaString(fullLambdaString: string): string;
    clearErrors(): void;
    convertLambdaGrammarStringToObject(): GeneratorFn<void>;
    convertLambdaObjectToGrammarString(pretty: boolean): GeneratorFn<void>;
}
export declare class RootRelationalInstanceSetImplementationState extends RelationalInstanceSetImplementationState {
    mappingElement: RelationalInstanceSetImplementation;
    propertyMappingStates: RelationalPropertyMappingState[];
    isConvertingTransformLambdaObjects: boolean;
    constructor(editorStore: EditorStore, setImplementation: RelationalInstanceSetImplementation);
    getPropertyMappingStates(propertyMappings: PropertyMapping[]): RelationalPropertyMappingState[];
    get hasParserError(): boolean;
    setPropertyMappingStates(propertyMappingState: RelationalPropertyMappingState[]): void;
    /**
     * When we decorate, we might lose the error (parser/compiler) on each of the property mapping state
     * so here we make sure that we reuse existing state and only add new decorated ones
     */
    decorate(): void;
    convertPropertyMappingTransformObjects(): GeneratorFn<void>;
}
//# sourceMappingURL=RelationalInstanceSetImplementationState.d.ts.map