import { IRange, IRangeWithCoord, Nullable, Workbook, Disposable, Injector } from '@univerjs/core';
import { IRenderContext, IRenderModule, SpreadsheetSkeleton } from '@univerjs/engine-render';
export interface ISheetSkeletonManagerParam {
    unitId?: string;
    sheetId: string;
    skeleton: SpreadsheetSkeleton;
    dirty: boolean;
    commandId?: string;
}
export interface ISheetSkeletonManagerSearch {
    sheetId: string;
    commandId?: string;
}
/**
 * This service manages the drawing of the sheet's viewModel (skeleton).
 *
 * Each time there is a content change, it will trigger the viewModel of the render to recalculate.
 *
 * Each application and sub-table has its own viewModel (skeleton).
 *
 * The viewModel is also a temporary storage variable, which does not need to be persisted,
 * so it is managed uniformly through the service.
 */
export declare class SheetSkeletonManagerService extends Disposable implements IRenderModule {
    private readonly _context;
    private readonly _injector;
    private _currentSkeletonSearchParam;
    private _sheetSkeletonParam;
    private readonly _currentSkeleton$;
    readonly currentSkeleton$: import('rxjs').Observable<Nullable<ISheetSkeletonManagerParam>>;
    /**
     * CurrentSkeletonBefore for pre-triggered logic during registration
     */
    private readonly _currentSkeletonBefore$;
    readonly currentSkeletonBefore$: import('rxjs').Observable<Nullable<ISheetSkeletonManagerParam>>;
    constructor(_context: IRenderContext<Workbook>, _injector: Injector);
    private _initRemoveSheet;
    getCurrentSkeleton(): Nullable<SpreadsheetSkeleton>;
    getCurrent(): Nullable<ISheetSkeletonManagerParam>;
    getWorksheetSkeleton(sheetId: string): Nullable<ISheetSkeletonManagerParam>;
    /**
     * unitId is never read?
     */
    getUnitSkeleton(unitId: string, sheetId: string): Nullable<ISheetSkeletonManagerParam>;
    setCurrent(searchParam: ISheetSkeletonManagerSearch): Nullable<ISheetSkeletonManagerParam>;
    private _setCurrent;
    reCalculate(): void;
    private _reCalculate;
    makeDirty(searchParm: ISheetSkeletonManagerSearch, state?: boolean): void;
    getOrCreateSkeleton(searchParam: ISheetSkeletonManagerSearch): SpreadsheetSkeleton | undefined;
    disposeSkeleton(searchParm: ISheetSkeletonManagerSearch): void;
    /** @deprecated Use function `attachRangeWithCoord` instead.  */
    attachRangeWithCoord(range: IRange): Nullable<IRangeWithCoord>;
    private _getSkeleton;
    private _buildSkeleton;
}
export declare function attachRangeWithCoord(skeleton: SpreadsheetSkeleton, range: IRange): IRangeWithCoord;
