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 $optional<Selector extends string, Selected extends Element = ParseSelector<Selector, HTMLElement>>(selectors: Selector | readonly Selector[], baseElement?: ParentNode): Selected | undefined;
declare function $optional<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 $<Selector extends string, Selected extends Element = ParseSelector<Selector, HTMLElement>>(selectors: Selector | readonly Selector[], baseElement?: ParentNode): Selected;
declare function $<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 lastElementOptional<Selector extends string, Selected extends Element = ParseSelector<Selector, HTMLElement>>(selectors: Selector | readonly Selector[], baseElement?: ParentNode): Selected | undefined;
declare function lastElementOptional<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               void or throws an error
 */
declare function assertElementExists(selectors: string | readonly string[], baseElement?: ParentNode): void;
/**
 * @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 $$optional<Selector extends string, Selected extends Element = ParseSelector<Selector, HTMLElement>>(selectors: Selector | readonly Selector[], baseElements?: BaseElements): Selected[];
declare function $$optional<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 $$<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 baseElement The element to start searching from (text nodes are supported)
 * @return            The closest matching element (including self) found, if any
 */
declare function closestElementOptional<Selector extends string, Selected extends Element = ParseSelector<Selector, HTMLElement>>(selectors: Selector | readonly Selector[], baseElement?: Node): Selected | undefined;
declare function closestElementOptional<Selected extends Element = HTMLElement>(selectors: string | readonly string[], baseElement?: Node): Selected | undefined;
/**
 * @param selectors   One or more CSS selectors separated by commas
 * @param baseElement The element to start searching from (text nodes are supported)
 * @return            The closest matching element (including self) found, or an error
 */
declare function closestElement<Selector extends string, Selected extends Element = ParseSelector<Selector, HTMLElement>>(selectors: Selector | readonly Selector[], baseElement?: Node): Selected;
declare function closestElement<Selected extends Element = HTMLElement>(selectors: string | readonly string[], baseElement?: Node): Selected;
/** @deprecated Use `closestElement` instead. */
declare const $closest: typeof closestElement;
/** @deprecated Use `closestElementOptional` instead. */
declare const $closestOptional: typeof closestElementOptional;
/**
 * @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 lastElement<Selector extends string, Selected extends Element = ParseSelector<Selector, HTMLElement>>(selectors: Selector | readonly Selector[], baseElement?: ParentNode): Selected;
declare function lastElement<Selected extends Element = HTMLElement>(selectors: string | readonly string[], baseElement?: ParentNode): Selected;
export { $, $$, closestElement, lastElement, $optional, $$optional, closestElementOptional, lastElementOptional, elementExists, assertElementExists, countElements, $closest, $closestOptional, };
