import { type Writable } from 'svelte/store';
import { type SelectionOptions } from './selection-js.ts';
export declare class KSelection<T> {
    #private;
    readonly subscribe: Writable<Set<T>>['subscribe'];
    readonly items: Set<T>;
    constructor(all_items: T[], options: SelectionOptions<T>);
    find_first_index(): number | null;
    find_first(): T | undefined;
    items_as_array(): T[];
    get_selected_indexes(): number[];
    add_index(index: number): void;
    clear(): void;
    update_all_items(all: T[]): void;
    handle_mousedown(e: MouseEvent, index: number): void;
    handle_contextmenu(e: MouseEvent, index: number): void;
    handle_click(e: MouseEvent, index: number): void;
    handle_keydown(e: KeyboardEvent): void;
    /** This adds all row events, and keydown.
     * The listener should return row index.
     * Returns an unlisten function. */
    add_event_listeners(element: HTMLElement, listener: (e: MouseEvent | KeyboardEvent) => number | null): () => void;
    /** This adds all row events, and keydown. The listener should return row index. */
    attach_events(listener: (e: MouseEvent | KeyboardEvent) => number | null): (element: HTMLElement) => () => void;
}
