import { type Readable, type Writable } from 'svelte/store';
import type { Props, State, SearchBy, KeyBy, ComboboxDispatcher, LoadOptions } from './types';
import { type EventDispatcher } from 'svelte';
export declare class Combobox<T> {
    props: Props<T>;
    options: Writable<T[]>;
    selected: Writable<T[]>;
    stateMap: Writable<State>;
    search: Writable<string>;
    opened: Writable<boolean>;
    filtered: Readable<T[]>;
    ctxKey: string;
    multiple: boolean;
    disabled: Writable<boolean>;
    dispatch: EventDispatcher<ComboboxDispatcher<T>> | null;
    private lastOptions;
    private searchIndex;
    private selectedItems;
    groupBy: Props<T>['groupBy'];
    searchBy: SearchBy<T>;
    keyBy: KeyBy<T>;
    loadCallback: LoadOptions<T> | null;
    pageSize: number;
    searchDebounce: number;
    loading: Writable<boolean>;
    hasMore: Writable<boolean>;
    private currentSearch;
    private currentSkip;
    private abortController;
    private searchTimer;
    private lastDebouncedSearch;
    constructor({ selected, groupBy, searchBy, keyBy, multiple, config, disabled, loadOptions }: Props<T>);
    fetchFirstPage(search: string): Promise<void>;
    loadMore(): Promise<void>;
    destroy(): void;
    initDispatcher(element: HTMLElement | undefined): void;
    render(options: T[], { append }?: {
        append?: boolean;
    }): void;
    static get self(): Combobox<Option>;
    toggle(option: T): void;
    toggleAll(): void;
    isSelectedAll(): boolean;
    close(): void;
}
