import type { WorkbookStore } from '../workbook-store.js';
import { type EngineCounters } from '../perf/engine-counters.js';
import { type RegionId, type RegionNodeStore, type SingleColumnRegionNode } from './region-node-store.js';
interface SingleFormulaRegionReplacement {
    readonly formulaCellIndex: number;
    readonly previousRegionId: RegionId;
    readonly nextRegionId: RegionId;
}
export interface RegionGraph {
    readonly internSingleColumnRegion: (args: {
        readonly sheetName: string;
        readonly rowStart: number;
        readonly rowEnd: number;
        readonly col: number;
    }) => RegionId;
    readonly getRegion: (regionId: RegionId) => SingleColumnRegionNode | undefined;
    readonly replaceFormulaSubscriptions: (formulaCellIndex: number, regionIds: readonly RegionId[]) => void;
    readonly replaceSingleFormulaSubscription: (formulaCellIndex: number, previousRegionId: RegionId, nextRegionId: RegionId) => void;
    readonly replaceSingleFormulaSubscriptions: (replacements: readonly SingleFormulaRegionReplacement[]) => void;
    readonly clearFormulaSubscriptions: (formulaCellIndex: number) => void;
    readonly getFormulaSubscriptions: (formulaCellIndex: number) => readonly RegionId[];
    readonly prepareQueryIndices: () => void;
    readonly collectFormulaDependentsForCell: (sheetId: number, row: number, col: number) => Uint32Array;
    readonly collectSingleFormulaDependentForCell: (sheetId: number, row: number, col: number) => number;
    readonly hasFormulaSubscriptions: () => boolean;
    readonly hasFormulaSubscriptionsForColumn: (sheetId: number, col: number) => boolean;
    readonly hasFormulaSubscriptionsOverlappingRange: (sheetId: number, rowStart: number, rowEnd: number, colStart: number, colEnd: number) => boolean;
    readonly hasFormulaSubscriptionsIntersectingRect: (sheetId: number, rowStart: number, rowEnd: number, colStart: number, colEnd: number) => boolean;
    readonly getFormulaSubscriptionCount: () => number;
    readonly reset: () => void;
}
export declare function createRegionGraph(args: {
    readonly workbook: Pick<WorkbookStore, 'getSheet'>;
    readonly counters?: EngineCounters;
    readonly nodeStore?: RegionNodeStore;
}): RegionGraph;
export {};
