import type { LayerDef } from "@expofp/renderer";
import type { RendererService } from "../../renderer";
/**
 * Manages scene layer resolution, caching, dirty-tracking, and flush.
 *
 * Layers are resolved by name from `scene.rootLayer.children` and cached.
 * `touchLayer` marks a layer as dirty; `flush` commits all dirty layers
 * to `RendererService` in a single update call.
 */
export interface LayerManager {
    /** Layers modified since the last {@link flush}. */
    readonly touchedLayers: Map<string, LayerDef>;
    /** Resolve a layer by name (cached). Throws if not found. */
    resolveLayer(name: string): LayerDef;
    /** Resolve a layer and mark it as dirty for the next {@link flush}. */
    touchLayer(name: string): LayerDef;
    /** Commit all dirty layers to `RendererService` and clear the dirty set. */
    flush(): void;
    /** Clear caches and dirty set. */
    destroy(): void;
}
/**
 * Create a {@link LayerManager} bound to the given `RendererService`.
 * Throws if `rendererService.scene` is null.
 */
export declare function createLayerManager(rendererService: RendererService): LayerManager;
//# sourceMappingURL=layerManager.d.ts.map