export type ManagedIconSource = HTMLImageElement | ImageBitmap | HTMLCanvasElement | OffscreenCanvas;
export interface ManagedIconOptions {
pixelRatio?: number;
/** Anchor in 0..1 relative to sprite size. Default [0.5, 0.5]. */
anchor?: readonly [number, number];
}
export interface PackedIcon {
name: string;
u0: number;
v0: number;
u1: number;
v1: number;
width: number;
height: number;
anchorX: number;
anchorY: number;
pixelRatio: number;
}
/**
* Packs registered icons into a single canvas/texture atlas.
* Rebuilds only on register/remove/clear — never on object moves.
*/
export declare class ObjectIconAtlas {
#private;
private readonly sources;
private packed;
private canvas;
private textureVersion;
private dirty;
get version(): number;
get size(): number;
has(name: string): boolean;
register(name: string, source: ManagedIconSource, options?: ManagedIconOptions): this;
remove(name: string): this;
clear(): this;
getPacked(name: string): PackedIcon | null;
getCanvas(): HTMLCanvasElement | OffscreenCanvas | null;
names(): string[];
}
//# sourceMappingURL=object-icon-atlas.d.ts.map