import { type CellValue } from '@bilig/protocol';
import type { EngineRuntimeState, PreparedApproximateVectorLookup } from '../runtime-state.js';
import type { ExactVectorMatchResult } from './exact-column-index-service.js';
import type { EngineRuntimeColumnStoreService } from './runtime-column-store-service.js';
import type { ColumnIndexStore } from '../../indexes/column-index-store.js';
import { type EngineCounters } from '../../perf/engine-counters.js';
export interface ApproximateVectorMatchRequest {
    lookupValue: CellValue;
    sheetName: string;
    start: string;
    end: string;
    startRow?: number;
    endRow?: number;
    startCol?: number;
    endCol?: number;
    matchMode: 1 | -1;
}
export type ApproximateVectorMatchResult = ExactVectorMatchResult;
export interface SortedColumnSearchService {
    readonly primeColumnIndex: (request: {
        sheetName: string;
        rowStart: number;
        rowEnd: number;
        col: number;
    }) => void;
    readonly prepareVectorLookup: (request: {
        sheetName: string;
        rowStart: number;
        rowEnd: number;
        col: number;
    }) => PreparedApproximateVectorLookup;
    readonly findPreparedVectorMatch: (request: {
        lookupValue: CellValue;
        prepared: PreparedApproximateVectorLookup;
        matchMode: 1 | -1;
    }) => ApproximateVectorMatchResult;
    readonly findVectorMatch: (request: ApproximateVectorMatchRequest) => ApproximateVectorMatchResult;
    readonly invalidateColumn: (request: {
        sheetName: string;
        col: number;
    }) => void;
    readonly recordLiteralWrite: (request: {
        sheetName: string;
        row: number;
        col: number;
        oldValue: CellValue;
        newValue: CellValue;
        oldStringId?: number;
        newStringId?: number;
    }) => void;
}
export declare function createSortedColumnSearchService(args: {
    readonly state: Pick<EngineRuntimeState, 'workbook' | 'strings'> & {
        counters?: EngineCounters;
    };
    readonly runtimeColumnStore: EngineRuntimeColumnStoreService;
    readonly columnIndexStore: ColumnIndexStore;
}): SortedColumnSearchService;
