import { SkeletonOptions } from './skeleton.types'; /** * Headless skeleton controller. Orchestrates the loading→content swap on * existing markup by toggling `[hidden]` on the placeholder/content and * reflecting state on the region; it never applies visual styles. * * The individual `[data-c42-skeleton]` shapes are usable standalone via CSS * (no controller needed) — each keeps its `data-variant` (text|circle|rect). * * Markup: * ```html *
*
* * *
* *
* ``` */ export declare class Skeleton { private readonly root; private readonly placeholder; private readonly content; private isLoading; private cleanups; constructor(root: HTMLElement, options?: SkeletonOptions); private render; private emit; /** Toggle the loading state. No-op if already in the requested state. */ setLoading(loading: boolean): void; get loading(): boolean; /** Subscribe to a DOM event on the root element. Returns an unsubscribe fn. */ on(event: string, handler: (event: E) => void): () => void; destroy(): void; }