/**
 * 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 CommandRegistrar } from '@finos/legend-application';
import { type CodeEditorPosition } from '@finos/legend-code-editor';
import { type GeneratorFn } from '@finos/legend-shared';
import { editor as monacoEditorAPI, type Position, type Selection } from 'monaco-editor';
import { FileCoordinate, type File, type FileErrorCoordinate } from '../server/models/File.js';
import { type ConceptInfo } from '../server/models/Usage.js';
import type { PureIDEStore } from './PureIDEStore.js';
import { PureIDETabState } from './PureIDETabManagerState.js';
import type { TabState } from '@finos/legend-lego/application';
declare class FileTextEditorState {
    readonly model: monacoEditorAPI.ITextModel;
    editor?: monacoEditorAPI.IStandaloneCodeEditor | undefined;
    private _dummyCursorObservable;
    language: string;
    viewState?: monacoEditorAPI.ICodeEditorViewState | undefined;
    forcedCursorPosition: CodeEditorPosition | undefined;
    wrapText: boolean;
    constructor(fileEditorState: FileEditorState);
    notifyCursorObserver(): void;
    get cursorObserver(): {
        position: Position | undefined;
        selection: Selection | undefined;
    } | undefined;
    setViewState(val: monacoEditorAPI.ICodeEditorViewState | undefined): void;
    setEditor(val: monacoEditorAPI.IStandaloneCodeEditor | undefined): void;
    setForcedCursorPosition(val: CodeEditorPosition | undefined): void;
    setWrapText(val: boolean): void;
}
export declare class FileEditorRenameConceptState {
    readonly fileEditorState: FileEditorState;
    readonly concept: ConceptInfo;
    readonly coordinate: FileCoordinate;
    constructor(fileEditorState: FileEditorState, concept: ConceptInfo, coordiate: FileCoordinate);
}
export declare class FileEditorState extends PureIDETabState implements CommandRegistrar {
    readonly filePath: string;
    readonly textEditorState: FileTextEditorState;
    private _currentHashCode;
    file: File;
    renameConceptState: FileEditorRenameConceptState | undefined;
    showGoToLinePrompt: boolean;
    constructor(ideStore: PureIDEStore, file: File, filePath: string);
    get label(): string;
    get description(): string | undefined;
    get fileName(): string;
    match(tab: TabState): boolean;
    onClose(): void;
    get hasChanged(): boolean;
    resetChangeDetection(): void;
    setFile(val: File): void;
    setShowGoToLinePrompt(val: boolean): void;
    setConceptToRenameState(coordinate: FileCoordinate | undefined): GeneratorFn<void>;
    runTest(coordinate: FileCoordinate | undefined): GeneratorFn<void>;
    showError(coordinate: FileErrorCoordinate): void;
    clearError(): void;
    registerCommands(): void;
    findConceptUsages(coordinate: FileCoordinate): void;
    renameConcept(newName: string): Promise<void>;
    deregisterCommands(): void;
}
export {};
//# sourceMappingURL=FileEditorState.d.ts.map