import { type TemplateResult } from 'lit';
import type SynOptGroup from '../optgroup/optgroup.js';
import type SynOption from '../option/option.component.js';
/**
 * Get a list of all assigned elements for a given slot
 * @param slot The slot to query
 * @returns Flattened list of assigned elements
 */
export declare const getAssignedElementsForSlot: (slot: HTMLSlotElement) => HTMLElement[];
/**
 * Retrieves the option or nested options from the provided HTMLElement.
 *
 * @param item - The HTMLElement representing the option or containing nested options.
 * @returns The found syn-option(s)
 */
export declare const getOptionOrNestedOptions: (item: HTMLElement) => SynOption | SynOption[];
/**
 * Check if an item is a syn-optgroup
 * @param item The item to check for
 * @returns True if the item is a SynOptgroup, false otherwise
 */
export declare const isOptgroup: (item: HTMLElement) => item is SynOptGroup;
/**
 * Get a list of only Option elements
 * @param items List of items to check for
 * @returns New array of all found syn-nav-items
 */
export declare const getAllOptions: (items: HTMLElement[]) => (SynOption | SynOption[])[];
/**
 * Get a list of only Optgroup elements
 * @param items List of items to check for
 * @returns New array of all found syn-optgroup's
 */
export declare const filterOnlyOptgroups: (items: HTMLElement[]) => SynOptGroup[];
/**
 * Normalize a string by removing accents and converting to lowercase
 * @param str The string to normalize
 * @returns The normalized string
 */
export declare const normalizeString: (str: string) => string;
/**
 * Creates a `SynOption` element from a given `TemplateResult`.
 * We assume that the given `TemplateResult` is a <syn-option>.
 *
 * @param template - The `TemplateResult` to be rendered into a `SynOption`.
 * @returns The created SynOption element
 */
export declare const createElementFromTemplateResult: (template: TemplateResult) => HTMLElement;
/**
 * This function takes an input of type `TemplateResult`, `string`, or `HTMLElement`
 * and creates an SynOption from it.
 *
 * @param option - The option which can be of type `TemplateResult`, `string` or `HTMLElement`.
 * @returns The created SynOption or undefined if the option was not a valid type.
 */
export declare const createOptionFromDifferentTypes: (option: TemplateResult | string | HTMLElement) => SynOption | undefined;
