/** * @license * Copyright (c) 2025 Handsoncode. All rights reserved. */ import { DependencyGraph } from '../DependencyGraph'; import { InternalScalarValue, RawInterpreterValue, RawNoErrorScalarValue } from '../interpreter/InterpreterValue'; import { SimpleRangeValue } from '../SimpleRangeValue'; import { AdvancedFindOptions, SearchOptions } from './SearchStrategy'; export declare abstract class AdvancedFind { protected dependencyGraph: DependencyGraph; protected constructor(dependencyGraph: DependencyGraph); advancedFind(keyMatcher: (arg: RawInterpreterValue) => boolean, rangeValue: SimpleRangeValue, { returnOccurrence }?: AdvancedFindOptions): number; protected basicFind(searchKey: RawNoErrorScalarValue, rangeValue: SimpleRangeValue, searchCoordinate: 'col' | 'row', { ordering, ifNoMatch, returnOccurrence }: SearchOptions): number; /** * Linear search over an in-memory array for the value equal to `searchKey`, or — when `ifNoMatch` * is `returnLowerBound`/`returnUpperBound` — the closest non-exceeding/non-preceding value. * Genuinely empty cells (`EmptyValue`) are skipped, consistent with `findLastOccurrenceInOrderedRange` * and with Excel/Google Sheets, which ignore empty cells (but not empty strings) in approximate search. * Returns the 0-based index into `searchArray`, or `NOT_FOUND` (-1) when nothing matches. */ protected findNormalizedValue(searchKey: RawNoErrorScalarValue, searchArray: InternalScalarValue[], ifNoMatch?: 'returnLowerBound' | 'returnUpperBound' | 'returnNotFound', returnOccurrence?: 'first' | 'last'): number; }