import { DocumentDataModel, ICellData, IDocumentBody, IDocumentData, IStyleData, Nullable, Workbook, Disposable, ICommandService, IContextService, IResourceLoaderService, IUndoRedoService, IUniverInstanceService, LocaleService } from '@univerjs/core';
import { TextSelectionManagerService } from '@univerjs/docs';
import { IDocumentLayoutObject, IRenderContext, IRenderModule, IRenderManagerService, ITextSelectionRenderManager } from '@univerjs/engine-render';
import { IEditorService, ILayoutService } from '@univerjs/ui';
import { SheetsSelectionsService } from '@univerjs/sheets';
import { IFunctionService, LexerTreeBuilder } from '@univerjs/engine-formula';
import { IEditorBridgeService } from '../../services/editor-bridge.service';
import { ICellEditorManagerService } from '../../services/editor/cell-editor-manager.service';
export declare class EditingRenderController extends Disposable implements IRenderModule {
    private readonly _context;
    private readonly _layoutService;
    private readonly _undoRedoService;
    private readonly _contextService;
    private readonly _instanceSrv;
    private readonly _renderManagerService;
    private readonly _editorBridgeService;
    private readonly _cellEditorManagerService;
    private readonly _textSelectionRenderManager;
    private readonly _lexerTreeBuilder;
    private readonly _functionService;
    private readonly _textSelectionManagerService;
    private readonly _commandService;
    protected readonly _localService: LocaleService;
    private readonly _editorService;
    private readonly _resourceLoaderService;
    /**
     * It is used to distinguish whether the user has actively moved the cursor in the editor, mainly through mouse clicks.
     */
    private _cursorChange;
    /** If the corresponding unit is active and prepared for editing. */
    private _isUnitEditing;
    private _workbookSelections;
    private _d;
    _cursorTimeout: NodeJS.Timeout;
    constructor(_context: IRenderContext<Workbook>, _layoutService: ILayoutService, selectionManagerService: SheetsSelectionsService, _undoRedoService: IUndoRedoService, _contextService: IContextService, _instanceSrv: IUniverInstanceService, _renderManagerService: IRenderManagerService, _editorBridgeService: IEditorBridgeService, _cellEditorManagerService: ICellEditorManagerService, _textSelectionRenderManager: ITextSelectionRenderManager, _lexerTreeBuilder: LexerTreeBuilder, _functionService: IFunctionService, _textSelectionManagerService: TextSelectionManagerService, _commandService: ICommandService, _localService: LocaleService, _editorService: IEditorService, _resourceLoaderService: IResourceLoaderService);
    dispose(): void;
    private _disposeCurrent;
    private _init;
    private _initEditorVisibilityListener;
    private _listenEditorFocus;
    private _getEditorSkeleton;
    private _getEditorViewModel;
    private _initialCursorSync;
    /**
     * Should update current editing cell info when selection is changed.
     * @param d DisposableCollection
     */
    private _subscribeToCurrentCell;
    private _fitTextSize;
    /**
     * Mainly used to pre-calculate the width of the editor,
     * to determine whether it needs to be automatically widened.
     */
    private _predictingSize;
    /**
     * Mainly used to calculate the volume of scenes and objects,
     * determine whether a scrollbar appears,
     * and calculate the editor's boundaries relative to the browser.
     */
    private _editAreaProcessing;
    /**
     * Since the document does not support cell background color, an additional rect needs to be added.
     */
    private _addBackground;
    private _handleEditorVisible;
    private _resetBodyStyle;
    /**
     * Should activate the editor when the user inputs text.
     * @param d DisposableCollection
     */
    private _initialKeyboardListener;
    private _showEditorByKeyboard;
    /**
     * Listen to document edits to refresh the size of the sheet editor, not for normal editor.
     */
    private _commandExecutedListener;
    private _setOpenForCurrent;
    private _getEditorObject;
    private _handleEditorInvisible;
    private _exitInput;
    private _moveCursor;
    /**
     * The user's operations follow the sequence of opening the editor and then moving the cursor.
     * The logic here predicts the user's first cursor movement behavior based on this rule
     */
    private _cursorStateListener;
    private _moveInEditor;
    private _isCurrentSheetFocused;
}
export declare function getCellDataByInput(cellData: ICellData, documentLayoutObject: IDocumentLayoutObject, lexerTreeBuilder: LexerTreeBuilder, getSnapshot: (data: DocumentDataModel) => IDocumentData, localeService: LocaleService, functionService: IFunctionService): ICellData | null;
export declare function isRichText(body: IDocumentBody): boolean;
export declare function getCellStyleBySnapshot(snapshot: IDocumentData): Nullable<IStyleData>;
