import { type ReactElement } from "react";
import { type Key, type Keyed } from "@synnaxlabs/x";
import { Input } from '../input';
import { type OptionalControl } from '../input/types';
import { type RenderProp } from '../util/renderProp';
export interface FilterProps extends OptionalControl<string> {
    children?: RenderProp<Input.Control<string>>;
    debounce?: number;
}
/**
 * Implements in-browser filtration for a list.
 *
 * @param props - The props for the List.Search component.
 * @param props.children - A custom input render prop for the search functionality. This
 * must implement the InputControl<string> interface.
 * @param opts - Custom options for the search functionality. See the {@link fuse.IFuseOptions}
 * interface for more details.
 */
export declare const Filter: <K extends Key = Key, E extends Keyed<K> = Keyed<K>>({ children, debounce, onChange, value, }: FilterProps) => ReactElement | null;
export interface Searcher<K extends Key = Key, E extends Keyed<K> = Keyed<K>> {
    search: (term: string) => E[];
}
