import type { CSSProperties } from '../utils/css-engine'; import { type FluentRecipe, type VariantValue } from './recipe-engine'; /** * Base class for all Fluent Grow custom elements. * * Responsibilities: * - Attach a shadow root with focus delegation. * - Compute styles using the recipe engine whenever attributes change. * - Offer lifecycle hooks (render/setup/teardown) to derived classes. * - Provide helpers for mapping attributes to recipe variants. */ export declare abstract class FluentComponent = Record> extends HTMLElement { #private; /** Variant attributes that should be observed for changes. */ protected static variantAttributes: string[]; protected static getVariantAttributes(): string[]; /** Recipe definition applied to the host element. */ protected recipe?: FluentRecipe; /** Shadow root reference (exposed for tests/subclasses). */ protected shadowRootRef: ShadowRoot; static get observedAttributes(): string[]; constructor(); connectedCallback(): void; disconnectedCallback(): void; /** Attributes that should trigger a full re-render (DOM update). */ protected static renderAttributes: string[]; protected static getRenderAttributes(): string[]; attributeChangedCallback(name: string, oldValue: string, newValue: string): void; /** Derived classes must render their DOM structure. */ protected abstract render(): void; /** Optional hook for wiring event listeners. */ protected setupEventListeners(): void; /** Optional hook for removing event listeners. */ protected teardownEventListeners(): void; /** * Schedules a style recomputation on the next microtask, batching multiple * attribute updates in quick succession. */ protected queueStyleUpdate(): void; /** Computes host + selector styles based on the recipe definition. */ protected updateStyles(): void; /** Maps observed attributes to recipe variant values. */ protected getVariants(): Partial; /** Allows derived classes to target ::part selectors dynamically. */ protected setPartStyles(part: string, styles: CSSProperties): void; private syncShadowStyles; } //# sourceMappingURL=fluent-component.d.ts.map