import { LayerConfig } from "../types"; import { LayeredMaterial } from "../LayeredMaterial"; export declare class MaterialVariant extends LayeredMaterial { private _baseMaterial; private _overrides; private _isUpdating; constructor(baseMaterial: LayeredMaterial, overrides: Partial[]); /** * Set up listeners to automatically update when base material changes */ private setupBaseMaterialListeners; /** * Intercept base material modification methods to detect changes */ private interceptBaseMaterialMethods; /** * Start polling for changes in base material (fallback mechanism) */ private startUpdatePolling; /** * Generate a simple hash for a layer to detect changes */ private hashLayer; /** * Called when base material layers change */ private onBaseLayersChanged; /** * Static method to merge base layers with overrides */ static mergeLayersWithOverrides(baseLayers: LayerConfig[], overrides: Partial[]): LayerConfig[]; /** * Update the overrides for this variant */ setOverrides(overrides: Partial[]): void; /** * Update a specific override */ updateOverride(layerIndex: number, override: Partial): void; /** * Get current overrides */ getOverrides(): Partial[]; /** * Get the base material */ getBaseMaterial(): LayeredMaterial; /** * Create a deep clone of this variant */ cloneX(): MaterialVariant; /** * Dispose and clean up listeners */ dispose(): void; } export declare class ObservableLayeredMaterial extends LayeredMaterial { private _listeners; constructor(options?: any); /** * Add change listener */ addChangeListener(listener: () => void): void; /** * Remove change listener */ removeChangeListener(listener: () => void): void; /** * Notify all listeners of changes */ protected notifyChange(): void; /** * Override layer modification methods to notify listeners */ addLayer(layerConfig: LayerConfig): void; removeLayer(index: number): void; updateLayer(index: number, layerConfig: Partial): void; } export declare class ObservableMaterialVariant extends LayeredMaterial { private _baseMaterial; private _overrides; private _changeListener; constructor(baseMaterial: ObservableLayeredMaterial, overrides: Partial[]); private onBaseLayersChanged; dispose(): void; setOverrides(overrides: Partial[]): void; getOverrides(): Partial[]; getBaseMaterial(): ObservableLayeredMaterial; } //# sourceMappingURL=MaterialVariant.d.ts.map