import { CompositeElement, ITabulator } from '../../../../../../types/src/table';

interface ResolverInput {
    formatterParams: any;
    rawValue: unknown;
    rowData: Record<string, unknown>;
    separator: string | undefined;
    table: ITabulator | null | undefined;
}
declare function resolveCompositeElementSourceValue(element: CompositeElement, columnField: string, rawValue: unknown, rowData: Record<string, unknown>, separator: string | undefined): unknown;
declare function resolveCompositeDisplayValues(input: ResolverInput, columnField: string): unknown[];
declare function resolveLookupDisplayValues(input: ResolverInput): unknown[];
declare function resolveArrayDisplayValues(input: ResolverInput): unknown[];
declare function resolveTagDisplayValues(input: ResolverInput): unknown[];
/**
 * Mirrors the priority chain in link.ts:
 * 1. label starts as the raw cell value
 * 2. `labelField` (string nested-data path) overrides
 * 3. `label` overrides — string wins; **function is skipped on purpose** because invoking
 *    `label(cell)` requires a live `CellComponent` (with `getElement`, `getRow`, etc.).
 *    Search will fall back to raw match for that case.
 *
 * Returns the **single** final label the formatter would render, never both `labelField`
 * and `label` together (that would create a false positive against text the user does not see).
 */
declare function resolveLinkDisplayValues(input: ResolverInput): unknown[];
declare function resolveMoneyDisplayValues(input: ResolverInput): unknown[];
declare function resolveNumberDisplayValues(input: ResolverInput): unknown[];
declare function resolveDatetimeDisplayValues(input: ResolverInput): unknown[];
declare function resolveDatetimeDiffDisplayValues(input: ResolverInput): unknown[];
declare function resolvePlaintextDisplayValues(input: ResolverInput): unknown[];
declare function resolveTypographyDisplayValues(input: ResolverInput): unknown[];
declare function resolveHtmlDisplayValues(input: ResolverInput): unknown[];
declare function resolveTextareaDisplayValues(input: ResolverInput): unknown[];
declare function resolveJsonDisplayValues(input: ResolverInput): unknown[];
/**
 * The mock cell handed to user-supplied `formatterLookup` and `paramsLookup` callbacks only
 * exposes `getValue()` and `getData()` — there is no live `CellComponent`, so calls like
 * `cell.getColumn()`, `cell.getRow()`, `cell.getElement()`, or `cell.getTable()` will throw.
 * `safeCall` swallows those errors and the resolver returns `[]` for that row, falling back
 * to raw-value matching. If a column needs richer cell access during adaptive lookup, the
 * search will silently miss the formatted display — keep `formatterLookup` callbacks
 * dependent only on cell value and row data for full search coverage.
 */
declare function resolveAdaptableDisplayValues(input: ResolverInput, columnField: string): unknown[];
interface CollectFromDefinitionInput {
    columnField: string;
    formatter: unknown;
    formatterParams: unknown;
    rawValue: unknown;
    rowData: Record<string, unknown>;
    separator: string | undefined;
    table: ITabulator | null | undefined;
}
declare function collectFormatterDisplayValuesFromDefinition(args: CollectFromDefinitionInput): unknown[];
/**
 * Entry point used by `Filter.createFilterFieldFunction`. Looks up the column for
 * `field` from the table's column manager, reads its formatter definition, and
 * dispatches to the matching resolver. Returns `[]` when no column is registered,
 * the formatter is unknown, or the resolver produces no candidates.
 *
 * Pass an optional `columnCache` to avoid re-running `getColumnByField` for every row × key.
 * The Filter pipeline iterates ~`rows * columns` times; without a cache the column manager
 * is hit on each iteration. The caller (`createFilterFieldFunction`) owns the cache so its
 * lifetime matches the search invocation, never leaking across filter calls.
 *
 * `null` cached entries mean "no column registered for this field" — they let us skip the
 * lookup on subsequent rows for unknown fields too.
 */
export type ColumnDefinitionCache = Map<string, {
    definition: any;
} | null>;
export declare function collectFormatterDisplayValues(table: ITabulator | null | undefined, field: string, rawValue: unknown, rowData: Record<string, unknown>, columnCache?: ColumnDefinitionCache): unknown[];
export declare const __testables: {
    collectFormatterDisplayValuesFromDefinition: typeof collectFormatterDisplayValuesFromDefinition;
    resolveAdaptableDisplayValues: typeof resolveAdaptableDisplayValues;
    resolveArrayDisplayValues: typeof resolveArrayDisplayValues;
    resolveCompositeDisplayValues: typeof resolveCompositeDisplayValues;
    resolveCompositeElementSourceValue: typeof resolveCompositeElementSourceValue;
    resolveDatetimeDiffDisplayValues: typeof resolveDatetimeDiffDisplayValues;
    resolveDatetimeDisplayValues: typeof resolveDatetimeDisplayValues;
    resolveHtmlDisplayValues: typeof resolveHtmlDisplayValues;
    resolveJsonDisplayValues: typeof resolveJsonDisplayValues;
    resolveLinkDisplayValues: typeof resolveLinkDisplayValues;
    resolveLookupDisplayValues: typeof resolveLookupDisplayValues;
    resolveMoneyDisplayValues: typeof resolveMoneyDisplayValues;
    resolveNumberDisplayValues: typeof resolveNumberDisplayValues;
    resolvePlaintextDisplayValues: typeof resolvePlaintextDisplayValues;
    resolveTagDisplayValues: typeof resolveTagDisplayValues;
    resolveTextareaDisplayValues: typeof resolveTextareaDisplayValues;
    resolveTypographyDisplayValues: typeof resolveTypographyDisplayValues;
};
export {};
