import type { ThemeVariant } from '../types/theme.types'; import type { IconSet, VariantIconSets } from '../types/icon.types'; import type { IconRegistry } from './icon-registry'; import type { IconRenderer } from './icon-renderer'; /** * Keeps the icon registry in step with the active theme variant. * * The theme layer knows nothing about icons — `ThemeManager` calls an injected * handler on every variant change, and this class is what that handler drives. * Keeping the two apart means theming stays a pure CSS concern and the icon * layer stays independently testable. * * Internal: hosts reach this through `GridApi`, never directly. Building a * second controller over the same registry would let two owners fight over the * variant layer. */ export declare class IconThemeController { private readonly registry; private readonly renderer; private readonly containerEl; private readonly packs; /** Tracks the applied variant so a pack edit knows whether to repaint. */ private active; constructor(registry: IconRegistry, renderer: IconRenderer, containerEl: HTMLElement, hostPacks?: VariantIconSets); /** * Applies a variant's icon pack and repaints what is already on screen. * * Safe to call before the first render: the sweep simply matches nothing, and * the pack is already in place by the time the grid draws — so the initial * variant costs no repaint at all. */ onVariant(variant: ThemeVariant | 'none'): void; /** * Replaces one variant's pack at runtime. Repaints only when that variant is * the one currently applied — editing an inactive pack changes nothing on * screen until it is selected. */ setVariantIcons(variant: ThemeVariant, icons: IconSet | null): void; /** Re-renders every registry-drawn icon in the grid and its portaled overlays. */ repaint(): number; } //# sourceMappingURL=icon-theme-controller.d.ts.map