import type { LitElement } from 'lit'; import { type AriaForwardingConfig, type AriaRefKey, type AriaRefMeta } from './aria-forwarding.types'; /** * Derives the full ARIA metadata from a config key using naming conventions. * * Convention: * - `labelledBy` → attr: `aria-labelledby`, prop: `ariaLabelledByElements` * - `activeDescendant` → attr: `aria-activedescendant`, prop: `ariaActiveDescendantElement` (singular) */ export declare function getAriaRefMeta(key: AriaRefKey): AriaRefMeta; type Constructor = new (...args: any[]) => T; /** * Class decorator that configures reactive ARIA element-reference forwarding * from the host web component to inner shadow DOM elements. * * Both `aria-*` and `gds-aria-*` attributes are observed. When either changes, * the space-separated IDs are resolved to elements via `getElementById` and * forwarded to the configured target element using the ARIAMixin element-reference * property (e.g., `ariaLabelledByElements`). * * The `aria*Elements` properties are also intercepted on the host, so programmatic * setting (e.g., `el.ariaLabelledByElements = [label]`) is forwarded as well. * * Config values are CSS selector strings resolved against the component's shadowRoot. * * @example * ```ts * @ariaForwarding({ * labelledBy: 'input', * describedBy: 'input', * activeDescendant: '[role="listbox"]', * }) * @gdsCustomElement('gds-input') * class GdsInput extends GdsFormControlElement { ... } * ``` */ export declare function ariaForwarding(config: AriaForwardingConfig): (constructor: T) => T; export {};