import { AvatarGroupOptions, AvatarGroupSpacing } from './avatar-group.types';
/**
* Headless avatar-group controller. Lays out a set of `[data-c42-avatar]`
* children as an overlapping stack and optionally collapses the overflow into
* a `[data-c42-avatar-overflow]` chip. It manages state, ARIA and `data-*`
* only; the overlap visuals live entirely in CSS, which reacts to
* `data-stacked` / `data-spacing`.
*
* Markup:
* ```html
*
* ```
*/
export declare class AvatarGroup {
private readonly root;
private readonly overflowEl;
private stacked;
private spacing;
private maxVisible;
private label;
private cleanups;
constructor(root: HTMLElement, options?: AvatarGroupOptions);
private init;
/** Direct-child avatars, in document order (excludes the overflow chip). */
private avatars;
private counts;
private render;
private emit;
/** Toggle the overlapping stack layout. */
setStacked(stacked: boolean): void;
/** Change the overlap distance preset. */
setSpacing(spacing: AvatarGroupSpacing): void;
/** Set the maximum visible avatars (`0` clears the limit). */
setMax(max: number): void;
/** Recompute visibility/overflow after avatars are added or removed. */
refresh(): void;
get total(): number;
/** Subscribe to a DOM event on the root element. Returns an unsubscribe fn. */
on(event: string, handler: (event: E) => void): () => void;
destroy(): void;
}