import type { EntityId } from '@bilig/protocol';
import type { CellStore } from '../../cell-store.js';
type U32 = Uint32Array;
export interface OperationPostRecalcDirectFormulaIndexAccess {
    readonly has: (cellIndex: number) => boolean;
    readonly hasCoveredDirectRangeInput: (cellIndex: number) => boolean;
    readonly hasCoveredDirectFormulaInput: (cellIndex: number) => boolean;
}
export interface OperationDirtyTraversalSheetAccess {
    readonly structureVersion: number;
    readonly logical: {
        readonly getCellVisiblePosition: (cellIndex: number) => {
            readonly row: number;
            readonly col: number;
        } | undefined;
    };
}
export interface OperationDirtyTraversalAccess {
    readonly workbook: {
        readonly cellStore: CellStore;
        readonly getSheetNameById: (sheetId: number) => string | undefined;
        readonly getSheetById: (sheetId: number) => OperationDirtyTraversalSheetAccess | undefined;
    };
    readonly getSingleEntityDependent: (entityId: EntityId) => number;
    readonly getEntityDependents: (entityId: EntityId) => U32;
    readonly collectRegionFormulaDependentsForCell: (sheetName: string, row: number, col: number) => U32;
    readonly collectAffectedDirectRangeDependents: (request: {
        readonly sheetName: string;
        readonly row: number;
        readonly col: number;
    }) => readonly number[];
    readonly hasTrackedExactLookupDependents: (sheetId: number, col: number) => boolean;
    readonly hasTrackedSortedLookupDependents: (sheetId: number, col: number) => boolean;
    readonly hasTrackedDirectRangeDependents: (sheetId: number, col: number) => boolean;
}
export declare function canSkipOperationDirtyTraversalForChangedInputs(input: {
    readonly changedInputCellIndices: U32;
    readonly changedInputCount: number;
    readonly postRecalcDirectFormulaIndices?: OperationPostRecalcDirectFormulaIndexAccess | undefined;
    readonly options?: {
        readonly lookupHandledInputCellIndices?: readonly number[];
    };
    readonly access: OperationDirtyTraversalAccess;
}): boolean;
export declare function operationChangedInputsNeedRegionQueryIndices(input: {
    readonly changedInputCellIndices: U32;
    readonly changedInputCount: number;
    readonly postRecalcDirectFormulaIndices?: OperationPostRecalcDirectFormulaIndexAccess | undefined;
    readonly access: Pick<OperationDirtyTraversalAccess, 'workbook' | 'hasTrackedDirectRangeDependents'>;
}): boolean;
export {};
