import type { ReactiveController } from 'lit';
import type { ComboHost, ComboRecord, FilteringOptions, GroupingOptions } from '../types.js';
export declare class DataState<T extends object> implements ReactiveController {
    private readonly _host;
    private readonly _filtering;
    private readonly _grouping;
    private _compareCollator;
    private _dataState;
    private _searchTerm;
    private _dirty;
    /** The current state of the data in the combo component. */
    get dataState(): Readonly<ComboRecord<T>[]>;
    /**
     * Sets the current search term used for filtering the data.
     * Triggers a data pipeline run if the value changes.
     */
    set searchTerm(value: string);
    /** The current search term used for filtering the data. */
    get searchTerm(): string;
    /** The current filtering options for the combo component. */
    get filteringOptions(): FilteringOptions<T>;
    /** The current grouping options for the combo component. */
    get groupingOptions(): GroupingOptions<T>;
    /** The current collator used for comparing values. */
    get compareCollator(): Intl.Collator;
    constructor(host: ComboHost<T>);
    /**
     * Lit lifecycle hook - runs before rendering.
     * Executes pipeline if any changes were batched.
     * @internal
     */
    hostUpdate(): void;
    /**
     * Marks the data state as dirty, triggering a pipeline run before next render.
     * This batches multiple changes into a single pipeline execution.
     */
    private _markDirty;
    /**
     * Executes the data pipeline if marked dirty.
     * Called during the update lifecycle to batch changes.
     */
    private _runPipelineIfDirty;
    /**
     * Initial indexing of the data - converts raw data items into ComboRecord format with metadata.
     */
    private _index;
    /**
     * Applies the data pipeline: indexing, filtering, and grouping.
     */
    private _apply;
    /**
     * Updates the collator when locale changes.
     */
    updateLocale(locale: string): void;
    /**
     * Marks data as dirty when host properties that affect data change.
     */
    invalidate(): void;
}
