import { SelectionStatus } from './SelectionStatus';
import { SelectMapState } from './SelectMapState';
type KeyGetter<T> = (value: T) => string;
export interface SelectStateParams<T> {
    readonly keyGetter: KeyGetter<T>;
    readonly defaultStatus?: SelectionStatus;
}
export interface SelectionEntry<T> {
    value: T;
    status: SelectionStatus;
}
export declare class SelectState<T> {
    readonly keyGetter: KeyGetter<T>;
    defaultStatus: SelectionStatus;
    private readonly map;
    constructor(params: SelectStateParams<T>);
    get startStatus(): SelectionStatus;
    get finalStatus(): SelectionStatus;
    isChecked(key: string): boolean;
    toggle(value: T, { clear }?: {
        clear?: boolean;
    }): void;
    set(value: T): void;
    forceSet(value: T): void;
    delete(value: T): void;
    deleteKey(key: string): void;
    get selectedCount(): number;
    get toArray(): SelectionEntry<T>[];
    get selectedArray(): SelectionEntry<T>[];
    get selectedValues(): T[];
    get selectedKeys(): string[];
    clear(): void;
    forceSetMany(entries: SelectionEntry<T>[]): void;
    setMany(entries: SelectionEntry<T>[]): void;
    syncValues(values: T[], status?: SelectionStatus): void;
    initSelected(values: T[]): void;
    finalizeMany(values: T[]): void;
    startAll(): void;
    filter(predicate: (value: T) => boolean): void;
    get isNotEmpty(): boolean;
    get isEmpty(): boolean;
    get isNotEmptyEnabledItems(): boolean;
    get isEmptyEnabledItems(): boolean;
    get _map(): SelectMapState<string, SelectionEntry<T>>;
}
export {};
//# sourceMappingURL=SelectState.d.ts.map