/**
 * ARCHITECTURE: RenderControllerResolver
 *
 * Resolves a Minecraft render controller into concrete geometry IDs, texture paths,
 * and tint colors by evaluating Molang expressions against an entity context.
 *
 * Pipeline:
 *   IRenderController (from .render_controllers.json)
 *   + EntityTypeResourceDefinition (texture/geometry key maps)
 *   + IMolangContext (entity state: is_baby, variant, etc.)
 *   → IRenderResolvedState (concrete geometry ID, texture paths, tint)
 *
 * Reference resolution:
 *   "Texture.default" → look up "default" key in entity's textures map → "textures/entity/sheep/sheep"
 *   "Geometry.baby"   → look up "baby" key in entity's geometry map → "geometry.sheep.baby"
 *   "Array.geos[query.is_sheared]" → evaluate index, look up in render controller arrays
 *
 * Related files:
 * - MolangEvaluator.ts — expression evaluation engine
 * - IMolangContext.ts — entity state context
 * - IRenderControllerSet.ts — render controller data structures
 * - IRenderResolvedState.ts — output interface
 * - EntityTypeResourceDefinition.ts — entity texture/geometry key maps
 */
import { IRenderController } from "./IRenderControllerSet";
import IMolangContext from "./IMolangContext";
import IRenderResolvedState from "./IRenderResolvedState";
export default class RenderControllerResolver {
    private _evaluator;
    constructor();
    /**
     * Resolve a render controller to concrete geometry/texture/material values.
     *
     * @param rc The render controller data from the .render_controllers.json file
     * @param textureMap Entity's texture key map: {"default": "textures/entity/sheep/sheep", "baby": "..."}
     * @param geometryMap Entity's geometry key map: {"default": "geometry.sheep.v1.8", "sheared": "..."}
     * @param context Molang evaluation context (entity state)
     * @returns Resolved geometry ID, texture layers, and optional tint
     */
    resolve(rc: IRenderController, textureMap: {
        [key: string]: string | undefined;
    }, geometryMap: {
        [key: string]: string | undefined;
    }, context: IMolangContext): IRenderResolvedState;
    /**
     * Resolve a reference like "Texture.default" or "Geometry.baby" to the actual
     * path/ID using the entity's key maps.
     */
    private _resolveReference;
    /**
     * Build a flat Map<string, string[]> from the render controller's nested array definitions.
     * Converts: { textures: { "Array.skins": ["Texture.a", "Texture.b"] }, geometries: {...} }
     * To: Map { "Array.skins" → ["Texture.a", "Texture.b"], "Array.geos" → [...] }
     */
    private _buildArrayMap;
}
