import { GdsElement } from '../../gds-element';
import { ListboxKbNavigation } from '../../utils/controllers/listbox-kb-nav-controller';
import { GdsOption } from './option.component';
import type { OptionsContainer } from './option.component';
/**
 * @element gds-listbox
 * @internal
 *
 * A listbox is a widget that allows the user to select one or more items from a list of choices.
 * This primitive corresponds to the aria listbox role: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role
 *
 * The listbox handles keyboard navigation and manages focus and selection of options.
 *
 * Can be used together with the `gds-option` primitive.
 *
 * @slot - The default slot. Only `gds-option` elements should be used here.
 */
export declare class GdsListbox extends GdsElement implements ListboxKbNavigation, OptionsContainer {
    #private;
    static styles: import("lit").CSSResult;
    /**
     * Controls whether the listbox allows multiple selection or not.
     */
    multiple: boolean;
    /**
     * Delegate function for comparing option values.
     */
    compareWith: (a: any, b: any) => boolean;
    constructor();
    get navigableItems(): GdsOption[];
    /**
     * Returns a list of all `gds-option` elements in the listbox.
     */
    get options(): GdsOption[];
    /**
     * Returns a list of all visible `gds-option` elements in the listbox.
     */
    get visibleOptionElements(): GdsOption[];
    /**
     * Returns a list of all visible `gds-option` elements in the listbox.
     */
    get visibleSelectedOptionElements(): GdsOption[];
    /**
     * Returns a list of all selected `gds-option` elements in the listbox.
     */
    get selection(): GdsOption[];
    set selection(values: any[]);
    connectedCallback(): void;
    /**
     * Focuses the first selected option in the listbox.
     * If no option is selected, the first visible option is focused.
     */
    focus(): void;
    render(): any;
    /**
     * Re-renders all options in the listbox when the `multiple` property changes.
     */
    private _rerenderOptions;
}
