import { Filter } from '../types';
import { FilterAdapters, FilterTypeAdapter } from './types';
/**
 * Per-type adapters keyed by Filter["type"]. Exhaustive: adding a new Filter
 * variant forces a compile error here until an adapter is provided.
 */
export declare const filterAdapters: FilterAdapters;
/**
 * Looks up the adapter for a given filter. The returned adapter's F and V
 * are widened to Filter / unknown — callers that need narrow typing should pass
 * the filter directly through the adapter methods, which preserves variance.
 * Falls back to a no-op adapter for unknown filter types.
 */
export declare const getAdapter: (filter: Filter) => FilterTypeAdapter<Filter, unknown>;
export type { FilterTypeAdapter } from './types';
