import { DestroyRef } from '@angular/core';
import { ItemToId } from '../../core';
import { FormControlExtended } from '@al00x/forms';
export declare class SelectionModel<T> {
    private _totalCount;
    private _selectedCount;
    private _multiple;
    private _itemToId;
    private _currentViewItems;
    private _boundFormControl?;
    private _blockBoundUpdate;
    id: string;
    indeterminate: import("@angular/core").WritableSignal<boolean>;
    allSelected: import("@angular/core").WritableSignal<boolean>;
    selected: import("@angular/core").WritableSignal<T[]>;
    selectedIds: import("@angular/core").WritableSignal<{
        [p: string]: boolean;
        [p: number]: boolean;
    }>;
    selectedCount: import("@angular/core").Signal<number>;
    hasSelection: import("@angular/core").Signal<boolean>;
    constructor(itemsCount?: number, multiple?: boolean, initial?: T[], itemToId?: ItemToId<T>);
    get isMultiple(): boolean;
    select(...items: T[]): void;
    deselect(...items: T[]): void;
    toggle(...items: T[]): void;
    selectAll(): void;
    deselectAll(): void;
    toggleAll(): void;
    clear(): void;
    set(...items: T[]): void;
    isSelected(item: T): boolean;
    setTotalCount(count: number): void;
    setItems(items: T[], setTotalCount?: boolean): void;
    setItemToIdFn(fn: ItemToId<T>): void;
    setMultiple(value?: boolean): void;
    bindFormControl(control: FormControlExtended | undefined, destroyRef?: DestroyRef): void;
    private updateBoundedFormControl;
    private calculateSelectionState;
}
