export declare type valuePathOrFunc<T> = ((item: T) => any);
export default class AtomSelectableList<T> {
    allowMultipleSelection: boolean;
    valuePath?: valuePathOrFunc<T>;
    labelPath?: valuePathOrFunc<T>;
    readonly items: Array<ISelectableItem<T>>;
    readonly selectedItems: Array<ISelectableItem<T>>;
    /**
     * Reference for Paging
     */
    start: number;
    /**
     * Reference for paging
     */
    total: number;
    get selectedIndex(): number;
    set selectedIndex(n: number);
    get selectedItem(): T;
    set selectedItem(item: T);
    get label(): any;
    get selectAll(): boolean;
    set selectAll(v: boolean);
    private mValue;
    get value(): any;
    set value(v: any);
    constructor(allowMultipleSelection?: boolean, valuePath?: valuePathOrFunc<T>, labelPath?: valuePathOrFunc<T>);
    /**
     * Remove all items
     * @param clearValue clear Selection
     */
    clear(clearValue?: boolean): void;
    /**
     * Append to existing items
     * @param source source items
     * @param total total number of items
     */
    append(source: T[], total?: number): void;
    replace(source: T[], start?: number, size?: number): void;
    find(item: T | ((i: T) => boolean)): ISelectableItem<T>;
    select(item: T | ISelectableItem<T>): void;
    deselect(item: T | ISelectableItem<T>): void;
    toggle(item: T | ISelectableItem<T>): void;
    replaceSelected(va: T[]): void;
    private replaceSelectedInternal;
    private updateBindings;
    private newItem;
    private clearSelected;
}
export interface ISelectableItem<T> {
    selected: boolean;
    item: T;
    itemType: any;
    select: () => void;
    deselect: () => void;
    toggle: () => void;
}
//# sourceMappingURL=AtomSelectableList.d.ts.map