/**
 * 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 { EditorState } from './EditorState.js';
import { type GeneratorFn, ActionState } from '@finos/legend-shared';
import type { EditorStore } from '../EditorStore.js';
import { type Entity } from '@finos/legend-storage';
import type { ModelImporterExtensionConfiguration } from '../../LegendStudioApplicationPlugin.js';
import { type ExternalFormatDescription, type PureModel, SchemaSet } from '@finos/legend-graph';
import { InnerSchemaSetEditorState } from './element-editor-state/external-format/DSL_ExternalFormat_SchemaSetEditorState.js';
export declare enum MODEL_IMPORT_NATIVE_INPUT_TYPE {
    ENTITIES = "ENTITIES",
    PURE_PROTOCOL = "PURE_PROTOCOL",
    PURE_GRAMMAR = "PURE_GRAMMAR"
}
export declare enum MODEL_IMPORT_TYPE {
    NATIVE = "NATIVE",
    EXTERNAL_FORMAT = "EXTERNAL_FORMAT",
    EXTENSIONS = "EXTENSIONS"
}
export declare abstract class ModelImporterEditorState {
    readonly editorStore: EditorStore;
    readonly modelImporterState: ModelImporterState;
    readonly loadModelActionState: ActionState;
    constructor(modelImporterState: ModelImporterState);
    abstract get label(): string;
    abstract get allowHardReplace(): boolean;
    abstract get isLoadingDisabled(): boolean;
    abstract loadModel(): Promise<void>;
}
export declare class NativeModelImporterEditorState extends ModelImporterEditorState {
    nativeType: MODEL_IMPORT_NATIVE_INPUT_TYPE;
    modelText: string;
    loadCurrentProjectActionState: ActionState;
    constructor(modelImporterState: ModelImporterState);
    get label(): string;
    get allowHardReplace(): boolean;
    get isLoadingDisabled(): boolean;
    setModelText(val: string): void;
    setNativeImportType(nativeImportType: MODEL_IMPORT_NATIVE_INPUT_TYPE): void;
    getNativeImportExampleText(inputType: MODEL_IMPORT_NATIVE_INPUT_TYPE): string;
    loadEntites(): Promise<Entity[]>;
    loadCurrentProjectEntities(): GeneratorFn<void>;
    private getExampleEntitiesInputText;
    private getExamplePureProtocolInputText;
    private getExamplePureGrammarText;
    loadModel(): Promise<void>;
}
export declare class ExecuteInputDebugModelImporterEditorState extends ModelImporterEditorState {
    executeInput: string;
    executablePath: string;
    readonly loadState: ActionState;
    constructor(modelImporterState: ModelImporterState);
    get label(): string;
    get allowHardReplace(): boolean;
    get isLoadingDisabled(): boolean;
    setExecuteInput(val: string): void;
    setExecutablePath(val: string): void;
    loadModel(): Promise<void>;
}
export declare abstract class ExtensionModelImportRendererState {
    importerState: ModelImporterState;
    constructor(importerState: ModelImporterState);
}
export declare class ExtensionModelImporterEditorState extends ModelImporterEditorState {
    config: ModelImporterExtensionConfiguration;
    rendererState: ExtensionModelImportRendererState;
    constructor(config: ModelImporterExtensionConfiguration, rendererState: ExtensionModelImportRendererState, modelImporterState: ModelImporterState);
    get label(): string;
    get allowHardReplace(): boolean;
    get isLoadingDisabled(): boolean;
    setExtension(extensionConfiguration: ModelImporterExtensionConfiguration): void;
    loadModel(): Promise<void>;
}
export declare class ExternalFormatModelImporterState extends ModelImporterEditorState {
    schemaSet: SchemaSet;
    schemaSetEditorState: InnerSchemaSetEditorState;
    description: ExternalFormatDescription;
    isolatedSchemaGraph: PureModel;
    constructor(description: ExternalFormatDescription, modelImporterState: ModelImporterState);
    get allowHardReplace(): boolean;
    get label(): string;
    get isLoadingDisabled(): boolean;
    setDescription(val: ExternalFormatDescription): void;
    setExternalFormat(description: ExternalFormatDescription): void;
    loadModel(): Promise<void>;
}
export declare class ModelImporterState extends EditorState {
    replace: boolean;
    modelImportEditorState: ModelImporterEditorState;
    extensionConfigs: ModelImporterExtensionConfiguration[];
    constructor(editorStore: EditorStore);
    get label(): string;
    match(tab: EditorState): boolean;
    setReplaceFlag(val: boolean): void;
    setImportEditorState(val: ModelImporterEditorState): void;
    setNativeImportType(nativeImportType: MODEL_IMPORT_NATIVE_INPUT_TYPE): NativeModelImporterEditorState;
    setExternalFormatImportFormat(externalFormat: ExternalFormatDescription): ExternalFormatModelImporterState;
    setModelImporterExtension(extension: ModelImporterExtensionConfiguration): ExtensionModelImporterEditorState;
    setExecuteInputDebugModelImporter(): void;
}
//# sourceMappingURL=ModelImporterState.d.ts.map