import { type Memo } from '@zeix/cause-effect'; type SplitByComma = S extends `${infer First},${infer Rest}` ? [TrimWhitespace, ...SplitByComma] : [TrimWhitespace]; type TrimWhitespace = S extends ` ${infer Rest}` ? TrimWhitespace : S extends `${infer Rest} ` ? TrimWhitespace : S; type ExtractRightmostSelector = S extends `${string} ${infer Rest}` ? ExtractRightmostSelector : S extends `${string}>${infer Rest}` ? ExtractRightmostSelector : S extends `${string}+${infer Rest}` ? ExtractRightmostSelector : S extends `${string}~${infer Rest}` ? ExtractRightmostSelector : S; type ExtractTagFromSimpleSelector = S extends `${infer T}.${string}` ? T : S extends `${infer T}#${string}` ? T : S extends `${infer T}[${string}` ? T extends `${string}:${string}` ? S extends `${infer U}:${string}` ? U : S : T : S extends `${infer T}:${string}` ? T : S; type ExtractTag = ExtractTagFromSimpleSelector>; type KnownTag = Lowercase> extends keyof HTMLElementTagNameMap | keyof SVGElementTagNameMap | keyof MathMLElementTagNameMap ? Lowercase> : never; type ElementFromSingleSelector = KnownTag extends never ? HTMLElement : KnownTag extends keyof HTMLElementTagNameMap ? HTMLElementTagNameMap[KnownTag] : KnownTag extends keyof SVGElementTagNameMap ? SVGElementTagNameMap[KnownTag] : KnownTag extends keyof MathMLElementTagNameMap ? MathMLElementTagNameMap[KnownTag] : HTMLElement; type ElementsFromSelectorArray = { [K in keyof Selectors]: Selectors[K] extends string ? ElementFromSingleSelector : never; }[number]; type ElementFromSelector = S extends `${string},${string}` ? ElementsFromSelectorArray> : ElementFromSingleSelector; type FirstElement = { (selector: S, required: string): ElementFromSelector; (selector: S): ElementFromSelector | undefined; (selector: string, required: string): E; (selector: string): E | undefined; }; type AllElements = { (selector: S, required?: string): Memo[]>; (selector: string, required?: string): Memo; }; type ElementQueries = { first: FirstElement; all: AllElements; }; /** * Extract attribute names from a CSS selector * Handles various attribute selector formats: .class, #id, [attr], [attr=value], [attr^=value], etc. * * @param {string} selector - CSS selector to parse * @returns {string[]} - Array of attribute names found in the selector */ declare const extractAttributes: (selector: string) => string[]; /** * Create a memo of elements matching a CSS selector. * The MutationObserver is lazily activated when an effect first reads * the memo, and disconnected when no effects are watching. * * @since 0.16.0 * @param {ParentNode} parent - The parent node to search within * @param {string} selector - The CSS selector to match elements * @returns {Memo[]>} Reactive memo of current matching elements */ declare function createElementsMemo(parent: ParentNode, selector: S): Memo[]>; declare function createElementsMemo(parent: ParentNode, selector: string): Memo; /** * Create `{ first, all }` query helpers and a dependency resolver for a component host. * * Queries are run against `host.shadowRoot` if present, otherwise against `host` itself. * Any undefined custom elements found during queries are collected as dependencies; * `resolveDependencies` waits for them to be defined before activating effects. * * @since 0.14.0 * @param {HTMLElement} host - The component host element * @returns {[ElementQueries, (callback: () => void) => void]} Query helpers and a dependency resolver */ declare const makeElementQueries: (host: HTMLElement) => [ElementQueries, (run: () => void) => void]; export { type AllElements, createElementsMemo, type ElementFromSelector, type ElementFromSingleSelector, type ElementQueries, type ElementsFromSelectorArray, type ExtractRightmostSelector, type ExtractTag, type ExtractTagFromSimpleSelector, extractAttributes, type FirstElement, type KnownTag, makeElementQueries, type SplitByComma, type TrimWhitespace, };