import { UmbControllerBase } from '../../../../libs/class-api/index.js';
import type { UmbControllerHost } from '../../../../libs/controller-api/index.js';
/**
 * Manages the selection of items.
 * @class UmbSelectionManager
 */
export declare class UmbSelectionManager<ValueType extends string | null = string | null> extends UmbControllerBase {
    #private;
    readonly selectable: import("rxjs").Observable<boolean>;
    readonly selection: import("rxjs").Observable<ValueType[]>;
    readonly hasSelection: import("rxjs").Observable<boolean>;
    readonly multiple: import("rxjs").Observable<boolean>;
    constructor(host: UmbControllerHost);
    /**
     * Returns whether items can be selected.
     * @returns {*}
     * @memberof UmbSelectionManager
     */
    getSelectable(): boolean;
    /**
     * Sets whether items can be selected.
     * @param {boolean} value
     * @memberof UmbSelectionManager
     */
    setSelectable(value: boolean): void;
    /**
     * Returns the current selection.
     * @returns {*}
     * @memberof UmbSelectionManager
     */
    getSelection(): ValueType[];
    /**
     * Sets the current selection.
     * @param {Array<ValueType>} value
     * @memberof UmbSelectionManager
     */
    setSelection(value: Array<ValueType>): void;
    /**
     * Returns whether multiple items can be selected.
     * @returns {*}
     * @memberof UmbSelectionManager
     */
    getMultiple(): boolean;
    /**
     * Sets whether multiple items can be selected.
     * @param {boolean} value
     * @memberof UmbSelectionManager
     */
    setMultiple(value: boolean): void;
    /**
     * Toggles the given unique id in the current selection.
     * @param {(ValueType)} unique
     * @memberof UmbSelectionManager
     */
    toggleSelect(unique: ValueType): void;
    /**
     * Appends the given unique id to the current selection.
     * @param {(ValueType)} unique
     * @memberof UmbSelectionManager
     */
    select(unique: ValueType): void;
    /**
     * Removes the given unique id from the current selection.
     * @param {(ValueType)} unique
     * @memberof UmbSelectionManager
     */
    deselect(unique: ValueType): void;
    /**
     * Returns true if the given unique id is selected.
     * @param {(ValueType)} unique
     * @returns {*}
     * @memberof UmbSelectionManager
     */
    isSelected(unique: ValueType): boolean;
    /**
     * Clears the current selection.
     * @memberof UmbSelectionManager
     */
    clearSelection(): void;
    /**
     * Sets a function that determines if an item is selectable or not.
     * @param compareFn A function that determines if an item is selectable or not.
     * @memberof UmbSelectionManager
     */
    setAllowLimitation(compareFn: (unique: ValueType) => boolean): void;
    /**
     * Returns the function that determines if an item is selectable or not.
     * @returns {*}
     * @memberof UmbSelectionManager
     */
    getAllowLimitation(): (unique: ValueType) => boolean;
}
