import type { IUnitRange } from '@univerjs/core';
import type { FormulaDependencyTree, IDirtyUnitFeatureMap, IDirtyUnitOtherFormulaMap, IDirtyUnitSheetNameMap, IFormulaDependencyTree } from '@univerjs/engine-formula';
import type { DynamicResolver, ICalcNodeRef, ICompressedSharedFormulaGroup } from '../engine/dependency-engine';
import { DependencyManagerBaseService } from '@univerjs/engine-formula';
export declare class DependencyManagerProService extends DependencyManagerBaseService {
    private _dependencyEngineCache;
    reset(): void;
    private _getCellIdsAndRanges;
    private _getDynamicDeps;
    addOtherFormulaDependencyPro(unitId: string, sheetId: string, formulaId: string, dependencyTree: IFormulaDependencyTree, featureNodes?: ICalcNodeRef[], mode?: 'replace' | 'merge'): number;
    removeOtherFormulaDependency(unitId: string, sheetId: string, formulaIds: string[]): void;
    clearOtherFormulaDependency(unitId: string, sheetId?: string): void;
    getOtherFormulaDependencyPro(unitId: string, sheetId: string, formulaId: string, refOffsetX: number, refOffsetY: number): number | undefined;
    addFeatureFormulaDependencyPro(unitId: string, sheetId: string, featureId: string, dependencyTree: FormulaDependencyTree): number;
    removeFeatureFormulaDependency(unitId: string, sheetId: string, featureIds: string[]): void;
    clearFeatureFormulaDependency(unitId: string, sheetId?: string): void;
    getFeatureFormulaDependencyPro(unitId: string, sheetId: string, featureId: string): number | undefined;
    getFeatureFormulaDependencyNodePro(unitId: string, sheetId: string, featureId: string): ICalcNodeRef;
    addFormulaDependencyPro(unitId: string, sheetId: string, row: number, column: number, dependencyTree: IFormulaDependencyTree, featureNodes?: ICalcNodeRef[], mode?: 'replace' | 'merge'): number;
    addFormulaDependencyNodeOnlyPro(unitId: string, sheetId: string, row: number, column: number): number;
    registerCompressedSharedFormulaGroup(group: ICompressedSharedFormulaGroup): void;
    clearCompressedSharedFormulaGroups(unitId?: string, sheetId?: string): void;
    removeFormulaDependency(unitId: string, sheetId: string, row: number, column: number): void;
    clearFormulaDependency(unitId: string, sheetId?: string): void;
    getFormulaDependencyPro(unitId: string, sheetId: string, row: number, column: number): number | undefined;
    markIndicesChanged(indices: number[], options?: {
        onlySelf?: boolean;
    }): void;
    markRangesChanged(ranges: IUnitRange[], options?: {
        includeFormulaCells?: boolean;
        coalesce?: boolean;
    }): void;
    markDirtyFeatureCalculations(dirtyFeatureMap: IDirtyUnitFeatureMap): void;
    markDirtyOtherFormulas(dirtyOtherFormulaMap: IDirtyUnitOtherFormulaMap): void;
    markDirtySheetNames(dirtyNameMap: IDirtyUnitSheetNameMap): void;
    markAllDirty(): void;
    clearCalculatedDirty(indices: number[]): void;
    hasDynamicDeps(node: ICalcNodeRef): boolean;
    hasDynamicDepsByIndex(nodeIndex: number): boolean;
    refreshDynamicDeps(node: ICalcNodeRef, resolver: DynamicResolver): boolean;
    refreshDynamicDepsByIndex(nodeIndex: number, resolver: DynamicResolver): boolean;
    hasUncalculatedDirtyPrecedentByIndex(nodeIndex: number, calculatedNodeIndices: ReadonlySet<number>): boolean;
    forEachPrecedentNodeByIndex(nodeIndex: number, cb: (precedentNodeIndex: number) => void): void;
    forEachDependentNodeByIndex(nodeIndex: number, cb: (dependentNodeIndex: number) => void): void;
    prepareDynamicDependencies(resolver: DynamicResolver): boolean;
    getCalculationOrder(options?: {
        detectCycles?: boolean;
    }): import("../engine/dependency-engine").ICalculationOrderResult;
}
