import type { ParseSelector } from 'typed-query-selector/parser.js';
type BaseElements = ParentNode | Iterable<ParentNode>;
/**
 * @param selectors      One or more CSS selectors separated by commas
 * @param [baseElement]  The element to look inside of
 * @return               The element found, if any
 */
declare function $<Selector extends string, Selected extends Element = ParseSelector<Selector, HTMLElement>>(selectors: Selector | readonly Selector[], baseElement?: ParentNode): Selected | undefined;
declare function $<Selected extends Element = HTMLElement>(selectors: string | readonly string[], baseElement?: ParentNode): Selected | undefined;
export declare class ElementNotFoundError extends Error {
    name: string;
}
/**
 * @param selectors      One or more CSS selectors separated by commas
 * @param [baseElement]  The element to look inside of
 * @return               The element found, or an error
 */
declare function expectElement<Selector extends string, Selected extends Element = ParseSelector<Selector, HTMLElement>>(selectors: Selector | readonly Selector[], baseElement?: ParentNode): Selected;
declare function expectElement<Selected extends Element = HTMLElement>(selectors: string | readonly string[], baseElement?: ParentNode): Selected;
/**
 * @param selectors      One or more CSS selectors separated by commas
 * @param [baseElement]  The element to look inside of
 * @return               The element found, if any
 */
declare function lastElement<Selector extends string, Selected extends Element = ParseSelector<Selector, HTMLElement>>(selectors: Selector | readonly Selector[], baseElement?: ParentNode): Selected | undefined;
declare function lastElement<Selected extends Element = HTMLElement>(selectors: string | readonly string[], baseElement?: ParentNode): Selected | undefined;
/**
 * @param selectors      One or more CSS selectors separated by commas
 * @param [baseElement]  The element to look inside of
 * @return               Whether it's been found
 */
declare function elementExists(selectors: string | readonly string[], baseElement?: ParentNode): boolean;
/**
 * @param selectors      One or more CSS selectors separated by commas
 * @param [baseElement]  The element to look inside of
 * @return               The number of elements found
 */
declare function countElements(selectors: string | readonly string[], baseElement?: ParentNode): number;
/**
 * @param selectors       One or more CSS selectors separated by commas
 * @param [baseElements]  The element or list of elements to look inside of
 * @return                An array of elements found
 */
declare function $$<Selector extends string, Selected extends Element = ParseSelector<Selector, HTMLElement>>(selectors: Selector | readonly Selector[], baseElements?: BaseElements): Selected[];
declare function $$<Selected extends Element = HTMLElement>(selectors: string | readonly string[], baseElements?: BaseElements): Selected[];
/**
 * @param selectors       One or more CSS selectors separated by commas
 * @param [baseElements]  The element or list of elements to look inside of
 * @return                An array of elements found
 */
declare function expectElements<Selector extends string, Selected extends Element = ParseSelector<Selector, HTMLElement>>(selectors: Selector | readonly Selector[], baseElements?: BaseElements): Selected[];
declare function expectElements<Selected extends Element = HTMLElement>(selectors: string | readonly string[], baseElements?: BaseElements): Selected[];
export { $, $$, lastElement, elementExists, expectElement, expectElements, countElements };
