import { ObservableValue } from '@furystack/utils';
export interface CollectionData<T> {
    entries: T[];
    count: number;
}
export interface CollectionServiceOptions<T> {
    /**
     * An optional field that can be used for quick search
     */
    searchField?: keyof T;
    /**
     * @param entry The clicked entry
     * optional callback for row clicks
     */
    onRowClick?: (entry: T) => void;
    /**
     * Optional callback for row double clicks
     * @param entry The clicked entry
     */
    onRowDoubleClick?: (entry: T) => void;
}
export declare class CollectionService<T> implements Disposable {
    private options;
    [Symbol.dispose](): void;
    isSelected: (entry: T) => boolean;
    addToSelection: (entry: T) => void;
    removeFromSelection: (entry: T) => void;
    toggleSelection: (entry: T) => void;
    data: ObservableValue<CollectionData<T>>;
    focusedEntry: ObservableValue<T | undefined>;
    selection: ObservableValue<T[]>;
    searchTerm: ObservableValue<string>;
    hasFocus: ObservableValue<boolean>;
    handleKeyDown(ev: KeyboardEvent): void;
    handleRowClick(entry: T, ev: MouseEvent): void;
    constructor(options?: CollectionServiceOptions<T>);
    handleRowDoubleClick(entry: T): void;
}
//# sourceMappingURL=collection-service.d.ts.map