import { AvatarOptions, AvatarStatus } from './avatar.types';
/**
* Headless avatar controller. Tracks image loading and falls back to initials
* when no image is available, and reflects an optional presence status. It
* manages `data-state` and ARIA only; visual styling is left to CSS.
*
* Markup:
* ```html
*
*

*
*
*
* ```
*/
export declare class Avatar {
private readonly root;
private readonly image;
private readonly fallback;
private readonly statusEl;
private name;
private status;
private cleanups;
constructor(root: HTMLElement, options?: AvatarOptions);
private init;
private initials;
private setState;
private handleLoad;
private handleError;
private renderStatus;
/** Update the presence status. Pass `null` to clear it. */
setStatus(status: AvatarStatus | null): void;
/** Swap the image source and reset tracking to the loading state. */
setSrc(url: string): void;
get value(): AvatarStatus | null;
/** Subscribe to a DOM event on the root element. Returns an unsubscribe fn. */
on(event: string, handler: (event: E) => void): () => void;
destroy(): void;
}